Il provider VPN Mullvad, che sviluppa il browser web Mullvad Browser e fornisce infrastruttura per il servizio Mozilla VPN, ha presentato il progetto GotaTun con un'implementazione del protocollo VPN WireGuard, scritto in linguaggio Rust e funzionante nello spazio utente. Il codice del progetto è distribuito con licenza BSD. L'azienda Mullvad ha già utilizzato GotaTun nel client VPN per la piattaforma Android e l'anno prossimo intende migrare su di esso le applicazioni per desktop e iOS.
GotaTun è un fork dello strumento BoringTun, sviluppato da Cloudflare e utilizzato nell'applicazione WARP. GotaTun si distingue da BoringTun per la piena compatibilità con la piattaforma Android, le ottimizzazioni delle prestazioni e ulteriori funzionalità per la protezione della privacy.
In GotaTun è integrato il supporto per la tecnologia DAITA (Defense Against AI-guided Traffic Analysis) per proteggere dall'analisi del traffico criptato transitario effettuata utilizzando strumenti basati su sistemi di machine learning. DAITA normalizza la dimensione dei pacchetti inviati, mescola traffico di fondo casuale e distorce modelli di flussi di dati tipici. In GotaTun è implementata anche la modalità Multihop, che consente di accedere a VPN-server non direttamente, ma attraverso una serie di nodi di transito, il che, ad esempio, consente di organizzare il traffico su percorsi più ottimizzati.
Per migliorare le prestazioni, GotaTun utilizza il processamento multithread e adotta una strategia di gestione della memoria in modalità zero-copy, senza buffering intermedio, utilizzando solo il buffer inizialmente fornito.
In passato, nelle applicazioni dell'azienda Mullvad è stato utilizzato un fork dell'implementazione WireGuard in linguaggio Go — wireguard-go, esteso con il supporto DAITA e Multihop. Secondo statistiche di Google, l'85% di tutti i rapporti di chiusura anomala inviati dagli utenti del client Android Mullvad erano correlati al codice wireguard-go, pertanto l'azienda Mullvad ha deciso di sostituire l'implementazione di WireGuard con un'opzione più affidabile.
La realizzazione in linguaggio Rust è stata scelta in quanto l'applicazione Mullvad VPN è scritta in Rust, ad eccezione del codice wireguard-go, con cui l'interazione è stata organizzata attraverso un'interfaccia FFI (foreign function interface) complessa che utilizza blocchi unsafe. Nella versione del client Android di Mullvad pubblicata a fine novembre, la realizzazione di wireguard-go è stata sostituita da GotaTun, risolvendo problemi di affidabilità: rispetto alle versioni precedenti, la metrica che riflette il numero di chiusure anomale è cambiata dallo 0,40% allo 0,01%.
Fonte: opennet.ru
