Jason A. Donenfeld, VPN WireGuardi looja, tutvustas esimest olulist WireGuardi kliendirakenduse versiooni Windowsile 1.0, samuti WireGuardNT 1.0 draivereid. VPN WireGuard Windows 10 ja 11 kernile, mis toetab AMD64, x86 ja ARM64 arhitektuure. Kernikomponentide kood Windowsi jaoks on litsentseeritud GPLv2 all, samas kui kliendirakenduse kood on litsentseeritud MIT all.
Port põhineb WireGuardi tuum Linuxi peamise rakenduse koodibaasil, mis on kohandatud Windowsi kerniteenuste ja NDISi võrgu stacki kasutamiseks. Erinevalt wireguard-go rakendusest, mis töötab kasutaja ruumis ja kasutab Wintun võrgu liideset, pakub WireGuardNT oluliselt paremat jõudlust, kuna välistab konteksti vahetuse ja pakettide sisu kopeerimise kernelist kasutaja ruumi. Nagu Linuxi, OpenBSD ja FreeBSD rakendustes, töötab WireGuardNT-i kõik protokolli töötlemise loogika otse võrgu stacki tasemel.
Versioon 1.0 on tähistatud kui teatud piir, mis tähendas mitmete probleemide lahendamist ja seatud ülesannete täitmist, nagu: funktsiooni NdisWdfGetAdapterContextFromAdapterHandle() kasutamine vähem turvalise draiveri oleku salvestamise asemel Reserved väljal ja dokumenteerimata nihke kasutamine; MTU (Maximum Transmission Unit) suuruse korrektne ja operatiivne jälgimine süsteemikõnede püüdmise kaudu; standardi C23 rakendamine koodis.
Kohustame meeldetuletama, et VPN WireGuard on ellu kutsutud tänapäevaste krüptimise meetodite alusel, tagab väga kõrge jõudluse, on kasutajasõbralik, lihtne ja on tõestanud end suuremate juurutuste seas, mis töötlevad suurt liiklust. Projekt on arenenud alates 2015. aastast, läbinud auditi ja ametliku kinnitamise kasutatavate krüptimise meetodite osas. WireGuard kasutab krüptimisvõtmete põhimõtet, mis hõlmab iga võrgu liidese sidumist privaatsõidukiga ja avalike võtmete sidumise rakendamist.
Avauste võtmete vahetus seose loomiseks toimub SSH-i sarnasel viisil. Võtmete kooskõlastamiseks ja ühendamiseks ilma eraldi demonite käivitamiseta kasutab Noise_IK mehhanismi Noise Protocol Frameworkist, mis on sarnane SSH-s autoriseeritud võtmete haldamisega. Andmete edastamine toimub UDP-pakettidesse kapseldamise kaudu. Toetatakse vahetust IP-aadressid VPN-serverite (rändamine) vahetust ilma ühenduse katkestamiseta koos automaatse kliendi ümberseadistamisega.
Krüpteerimiseks kasutatakse voogkrüptimist ChaCha20 ja sõnumite autentimise algoritmi (MAC) Poly1305, mille on töötanud välja Daniel Bernstein, Tanja Lange ja Peter Schwabe. ChaCha20 ja Poly1305 positsioneeritakse kiiremate ja turvalisemate analoogidena AES-256-CTR ja HMAC'le, mille tarkvara rakendus võimaldab saavutada fikseeritud täidetavusaega ilma spetsiaalse riistvara toetuse kasutamiseta. Ühine saladusvõti genereeritakse elliptsete kõverate difi-Heilmani protokolli kaudu Curve25519 rakenduses, mille on samuti pakkunud Daniel Bernstein. Häälestamiseks kasutatakse BLAKE2s algoritmi (RFC7693).
Allikas: opennet.ru
