Jason A. Donenfeld, o autor de WireGuard VPN, lanzou a primeira versión importante do software cliente WireGuard para Windows 1.0, así como os controladores WireGuardNT 1.0 cun porto VPN WireGuard para o kernel de Windows 10 e 11, compatible coas arquitecturas AMD64, x86 e ARM64. O código do compoñente do kernel de Windows ten licenza GPLv2 e o software cliente ten licenza MIT.
A portabilidade baséase na base de código da implementación principal de WireGuard para o kernel de Linux, que foi convertida para usar entidades do kernel de Windows e a pila de rede NDIS. En comparación coa implementación de wireguard-go, que se executa no espazo de usuario e usa a interface de rede Wintun, WireGuardNT ofrece melloras significativas no rendemento ao eliminar os cambios de contexto e copiar o contido dos paquetes do kernel ao espazo de usuario. De xeito similar ás implementacións para Linux, OpenBSD e FreeBSD, toda a lóxica de procesamento de protocolos en WireGuardNT execútase directamente no nivel da pila de rede.
A versión 1.0 marcouse como un fito, marcando a resolución dunha serie de problemas e o cumprimento das tarefas previstas, como: o uso da función NdisWdfGetAdapterContextFromAdapterHandle() en lugar do almacenamento menos seguro do estado do controlador no campo Reservado e o uso de desprazamentos non documentados; o seguimento correcto e rápido do tamaño da MTU (Unidade Máxima de Transmisión) mediante a interceptación de chamadas ao sistema; o uso do estándar C23 no código.
Como recordatorio, a VPN de WireGuard baséase en métodos de cifrado modernos, ofrece un rendemento excepcional, é doada de usar, non presenta complicacións e demostrou a súa eficacia en varios despregamentos a grande escala que xestionan grandes volumes de tráfico. O proxecto leva en desenvolvemento desde 2015 e foi sometido a unha auditoría e verificación formal dos seus métodos de cifrado. WireGuard utiliza un concepto de enrutamento de cifrado baseado en claves, que implica vincular unha clave privada a cada interface de rede e usar claves públicas para a vinculación de claves.
O intercambio de claves públicas para establecer unha conexión é similar a SSH. Para negociar claves e conectar sen executar un daemon separado no espazo do usuario, utilízase o mecanismo Noise_IK do Noise Protocol Framework, de xeito similar ao mantemento de authorized_keys en SSH. A transferencia de datos realízase mediante encapsulamento en paquetes UDP. Admítese a modificación. enderezos IP Servidores VPN (roaming) sen interrupción da conexión con reconfiguración automática do cliente.
O cifrado de fluxo ChaCha20 e o algoritmo de autenticación de mensaxes (MAC) Poly1305, desenvolvidos por Daniel J. Bernstein, Tanja Lange e Peter Schwabe, utilízanse para o cifrado. ChaCha20 e Poly1305 comercialízanse como alternativas máis rápidas e seguras a AES-256-CTR e HMAC, cuxa implementación de software permite a execución nun tempo fixo sen requirir soporte especial de hardware. A clave secreta compartida xérase mediante o protocolo Diffie-Hellman de curva elíptica na implementación Curve25519, tamén proposta por Daniel Bernstein. O algoritmo BLAKE2s (RFC7693) utilízase para o hash.
Fonte: opennet.ru
