Inilabas na ang WireGuard VPN para sa Windows at WireGuardNT 1.0

Inilabas ni Jason A. Donenfeld, ang may-akda ng WireGuard VPN, ang unang pangunahing paglabas ng WireGuard client software para sa Windows 1.0, pati na rin ang mga WireGuardNT 1.0 driver na may port VPN WireGuard para sa Windows 10 at 11 kernel, na sumusuporta sa mga arkitektura ng AMD64, x86, at ARM64. Ang code ng component ng Windows kernel ay lisensyado sa ilalim ng GPLv2, at ang client software ay lisensyado sa ilalim ng lisensya ng MIT.

Ang port ay batay sa codebase ng pangunahing implementasyon ng WireGuard para sa Linux kernel, na na-convert upang gumamit ng mga entity ng Windows kernel at ng NDIS network stack. Kung ikukumpara sa implementasyon ng wireguard-go, na tumatakbo sa user space at gumagamit ng Wintun network interface, ang WireGuardNT ay nag-aalok ng mga makabuluhang pagpapabuti sa pagganap sa pamamagitan ng pag-aalis ng mga context switch at pagkopya ng mga nilalaman ng packet mula sa kernel patungo sa user space. Katulad ng mga implementasyon para sa Linux, OpenBSD, at FreeBSD, lahat ng protocol processing logic sa WireGuardNT ay direktang tumatakbo sa antas ng network stack.

Ang Bersyon 1.0 ay minarkahan bilang isang mahalagang hakbang, na nagmamarka sa paglutas ng ilang mga isyu at ang katuparan ng mga nilalayong gawain, tulad ng: ang paggamit ng function na NdisWdfGetAdapterContextFromAdapterHandle() sa halip na ang hindi gaanong ligtas na pag-iimbak ng estado ng driver sa Reserved field at ang paggamit ng mga hindi dokumentadong offset; tama at mabilis na pagsubaybay sa laki ng MTU (Maximum Transmission Unit) sa pamamagitan ng interception ng mga system call; ang paggamit ng pamantayang C23 sa code.

Bilang paalala, ang WireGuard VPN ay batay sa mga modernong pamamaraan ng pag-encrypt, naghahatid ng pambihirang pagganap, madaling gamitin, walang komplikasyon, at napatunayan na ang sarili sa maraming malawakang pag-deploy na humahawak sa malalaking volume ng trapiko. Ang proyekto ay isinasagawa na mula pa noong 2015 at sumailalim sa isang audit at pormal na beripikasyon ng mga pamamaraan ng pag-encrypt nito. Gumagamit ang WireGuard ng konsepto ng key-based encryption routing, na kinabibilangan ng pag-bind ng isang pribadong key sa bawat interface ng network at paggamit ng mga pampublikong key para sa pag-bind ng key.

Ang pagpapalitan ng mga pampublikong susi upang magtatag ng koneksyon ay katulad ng sa SSH. Upang makipag-ayos ng mga susi at kumonekta nang hindi nagpapatakbo ng hiwalay na daemon sa espasyo ng gumagamit, ginagamit ang mekanismong Noise_IK mula sa Noise Protocol Framework, katulad ng pagpapanatili ng mga authorized_key sa SSH. Ang paglilipat ng data ay isinasagawa sa pamamagitan ng encapsulation sa mga UDP packet. Sinusuportahan ang pagpapalit. mga IP address Mga VPN server (roaming) nang walang pagkaantala sa koneksyon na may awtomatikong muling pag-configure ng kliyente.

Ang ChaCha20 stream cipher at ang Poly1305 message authentication algorithm (MAC), na binuo nina Daniel J. Bernstein, Tanja Lange, at Peter Schwabe, ay ginagamit para sa encryption. Ang ChaCha20 at Poly1305 ay ibinebenta bilang mas mabilis at mas ligtas na alternatibo sa AES-256-CTR at HMAC, na ang implementasyon ng software ay nagbibigay-daan para sa fixed-time na pagpapatupad nang hindi nangangailangan ng espesyal na suporta sa hardware. Ang shared secret key ay nabubuo gamit ang elliptic curve na Diffie-Hellman protocol sa implementasyon ng Curve25519, na iminungkahi rin ni Daniel Bernstein. Ang BLAKE2s algorithm (RFC7693) ay ginagamit para sa hashing.

Pinagmulan: opennet.ru