WireGuard VPN për Windows dhe WireGuardNT 1.0 u publikua

Jason A. Donenfeld, autori i WireGuard VPN, ka publikuar versionin e parë të madh të softuerit klient WireGuard për Windows 1.0, si dhe drajverët WireGuardNT 1.0 me një portë VPN WireGuard për kernelin e Windows 10 dhe 11, duke mbështetur arkitekturat AMD64, x86 dhe ARM64. Kodi i komponentëve të kernelit të Windows është i licencuar sipas GPLv2, dhe softueri i klientit është i licencuar sipas licencës MIT.

Porta bazohet në bazën e kodit të implementimit kryesor WireGuard për kernelin Linux, i cili është konvertuar për të përdorur entitetet e kernelit Windows dhe stikun e rrjetit NDIS. Krahasuar me implementimin wireguard-go, i cili funksionon në hapësirën e përdoruesit dhe përdor ndërfaqen e rrjetit Wintun, WireGuardNT ofron përmirësime të konsiderueshme të performancës duke eliminuar ndërruesit e kontekstit dhe duke kopjuar përmbajtjen e paketave nga kerneli në hapësirën e përdoruesit. Ngjashëm me implementimet për Linux, OpenBSD dhe FreeBSD, e gjithë logjika e përpunimit të protokollit në WireGuardNT funksionon direkt në nivelin e stikut të rrjetit.

Versioni 1.0 u shënua si një moment historik, duke shënuar zgjidhjen e një numri problemesh dhe përmbushjen e detyrave të synuara, të tilla si: përdorimi i funksionit NdisWdfGetAdapterContextFromAdapterHandle() në vend të ruajtjes më pak të sigurt të gjendjes së drajverit në fushën Reserved dhe përdorimit të zhvendosjeve të padokumentuara; gjurmimi i saktë dhe i shpejtë i madhësisë së MTU-së (Njësia Maksimale e Transmetimit) përmes përgjimit të thirrjeve të sistemit; përdorimi i standardit C23 në kod.

Si kujtesë, WireGuard VPN bazohet në metoda moderne të enkriptimit, ofron performancë të jashtëzakonshme, është i lehtë për t’u përdorur, nuk ka ndërlikime dhe e ka provuar veten në një numër implementimesh në shkallë të gjerë që trajtojnë vëllime të mëdha trafiku. Projekti ka qenë në zhvillim që nga viti 2015 dhe i është nënshtruar një auditimi dhe verifikimi formal të metodave të tij të enkriptimit. WireGuard përdor një koncept të rrugëzimit të enkriptimit të bazuar në çelës, i cili përfshin lidhjen e një çelësi privat në secilën ndërfaqe rrjeti dhe përdorimin e çelësave publikë për lidhjen e çelësave.

Shkëmbimi i çelësave publikë për të krijuar një lidhje është i ngjashëm me SSH. Për të negociuar çelësat dhe për t'u lidhur pa ekzekutuar një daemon të veçantë në hapësirën e përdoruesit, përdoret mekanizmi Noise_IK nga Noise Protocol Framework, i ngjashëm me mirëmbajtjen e authorized_keys në SSH. Transferimi i të dhënave kryhet nëpërmjet enkapsulimit në paketa UDP. Ndryshimi mbështetet. adresat IP Servera VPN (roaming) pa ndërprerje të lidhjes me rikonfigurim automatik të klientit.

Shifra e rrjedhës ChaCha20 dhe algoritmi i vërtetimit të mesazheve Poly1305 (MAC), i zhvilluar nga Daniel J. Bernstein, Tanja Lange dhe Peter Schwabe, përdoren për enkriptim. ChaCha20 dhe Poly1305 tregtohen si alternativa më të shpejta dhe më të sigurta ndaj AES-256-CTR dhe HMAC, zbatimi i softuerit të të cilave lejon ekzekutimin në kohë të caktuar pa kërkuar mbështetje të veçantë harduerike. Çelësi sekret i përbashkët gjenerohet duke përdorur protokollin Diffie-Hellman të kurbës eliptike në zbatimin Curve25519, i propozuar gjithashtu nga Daniel Bernstein. Algoritmi BLAKE2s (RFC7693) përdoret për heshimin.

Burimi: opennet.ru