VPN poskytovatel Mullvad, který vyvíjí webový prohlížeč Mullvad Browser a poskytuje infrastrukturu pro službu Mozilla VPN, představil projekt GotaTun realizující VPN protokol WireGuard, napsaný v jazyce Rust a fungující v uživatelském prostoru. Kód projektu je distribuován pod licencí BSD. Společnost Mullvad již využila GotaTun v VPN klientovi pro platformu Android a v příštím roce má v plánu přenést na něj aplikace pro desktop a iOS.
GotaTun je fork nástroje BoringTun, který vyvíjí společnost Cloudflare a používá se v aplikaci WARP. GotaTun se od BoringTun liší plnohodnotnou podporou platformy Android, optimalizacemi výkonu a dalšími možnostmi pro ochranu soukromí.
GotaTun integruje podporu technologie DAITA (Defense Against AI-guided Traffic Analysis) pro ochranu před analýzou šifrovaného tranzitního provozu, prováděnou pomocí nástrojů založených na strojovém učení. DAITA normalizuje velikost odesílaných paketů, přimíchává náhodný pozadí provoz a zkresluje vzorce typických datových toků. V GotaTun je také implementován režim Multihop, který umožňuje komunikaci se VPN-servery nepřímo, ale prostřednictvím série tranzitních uzlů, což například umožňuje organizovat provoz po optimálnějších trasách.
Pro zvýšení výkonu je v GotaTun implementováno vícerozměrné zpracování a používá se strategie práce s pamětí v režimu zero-copy, bez mezilehlého vyrovnávání, s využitím pouze původně poskytnutého vyrovnávacího prostoru.
Dříve byly v aplikacích společnosti Mullvad používány forky implementace WireGuard v jazyce Go — wireguard-go, rozšířený podporou DAITA a Multihop. Podle statistik Google bylo 85 % všech uživatelských zpráv o haváriích Android klienta Mullvad spojeno s kódem wireguard-go, proto se společnost Mullvad rozhodla nahradit implementaci WireGuard spolehlivější variantou.
Implementace v jazyce Rust byla zvolena, protože aplikace Mullvad VPN je napsána v jazyce Rust, kromě kódu wireguard-go, jehož interakce byla organizována prostřednictvím složitého rozhraní FFI (foreign function interface) využívajícího bloky unsafe. V listopadovém vydání Android kliento Mullvad byla implementace wireguard-go nahrazena GotaTun, což vyřešilo problémy s spolehlivostí — oproti předchozím verzím se metrika ukazující počet havarijních ukončení změnila z 0,40 % na 0,01 %.
Zdroj: opennet.ru
