Jason A. Donenfeld, WireGuard VPN's author, introduced the WireGuardNT project, which develops a high-performance VPN port of WireGuard for the Windows kernel, compatible with Windows 7, 8, 8.1, and 10, and supports AMD64, x86, ARM64, and ARM architectures. The implementation code is distributed under the GPLv2 license. The new driver is already included in the WireGuard client for Windows, but it is currently marked as experimental and not enabled by default.
The port is based on the proven codebase of the main WireGuard implementation for the Linux kernel, which has been translated to use Windows kernel entities and the NDIS network stack. Compared to the previously available Windows implementation wireguard-go, which operated in user space and used the Wintun network interface, WireGuardNT offers a significant performance boost by eliminating context switching and copying of packet contents from the kernel to user space. Similar to implementations for Linux, OpenBSD, and FreeBSD, in WireGuardNT, all protocol processing logic operates directly at the network stack level.
Although specific optimizations have not yet been conducted, WireGuardNT has already achieved peak data transfer performance of 7.5Gbps in the existing testing environment with Ethernet. On real user systems with Wi-Fi, performance is noticeably lower but not significantly different from direct data transmission. For example, in a system with an Intel AC9560 wireless card, the bandwidth without WireGuard was 600Mbps, and with WireGuardNT, it remained at 600Mbps, while using wireguard-go/Wintun it was 95Mbps.
peamine VPN WireGuard põhineb kaasaegsetel krüpteerimismeetoditel, tagab väga kõrge jõudluse, on lihtne kasutada, on vaba keerukusest ja on end tõestanud mitmetes suurtes rakendustes, mis töötlevad suures mahus liiklust. Projekt on arenenud alates 2015. aastast, läbinud auditi ja ametliku valideerimise kasutatavatele krüpteerimismeetoditele. WireGuardis rakendatakse võtmete krüpteerimise kaudu marsruutimise kontseptsiooni, mis hõlmab iga võrgu liidese kinnise võtme sidumist ja avalike võtmete seondamise rakendamist.
Ühenduse loomise avatud võtmete vahetus toimub SSH-i sarnaselt. Võtmete kokkuleppimiseks ja ühenduse loomiseks ilma eraldi kasutaja ruumi deemonit käitata kasutatakse Noise Protocol Frameworki Noise_IK mehhanismi, mis sarnaneb SSH autoriseeritud võtmete haldamisega. Andmed edastatakse UDP-pakettidesse kapseldatuna. Toetatakse vahetust IP-aadressid VPN-serverid (roaming) katkestusteta ühenduse hoidmine automaatse kliendi seadistamisega.
Krüptimiseks kasutatakse voogkrüptereid ChaCha20 ja sõnumi autentimise algoritmi (MAC) Poly1305, mille on välja töötanud Daniel Bernstein, Tanja Lange ja Peter Schwabe. ChaCha20 ja Poly1305 on turundatud kui kiiremad ja turvalisemad analoogid AES-256-CTR ja HMAC, mille programmiline rakendus võimaldab saavutada fikseeritud täitmise aega ilma spetsiaalset riistvara tuge kasutamata. Ühise salajase võtme genereerimiseks kasutatakse elliptsete käivete Difii-Hellmani protokolli Curve25519 rakenduses, mis on samuti ettepaneku Daniel Bernsteinilt. Hashimise jaoks kasutatakse algoritmi BLAKE2s (RFC7693).
Allikas: opennet.ru
