El proveedor de VPN Mullvad, que desarrolla el navegador web Mullvad Browser y proporciona la infraestructura para el servicio Mozilla VPN, ha presentado el proyecto GotaTun, que implementa el protocolo VPN WireGuard, escrito en el lenguaje Rust y que opera en espacio de usuario. El código del proyecto se distribuye bajo la licencia BSD. La compañía Mullvad ya ha incorporado GotaTun en el cliente VPN para la plataforma Android y el próximo año planea trasladar a él las aplicaciones para escritorios y iOS.
GotaTun es un fork de la herramienta BoringTun, desarrollada por Cloudflare y utilizada en la aplicación WARP. GotaTun se diferencia de BoringTun por tener un soporte completo para la plataforma Android, optimizaciones de rendimiento y características adicionales de protección de la privacidad.
GotaTun integra soporte para la tecnología DAITA (Defensa contra el Análisis de Tráfico Guiado por IA) para proteger contra el análisis del tráfico de tránsito cifrado, realizado utilizando herramientas basadas en sistemas de aprendizaje automático. DAITA normaliza el tamaño de los paquetes enviados, mezcla tráfico de fondo aleatorio y distorsiona los patrones de flujos de datos típicos. GotaTun también implementa un modo Multihop, que permite acceder a VPN-servidores no directamente, sino a través de una serie de nodos de tránsito, lo que, por ejemplo, permite dirigir el tráfico por rutas más óptimas.
Para mejorar el rendimiento, GotaTun ha implementado procesamiento multihilo y utiliza una estrategia de manejo de memoria en modo zero-copy, sin almacenamiento intermedio, utilizando solo el buffer proporcionado inicialmente.
Anteriormente, en las aplicaciones de la compañía Mullvad se utilizaba un fork de la implementación de WireGuard en lenguaje Go — wireguard-go, ampliado con el soporte de DAITA y Multihop. Según estadísticas de Google, el 85% de todos los informes de accidentes sobre la finalización del cliente Android de Mullvad estaban relacionados con el código de wireguard-go, por lo que la compañía Mullvad decidió reemplazar la implementación de WireGuard por una opción más confiable.
La implementación en el lenguaje Rust fue elegida porque la aplicación Mullvad VPN está escrita en Rust, excepto el código de wireguard-go, cuya interacción se organizó a través de una interfaz FFI (interfaz de funciones extranjeras) compleja y que usa bloques unsafe. En la versión del cliente Android de Mullvad publicada a finales de noviembre, la implementación de wireguard-go fue reemplazada por GotaTun, lo que solucionó problemas de confiabilidad en el funcionamiento: en comparación con versiones anteriores, la métrica que refleja el número de cierres inesperados cambió de 0.40% a 0.01%.
Fuente: opennet.ru
