Jason A. Donenfeld,《VPN》一书的作者 WireGuard并介绍了该项目 WireGuardNT,开发高性能VPN端口 WireGuard 对于核心 Windows兼容于 Windows 支持 Windows 7、8、8.1 和 10,以及 AMD64、x86、ARM64 和 ARM 架构。实现代码以 GPLv2 许可证发布。新驱动程序已包含在客户端中。 WireGuard 为 Windows但目前该功能被标记为实验性功能,默认情况下未启用。
该移植版本基于主实现的成熟代码库。 WireGuard 对于核心 Linux已转换为使用核心实体 Windows 以及 NDIS 网络协议栈。与之前可用的版本相比, Windows 执行 wireguard-go,它在用户空间运行,并使用Wintun网络接口, WireGuardNT 通过消除上下文切换并将数据包内容从内核复制到用户空间,显著提高了性能。类似于以下实现: LinuxOpenBSD 和 FreeBSD WireGuardNT 的所有协议处理逻辑都直接在网络协议栈层运行。
虽然目前还没有进行任何具体的优化, WireGuard在现有的以太网测试环境下,NT 已经实现了 7.5 Gbps 的峰值数据传输性能。在实际用户系统中,使用 Wi-Fi 时,性能明显降低,但与直接数据传输的性能相差不大。例如,在配备 Intel AC9560 无线网卡的系统上,不使用 Wi-Fi 的吞吐量与使用 NT 的吞吐量相当。 WireGuard 总计达到 600 Mbps,并且 WireGuardNT 的速度也保持在 600Mbps,而使用时则不然。 wireguard-go/Wintun 的速率为 95Mbps。
回想一下, VPN WireGuard 该系统采用现代加密技术,性能卓越,易于使用,操作简便,并在多个处理海量流量的大规模部署项目中得到了验证。该项目自 2015 年以来一直在开发中,其加密方法已通过审计和正式验证。 WireGuard 采用基于密钥的路由概念,即将私钥绑定到每个网络接口,并使用公钥进行绑定。
建立连接所需的公钥交换与 SSH 类似。为了在用户空间不运行单独的守护进程的情况下协商密钥并建立连接,使用了 Noise 协议框架中的 Noise_IK 机制,类似于 SSH 中 authorized_keys 的维护。数据传输通过封装在 UDP 数据包中进行。支持密钥修改。 IP地址 VPN 服务器(漫游)连接不中断,客户端自动重新配置。
加密使用由 Daniel J. Bernstein、Tanja Lange 和 Peter Schwabe 开发的 ChaCha20 流密码和 Poly1305 消息认证 (MAC) 算法。 ChaCha20 和 Poly1305 被定位为更快、更安全的 AES-256-CTR 和 HMAC 类似物,其软件实现允许在不涉及特殊硬件支持的情况下实现固定的执行时间。 为了生成共享密钥,使用了同样由 Daniel Bernstein 提出的 Curve25519 实现中的椭圆曲线 Diffie-Hellman 协议。 对于散列,使用 BLAKE2s 算法 (RFC7693)。
来源: opennet.ru
