WireGuard VPN pentru Windows și WireGuardNT 1.0 lansate

Jason A. Donenfeld, autorul cărții WireGuard VPN, a lansat prima versiune majoră a software-ului client WireGuard pentru Windows 1.0, precum și driverele WireGuardNT 1.0 cu un port... VPN WireGuard pentru kernelul Windows 10 și 11, care acceptă arhitecturi AMD64, x86 și ARM64. Codul componentei kernelului Windows este licențiat sub GPLv2, iar software-ul client este licențiat sub licența MIT.

Portarea se bazează pe baza de cod a implementării principale WireGuard pentru kernelul Linux, care a fost convertită pentru a utiliza entități ale kernelului 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ă îmbunătățiri semnificative ale performanței prin eliminarea comutatoarelor de context și copierea conținutului pachetelor din kernel în spațiul utilizatorului. Similar implementărilor pentru Linux, OpenBSD și FreeBSD, toată logica de procesare a protocoalelor din WireGuardNT rulează direct la nivelul stivei de rețea.

Versiunea 1.0 a fost marcată ca o piatră de hotar, marcând rezolvarea unui număr de probleme și îndeplinirea sarcinilor preconizate, cum ar fi: utilizarea funcției NdisWdfGetAdapterContextFromAdapterHandle() în locul stocării mai puțin sigure a stării driverului în câmpul Rezervat și utilizarea offset-urilor nedocumentate; urmărirea corectă și promptă a dimensiunii MTU (Maximum Transmission Unit) prin interceptarea apelurilor de sistem; utilizarea standardului C23 în cod.

Să vă reamintim că VPN WireGuard este implementat pe baza unor metode moderne de criptare, oferă performanțe foarte înalte, este ușor de utilizat, nu prezintă complicații și s-a dovedit bine într-o serie de implementări mari care procesează volume mari de trafic. Proiectul se dezvoltă din 2015 și a fost supus unui audit și verificare formală a metodelor de criptare utilizate. WireGuard folosește conceptul de rutare de criptare bazată pe chei, care implică asocierea unei chei private cu fiecare interfață de rețea și utilizarea cheilor publice pentru legare.

Schimbul de chei publice pentru stabilirea unei conexiuni este similar cu SSH. Pentru negocierea cheilor și conectarea fără a rula un daemon separat în spațiul utilizatorului, se utilizează mecanismul Noise_IK din Noise Protocol Framework, similar cu întreținerea authorized_keys în SSH. Transferul de date se efectuează prin încapsulare în pachete UDP. Modificarea este acceptată. adrese IP Servere VPN (roaming) fără întrerupere a conexiunii cu reconfigurare automată a clientului.

Criptarea folosește codul de flux ChaCha20 și algoritmul de autentificare a mesajelor (MAC) Poly1305, dezvoltat de Daniel J. Bernstein, Tanja Lange și Peter Schwabe. ChaCha20 și Poly1305 sunt poziționate ca analoge mai rapide și mai sigure ale AES-256-CTR și HMAC, a căror implementare software permite obținerea unui timp fix de execuție fără utilizarea suportului hardware special. Pentru a genera cheia secretă partajată, protocolul Elliptic Curve Diffie-Hellman este utilizat în implementarea Curve25519, propusă și de Daniel Bernstein. Algoritmul BLAKE2s (RFC7693) este utilizat pentru hashing.

Sursa: opennet.ru