Jason A. Donenfeld, l'autor de WireGuard VPN, ha publicat la primera versió important del programari client WireGuard per a Windows 1.0, així com els controladors WireGuardNT 1.0 amb un port VPN WireGuard per al nucli de Windows 10 i 11, compatible amb les arquitectures AMD64, x86 i ARM64. El codi del component del nucli de Windows té llicència GPLv2 i el programari client té llicència MIT.
El port es basa en la base de codi de la implementació principal de WireGuard per al nucli de Linux, que s'ha convertit per utilitzar entitats del nucli de Windows i la pila de xarxa NDIS. En comparació amb la implementació de wireguard-go, que s'executa a l'espai d'usuari i utilitza la interfície de xarxa Wintun, WireGuardNT ofereix millores significatives de rendiment eliminant els canvis de context i copiant el contingut dels paquets del nucli a l'espai d'usuari. De manera similar a les implementacions per a Linux, OpenBSD i FreeBSD, tota la lògica de processament de protocols a WireGuardNT s'executa directament a nivell de pila de xarxa.
La versió 1.0 es va marcar com una fita, marcant la resolució de diversos problemes i el compliment de les tasques previstes, com ara: l'ús de la funció NdisWdfGetAdapterContextFromAdapterHandle() en lloc de l'emmagatzematge menys segur de l'estat del controlador al camp Reservat i l'ús de desplaçaments no documentats; el seguiment correcte i ràpid de la mida MTU (Maximum Transmission Unit) mitjançant la intercepció de crides al sistema; l'ús de l'estàndard C23 al codi.
Us recordem que VPN WireGuard s'implementa sobre la base de mètodes de xifratge moderns, ofereix un rendiment molt alt, és fàcil d'utilitzar, no presenta complicacions i ha demostrat ser bo en diverses implementacions grans que processen grans volums de trànsit. El projecte es desenvolupa des del 2015 i s'ha sotmès a una auditoria i verificació formal dels mètodes d'encriptació utilitzats. WireGuard utilitza el concepte d'encaminament de xifratge basat en clau, que implica associar una clau privada amb cada interfície de xarxa i utilitzar claus públiques per a l'enllaç.
L'intercanvi de claus públiques per establir una connexió és similar a SSH. Per negociar claus i connectar-se sense executar un daemon separat a l'espai d'usuari, s'utilitza el mecanisme Noise_IK del Noise Protocol Framework, similar al manteniment d'authorized_keys a SSH. La transferència de dades es realitza mitjançant l'encapsulació en paquets UDP. Es permet el canvi. adreces IP Servidors VPN (roaming) sense interrupció de connexió amb reconfiguració automàtica del client.
El xifratge utilitza el xifratge de flux ChaCha20 i l'algorisme d'autenticació de missatges (MAC) Poly1305, desenvolupat per Daniel J. Bernstein, Tanja Lange i Peter Schwabe. ChaCha20 i Poly1305 es posicionen com a anàlegs més ràpids i segurs d'AES-256-CTR i HMAC, la implementació del programari dels quals permet aconseguir un temps d'execució fix sense l'ús de suport especial de maquinari. Per generar la clau secreta compartida, s'utilitza el protocol Elliptic Curve Diffie-Hellman a la implementació Curve25519, també proposada per Daniel Bernstein. L'algoritme BLAKE2s (RFC7693) s'utilitza per a l'hashing.
Font: opennet.ru
