Tech News

Proton VPN Is Migrating to Rust With a New WireGuard Core

Proton has unveiled a new software foundation written in Rust that is set to replace wireguard-go in its VPN apps. The stated goal: a single WireGuard implementation shared across Windows, Android, iOS and Linux, and above all, more freedom to deal with censorship. Here's what we know.

Why is Proton abandoning wireguard-go?

Until now, Proton VPN apps relied on wireguard-go, the official WireGuard implementation written in Go. Proton does not have anything negative to say about it: the Swiss vendor describes it as a reliable, lightweight implementation that is easier to audit than traditional VPN protocols. The problem lies elsewhere.

According to Antonio Cesarano, Product Lead at Proton VPN, wireguard-go integrates poorly with the languages used natively on each platform, namely Kotlin on Android and Swift on iOS. This would have several consequences and drawbacks for Proton's teams:

  • Slower development across all platforms
  • More complicated debugging, with behaviors that are difficult to reproduce
  • Stability issues

In other words, Proton ended up maintaining VPN behaviors that were noticeably different from one system to another. This new development makes me think Proton's teams want to standardize software components. In a previous article, I discussed the shared SDK approach chosen for the future native Proton Drive client on Linux, namely a common component that platform-specific apps build upon.

In the same article, Proton confirms another move: the end of OpenVPN support in its official apps in order to focus on WireGuard. This is worth noting for users who were still relying on that protocol.

libpvpnclient, ProTUN and LocalAgent: what's in the new foundation

For its new software foundation, Proton is relying on libpvpnclient, a standalone WireGuard implementation written in Rust. Proton says it forked code from Cloudflare's open source project BoringTun, but claims ownership of the VPN architecture built around it. Where wireguard-go is a WireGuard client, libpvpnclient is presented as an operating system-independent foundation that can be reused as-is on desktop and mobile.

ProTUN, the project's internal codename, refers to the adaptation layer that wraps this Rust library for each supported system. It works together with LocalAgent, Proton's internal control channel that handles certificate-based authentication, also rewritten in Rust. It is worth noting that Proton is betting on Rust for all components of the VPN layer.

This new technical base is already available in beta. By selecting "Proton Protocols" in the app settings, you can test it! It is currently available on the following platforms: Windows, Android, iOS and iPadOS (which also adds support for the advanced kill switch), and the Linux graphical app.

You may have noticed one omission in that list: macOS is not included. Proton gives no timeline for this, nor for when wireguard-go will actually disappear from stable releases. That probably won't happen anytime soon, while the new Proton layer is still being stabilized.

muon: connecting when the API itself is blocked

In addition to "Proton Protocols," the Swiss vendor is working on another project codenamed muon. Before the encrypted VPN tunnel can be established, the Proton app must contact Proton's API to retrieve configuration and connection details. This first request is not protected. As a result, it is less well protected against censorship, especially if DNS filtering is involved, which can prevent you from connecting to the VPN.

muon is presented as a network gateway, also written in Rust, designed to handle these very first requests and securely route them to Proton's API. In the long term, this feature is meant to replace the alternative routing mechanism currently used by the vendor. Proton also says it wants to deploy muon across all of its apps, not just the VPN. In countries where access is censored, Proton claims the ISP will not even see that the user is connecting to Proton's APIs.

With this change, Proton should take another step forward in resisting censorship. It is also a way to prepare for post-quantum cryptography. By now, as you can see, Proton is developing its own components, so transparency and security will naturally be under scrutiny, including source code publication and security audits.

Here are links to two official Proton articles on the subject:

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.