WireGuard VPN 的作者 Jason A. Donenfeld 发布了适用于 Windows 的 WireGuard 客户端软件的首个主要版本 1.0,以及带有端口的 WireGuardNT 1.0 驱动程序。 VPN 适用于 Windows 10 和 11 内核的 WireGuard,支持 AMD64、x86 和 ARM64 架构。Windows 内核组件代码采用 GPLv2 许可,客户端软件采用 MIT 许可。
该移植版本基于Linux内核主WireGuard实现的代码库,并已转换为使用Windows内核实体和NDIS网络协议栈。与运行在用户空间并使用Wintun网络接口的wireguard-go实现相比,WireGuardNT通过消除上下文切换并将数据包内容从内核复制到用户空间,显著提升了性能。与Linux、OpenBSD和FreeBSD的实现类似,WireGuardNT中的所有协议处理逻辑都直接在网络协议栈层运行。
版本 1.0 被视为一个里程碑,标志着许多问题的解决和预期任务的完成,例如:使用 NdisWdfGetAdapterContextFromAdapterHandle() 函数代替将驱动程序状态存储在 Reserved 字段中不太安全的方式以及使用未记录的偏移量;通过拦截系统调用来正确、及时地跟踪 MTU(最大传输单元)大小;在代码中使用 C23 标准。
再次提醒,WireGuard VPN 基于现代加密技术,性能卓越,易于使用,操作简便,并在多个处理海量流量的大规模部署中得到了验证。该项目自 2015 年开始开发,其加密方法已通过审计和正式验证。WireGuard 采用基于密钥的加密路由机制,即将私钥绑定到每个网络接口,并使用公钥进行密钥绑定。
建立连接所需的公钥交换与 SSH 类似。为了在用户空间不运行单独的守护进程的情况下协商密钥并建立连接,使用了 Noise 协议框架中的 Noise_IK 机制,类似于 SSH 中 authorized_keys 的维护。数据传输通过封装在 UDP 数据包中进行。支持密钥修改。 IP地址 VPN 服务器(漫游)连接不中断,客户端自动重新配置。
ChaCha20 流密码和 Poly1305 消息认证算法 (MAC) 由 Daniel J. Bernstein、Tanja Lange 和 Peter Schwabe 开发,用于加密。ChaCha20 和 Poly1305 被宣传为比 AES-256-CTR 和 HMAC 更快、更安全的替代方案,它们的软件实现允许固定时间执行,无需特殊的硬件支持。共享密钥使用 Curve25519 实现中的椭圆曲线 Diffie-Hellman 协议生成,该实现也是由 Daniel Bernstein 提出的。哈希算法采用 BLAKE2s (RFC7693)。
来源: opennet.ru
