Jason A. Donenfeld, autor de VPN WireGuard, presentó la primera versión significativa del software cliente WireGuard para Windows 1.0, así como los controladores WireGuardNT 1.0 con puerto. VPN WireGuard para el núcleo de Windows 10 y 11, que soporta arquitecturas AMD64, x86 y ARM64. El código de los componentes del núcleo de Windows se distribuye bajo la licencia GPLv2, mientras que el software cliente bajo la licencia MIT.
El puerto se basa en la base de código de la implementación principal de WireGuard para el núcleo de Linux, que ha sido adaptada para utilizar las entidades del núcleo de Windows y de la pila de red NDIS. En comparación con la implementación wireguard-go, que opera en espacio de usuario y utiliza la interfaz de red Wintun, WireGuardNT presenta un aumento significativo en el rendimiento al eliminar las operaciones de conmutación de contexto y la copia de contenido de paquetes del núcleo al espacio de usuario. Al igual que en las implementaciones para Linux, OpenBSD y FreeBSD, en WireGuardNT toda la lógica de procesamiento del protocolo funciona directamente a nivel de la pila de red.
La versión 1.0 se marca como un hito que resuelve una serie de problemas y cumple con las tareas establecidas, tales como: la utilización de la función NdisWdfGetAdapterContextFromAdapterHandle() en lugar de almacenar el estado del controlador en el campo Reserved, que es menos seguro; el seguimiento correcto y oportuno del tamaño MTU (Unidad Máxima de Transmisión) mediante la interceptación de llamadas al sistema; y la implementación del estándar C23 en el código.
Recordemos que VPN WireGuard se basa en métodos de encriptación modernos, ofrece un rendimiento muy alto, es fácil de usar, carece de complicaciones y ha demostrado ser eficaz en implementaciones importantes que manejan grandes volúmenes de tráfico. El proyecto ha estado en desarrollo desde 2015, ha sido auditado y formalmente verificado en los métodos de encriptación aplicados. WireGuard utiliza el concepto de enrutamiento por claves de encriptación, que implica la vinculación de una clave privada a cada interfaz de red y el uso de claves públicas para la conexión.
El intercambio de claves públicas para establecer conexiones se realiza de manera similar a SSH. Para la negociación de claves y la conexión sin iniciar un demonio separado en el espacio de usuario, se utiliza el mecanismo Noise_IK del Noise Protocol Framework, similar al mantenimiento de authorized_keys en SSH. La transmisión de datos se lleva a cabo mediante encapsulación en paquetes UDP. Se admite el cambio IP Servidores VPN (roaming) sin interrupción de conexión con reconfiguración automática del cliente.
Para el cifrado se utiliza el cifrador de flujo ChaCha20 y el algoritmo de autenticación de mensajes (MAC) Poly1305, desarrollados por Daniel Bernstein, Tanja Lange y Peter Schwabe. ChaCha20 y Poly1305 se presentan como alternativas más rápidas y seguras a AES-256-CTR y HMAC, cuya implementación de software permite alcanzar un tiempo de ejecución constante sin necesidad de soporte de hardware especializado. Para generar la clave secreta compartida se aplica el protocolo de Diffie-Hellman en curvas elípticas con la implementación Curve25519, también propuesta por Daniel Bernstein. Para el hash se utiliza el algoritmo BLAKE2s (RFC7693).
Fuente: opennet.ru
