A WireGuard VPN implementation for the Windows kernel has been introduced.

Jason A. Donenfeld, the author of VPN WireGuard, has introduced the WireGuardNT project, which develops a high-performance WireGuard VPN port for the Windows kernel, compatible with Windows 7, 8, 8.1, and 10, supporting 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 is currently marked as experimental and not enabled by default.

The port is based on the verified codebase of the main WireGuard implementation for the Linux kernel, which has been adapted to use Windows kernel entities and the NDIS network stack. Compared to the previously available Windows implementation wireguard-go, which operates in user space and utilizes the Wintun network interface, WireGuardNT offers a significant performance improvement by eliminating context-switching operations and copying 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 performed, WireGuardNT has already achieved peak data transfer performance of 7.5Gbps in the existing test environment with Ethernet. On real user systems with Wi-Fi, the performance is noticeably lower but not much different from direct data transfer. For example, on a system with an Intel AC9560 wireless card, the throughput without WireGuard was 600Mbps and remained at 600Mbps with WireGuardNT, while using wireguard-go/Wintun it was only 95Mbps.

Recall that VPN WireGuard is implemented using modern encryption methods, provides very high performance, is easy to use, free of complications, and has proven itself well in several large deployments handling significant traffic volumes. The project has been evolving since 2015, has undergone an audit, and formal verification of the applied encryption methods. WireGuard uses the concept of key-based routing, which implies tying a private key to each network interface and using it to bind public keys.

The exchange of public keys to establish a connection is conducted similarly to SSH. To negotiate keys and connect without launching a separate user-space daemon, the Noise_IK mechanism from the Noise Protocol Framework is applied, akin to maintaining authorized_keys in SSH. Data transmission occurs through encapsulation in UDP packets. Support is provided for changing an IP address VPN servers (roaming) without interrupting the connection, with automatic client reconfiguration.

For encryption, the ChaCha20 stream cipher and the Poly1305 message authentication algorithm (MAC) are used, developed by Daniel J. Bernstein, Tanja Lange, and Peter Schwabe. ChaCha20 and Poly1305 are positioned as faster and safer alternatives to AES-256-CTR and HMAC, with a software implementation that ensures fixed execution time without the need for special hardware support. The Diffie-Hellman key exchange protocol on elliptic curves, specifically Curve25519, also proposed by Daniel Bernstein, is used for generating a shared secret key. The BLAKE2s hashing algorithm (RFC7693) is utilized.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster