VPN-provider Mullvad, die de webbrowser Mullvad Browser ontwikkelt en infrastructuur biedt voor de Mozilla VPN-service, heeft het GotaTun-project gepresenteerd. Dit project implementeert het VPN-protocol WireGuard, geschreven in Rust en werkend in de gebruikersruimte. De code van het project wordt verspreid onder de BSD-licentie. Mullvad heeft GotaTun al gebruikt in de VPN-client voor het Android-platform en is van plan het volgend jaar ook naar desktop- en iOS-apps over te zetten.
GotaTun is een fork van de BoringTun-toolkit, ontwikkeld door Cloudflare en gebruikt in de WARP-app. GotaTun verschilt van BoringTun door volledige ondersteuning voor het Android-platform, prestatie-optimalisaties en bijkomende privacybeschermingsmogelijkheden.
GotaTun heeft ondersteuning voor de DAITA-technologie (Defense Against AI-guided Traffic Analysis) geïntegreerd om bescherming te bieden tegen analyse van versleuteld transitverkeer door gebruik te maken van tools op basis van machine learning. DAITA normaliseert de grootte van verzonden pakketten, voegt willekeurig achtergrondverkeer toe en verstoort patronen van typische gegevensstromen. GotaTun biedt ook een Multihop-modus waarmee verbinding kan worden gemaakt met VPN-servers niet rechtstreeks, maar via een reeks transitnodes, wat bijvoorbeeld het mogelijk maakt om verkeer via optimalere routes te laten verlopen.
Om de prestaties te verbeteren, is GotaTun uitgerust met multi-threaded verwerking en maakt het gebruik van een zero-copy geheugensysteem zonder tussenbuffer, waarbij alleen de oorspronkelijk toegewezen buffer wordt gebruikt.
Eerder werd in de apps van Mullvad een fork van de WireGuard-implementatie in Go gebruikt—wireguard-go—die was uitgebreid met ondersteuning voor DAITA en Multihop. Volgens Google was 85% van alle door gebruikers verzonden crashrapporten over de Android-client van Mullvad gerelateerd aan de code van wireguard-go, waardoor Mullvad besloot de WireGuard-implementatie te vervangen door een betrouwbaardere optie.
De implementatie in de programmeertaal Rust werd gekozen omdat de Mullvad VPN-applicatie in Rust is geschreven, met uitzondering van de wireguard-go-code, waarmee werd gecommuniceerd via een complexere interface FFI (foreign function interface) die unsafe blokken gebruikt. In de eind november gepubliceerde versie van de Mullvad Android-client is de wireguard-go-implementatie vervangen door GotaTun, wat de betrouwbaarheid van de werking verbeterde — in vergelijking met eerdere versies is de metriek die het aantal onverwachte afsluitingen weergeeft veranderd van 0,40% naar 0,01%.
Bron: opennet.ru
