Jason A. Donenfeld, autorul VPN-ului WireGuard, a lansat prima versiune semnificativă a software-ului client WireGuard pentru Windows 1.0, precum și driverele WireGuardNT 1.0 cu port. VPN WireGuard pentru nucleul Windows 10 și 11, care suportă arhitecturile AMD64, x86 și ARM64. Codul componentelor pentru nucleul Windows este distribuit sub licența GPLv2, iar software-ul client sub licența MIT.
Portul se bazează pe codul de bază al implementării WireGuard pentru nucleul Linux, care a fost adaptată pentru a utiliza entitățile nucleului Windows și stiva de rețea NDIS. Comparativ cu implementarea wireguard-go, care rulează în spațiul utilizatorului și utilizează interfața de rețea Wintun, WireGuardNT oferă o creștere semnificativă a performanței prin eliminarea operațiunilor de comutare a contextului și a copiilor de conținut ale pachetelor din nucleu în spațiul utilizatorului. Asemănător cu implementările pentru Linux, OpenBSD și FreeBSD, în WireGuardNT toată logica de procesare a protocolului funcționează direct la nivelul stivei de rețea.
Versiunea 1.0 este marcată ca un fel de prag, semnalând rezolvarea unei serii de probleme și îndeplinirea obiectivelor stabilite, cum ar fi: utilizarea funcției NdisWdfGetAdapterContextFromAdapterHandle() în locul stocării mai puțin sigure a stării driverului în câmpul Reserved și evitarea utilizării deplasărilor nedocumentate; urmărirea corectă și rapidă a dimensiunii MTU (Maximum Transmission Unit) prin interceptarea apelurilor de sistem; implementarea standardului C23 în cod.
Reamintim că VPN WireGuard este realizat pe baza metodelor moderne de criptare, asigurând o performanță foarte înaltă, fiind ușor de utilizat, lipsit de complicatii și s-a dovedit a fi eficient în implementări mari care procesează volume mari de trafic. Proiectul evoluează din 2015, a trecut printr-un audit și o verificare formală a metodelor de criptare utilizate. În WireGuard se folosește conceptul de rutare bazată pe chei de criptare, care presupune asocierea unui cheie privată cu fiecare interfață de rețea și aplicarea pentru legarea cheilor publice.
Schimbul de chei publice pentru stabilirea conexiunii se realizează similar cu SSH. Pentru negocierea cheilor și conectarea fără a lansa un daemon separat în spațiul utilizatorului, se aplică mecanismul Noise_IK din Noise Protocol Framework, similar cu menținerea authorized_keys în SSH. Transferul de date se face prin encapsularea în pachete UDP. Se suportă schimbarea adrese IP serverului VPN (roaming) fără întreruperea conexiunii cu reconfigurarea automată a clientului.
Pentru criptare se utilizează fluxul de criptare ChaCha20 și algoritmul de autentificare a mesajelor (MAC) Poly1305, dezvoltate de Daniel Bernstein, Tanja Lange și Peter Schwabe. ChaCha20 și Poly1305 sunt poziționate ca fiind alternative mai rapide și mai sigure la AES-256-CTR și HMAC, implementarea software-ului permițând obținerea unui timp de execuție fix fără a necesita suport hardware special. Protocolul Diffie-Hellman pe curbe eliptice este folosit pentru generarea cheii secrete comune, implementat prin Curve25519, de asemenea propus de Daniel Bernstein. Pentru hashare se folosește algoritmul BLAKE2s (RFC7693).
Sursa: opennet.ro
