Providerul VPN Mullvad, care dezvoltă browserul web Mullvad Browser și furnizează infrastructura pentru serviciul Mozilla VPN, a prezentat proiectul GotaTun, care implementează protocolul VPN WireGuard, scris în limbajul Rust și funcționând în spațiul utilizatorului. Codul proiectului este distribuit sub licența BSD. Compania Mullvad a folosit deja GotaTun în clientul VPN pentru platforma Android și intenționează să îl migreze anul viitor pentru aplicațiile desktop și iOS.
GotaTun este un fork al instrumentarului BoringTun, dezvoltat de compania Cloudflare și utilizat în aplicația WARP. GotaTun se deosebește de BoringTun prin suportul complet pentru platforma Android, optimizările de performanță și funcționalitățile suplimentare pentru protejarea confidențialității.
În GotaTun este integrat suportul pentru tehnologia DAITA (Defense Against AI-guided Traffic Analysis) pentru a proteja împotriva analizei traficului de transit criptat, efectuată cu ajutorul instrumentelor bazate pe sisteme de învățare automată. DAITA normalizează dimensiunea pachetelor trimise, amestecă trafic de fundal aleatoriu și distorsionează modele tipice ale fluxurilor de date. De asemenea, GotaTun implementează un mod Multihop, care permite accesarea VPN-serverelor nu direct, ci printr-o serie de noduri de tranzit, ceea ce, de exemplu, permite organizarea trecerii traficului pe rute mai optime.
Pentru a crește performanța, GotaTun a implementat procesarea pe mai multe fire și a folosit o strategie de gestionare a memoriei în modul zero-copy, fără buffering intermediar, folosind doar bufferul inițial furnizat.
Anterior, în aplicațiile companiei Mullvad a fost utilizat un fork al implementării WireGuard în limbajul Go — wireguard-go, extins cu suport DAITA și Multihop. Conform statisticilor Google, 85% din toate rapoartele de crăpare trimise de utilizatori pentru clientul Android Mullvad erau legate de codul wireguard-go, motiv pentru care compania Mullvad a decis să înlocuiească implementarea WireGuard cu o variantă mai fiabilă.
Implementarea în limbajul Rust a fost aleasă deoarece aplicația Mullvad VPN este scrisă în Rust, cu excepția codului wireguard-go, interacțiunea cu care a fost realizată printr-o interfață FFI (foreign function interface) complexă și care utilizează blocuri unsafe. În ediția publicată la sfârșitul lunii noiembrie a clientului Android Mullvad, implementarea wireguard-go a fost înlocuită cu GotaTun, ceea ce a rezolvat problemele legate de fiabilitate — comparativ cu versiunile anterioare, metrica care reflectă numărul de închideri neașteptate a variat de la 0,40% la 0,01%.
Sursa: opennet.ro
