Компания Mullvad представила GotaTun, реализацию VPN WireGuard на языке Rust

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 интегрирована поддержка технологии DAITA (Defense Against AI-guided Traffic Analysis) для защиты от анализа шифрованного транзитного трафика, проводимого с использованием инструментов на базе систем машинного обучения. DAITA нормализует размер отправляемых пакетов, примешивает случайный фоновый трафик и искажает шаблоны типовых потоков данных. В GotaTun также реализован Multihop-режим, позволяющий обращаться к VPN-серверам не напрямую, а через серию транзитных узлов, что, например, позволяет организовать прохождение трафика по более оптимальным маршрутам.

Для повышения производительности в GotaTun реализована многопоточная обработка и задействована стратегия
работы с памятью в режиме zero-copy, без промежуточной буферизации, используя только изначально предоставленный буфер.

Раннее в приложениях компании 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%.

Источник: http://www.opennet.ru/opennews/art.shtml?num=64457