Lanzamiento de WireGuard VPN para Windows y WireGuardNT 1.0

Jason A. Donenfeld, autor de WireGuard VPN, ha lanzado la primera versión importante del software cliente WireGuard para Windows 1.0, así como los controladores WireGuardNT 1.0 con un puerto VPN WireGuard para el kernel de Windows 10 y 11, compatible con las arquitecturas AMD64, x86 y ARM64. El código del componente del kernel de Windows está licenciado bajo la GPLv2, y el software cliente bajo la licencia MIT.

Esta adaptación se basa en el código fuente de la implementación principal de WireGuard para el kernel de Linux, que se ha convertido para usar entidades del kernel de Windows y la pila de red NDIS. En comparación con la implementación wireguard-go, que se ejecuta en el espacio de usuario y utiliza la interfaz de red Wintun, WireGuardNT ofrece mejoras de rendimiento significativas al eliminar los cambios de contexto y copiar el contenido de los paquetes del kernel al espacio de usuario. Al igual que en las implementaciones para Linux, OpenBSD y FreeBSD, toda la lógica de procesamiento de protocolos en WireGuardNT se ejecuta directamente en el nivel de la pila de red.

La versión 1.0 se marcó como un hito, ya que supuso la resolución de varios problemas y el cumplimiento de las tareas previstas, tales como: el uso de la función NdisWdfGetAdapterContextFromAdapterHandle() en lugar del almacenamiento menos seguro del estado del controlador en el campo Reserved y el uso de desplazamientos no documentados; el seguimiento correcto y rápido del tamaño de la MTU (Unidad de Transmisión Máxima) mediante la interceptación de llamadas al sistema; y el uso del estándar C23 en el código.

Como recordatorio, WireGuard VPN se basa en métodos de cifrado modernos, ofrece un rendimiento excepcional, es fácil de usar, no presenta complicaciones y ha demostrado su eficacia en numerosas implementaciones a gran escala que gestionan grandes volúmenes de tráfico. El proyecto lleva en desarrollo desde 2015 y ha sido sometido a una auditoría y verificación formal de sus métodos de cifrado. WireGuard utiliza un concepto de enrutamiento de cifrado basado en claves, que consiste en vincular una clave privada a cada interfaz de red y utilizar claves públicas para la vinculación de claves.

El intercambio de claves públicas para establecer una conexión es similar al de SSH. Para negociar claves y conectarse sin ejecutar un daemon independiente en el espacio de usuario, se utiliza el mecanismo Noise_IK del Noise Protocol Framework, similar al mantenimiento de claves autorizadas en SSH. La transferencia de datos se realiza mediante encapsulación en paquetes UDP. Se admiten cambios. Dirección IP Servidores VPN (en itinerancia) sin interrupción de la conexión y con reconfiguración automática del cliente.

Para el cifrado se utilizan el cifrador de flujo ChaCha20 y el algoritmo de autenticación de mensajes (MAC) Poly1305, desarrollados por Daniel J. Bernstein, Tanja Lange y Peter Schwabe. ChaCha20 y Poly1305 se comercializan como alternativas más rápidas y seguras a AES-256-CTR y HMAC, cuya implementación de software permite una ejecución en tiempo fijo sin necesidad de hardware específico. La clave secreta compartida se genera mediante el protocolo Diffie-Hellman de curva elíptica en la implementación Curve25519, también propuesta por Daniel Bernstein. Para el hash se utiliza el algoritmo BLAKE2s (RFC7693).

Fuente: opennet.ru