VPN-провайдер Mullvad, развивающий web-браузер Mullvad Browser и предоставляющий инфраструктуру для сервиса Mozilla VPN, представил проект GotaTun с реализацией VPN-протокола WireGuard, написанной на языке Rust и работающей в пространстве пользователя. Код проекта распространяется под лицензией BSD. Компания Mullvad уже задействовала GotaTun в VPN-клиенте для платформы Android и в следующем году намерена перевести на него приложения для десктопов и iOS.
GotaTun является форком инструментария BoringTun, развиваемого компанией Cloudflare и применяемого в приложении WARP. GotaTun отличается от BoringTun наличием полноценной поддержки платформы Android, оптимизациями производительности и дополнительными возможностями для защиты конфиденциальности.
GotaTun integriert die Unterstützung für die DAITA-Technologie (Defense Against AI-guided Traffic Analysis), um vor der Analyse verschlüsselten Transitverkehrs mithilfe von maschinellem Lernen zu schützen. DAITA normalisiert die Größe gesendeter Pakete, fügt zufälligen Hintergrundverkehr hinzu und verzerrt typische Datenflussmuster. GotaTun implementiert außerdem einen Multihop-Modus, der den Zugriff auf … ermöglicht. VPN-Server nicht direkt, sondern über eine Reihe von Transitknoten, was beispielsweise die Organisation des Datenverkehrs entlang optimalerer Routen ermöglicht.
Zur Leistungssteigerung implementiert GotaTun Multithread-Verarbeitung und verwendet eine Zero-Copy-Speicherverwaltungsstrategie ohne Zwischenpufferung, wobei nur der anfänglich bereitgestellte Puffer genutzt wird.
Раннее в приложениях компании Mullvad использовался форк реализации WireGuard на языке Go — wireguard-go, расширенный поддержкой DAITA и Multihop. По статистике Google 85% от всех отправленных пользователями отчётов об аварийных завершениях Android-клиента Mullvad были связаны с кодом wireguard-go, поэтому компания Mullvad решила заменить реализацию WireGuard на более надёжный вариант.
Реализация на языке Rust была выбрана так как приложение Mullvad VPN написано на языке Rust, за исключением кода wireguard-go, взаимодействие с которым было организовано через усложнённый и использующий блоки unsafe интерфейс FFI (foreign function interface). В опубликованном в конце ноября выпуске Android-клиента Mullvad реализация wireguard-go была заменена на GotaTun, что решило проблемы с надёжностью работы — по сравнению с прошлыми версиями, метрика, отражающая число аварийных завершений, изменилась с 0.40% до 0.01%.
Source: opennet.ru
