今天 Linus 将带有 VPN 接口的 net-next 分支移给了自己
新的 Linux 5.6 内核的代码收集目前正在进行中。 WireGuard 是一款实现现代加密技术的快速下一代 VPN。 它最初是作为现有 VPN 的更简单、更方便的替代方案而开发的。 作者是加拿大信息安全专家 Jason A. Donenfeld。 2018年XNUMX月,WireGuard
“我看到 Jason 提出了将 WireGuard 纳入内核的 Pull 请求,”Linus 在 2 年 2018 月 XNUMX 日写道。 — 我可以再次表达我对这个 VPN 的喜爱并希望尽快合并吗? 代码可能并不完美,但我看了它,与 OpenVPN 和 IPSec 的恐怖相比,它是一件真正的艺术品。”
尽管莱纳斯有意愿,合并还是拖延了一年半。 事实证明,主要问题与加密函数的专有实现有关,这些函数用于提高性能。 经过 2019 年 XNUMX 月的漫长谈判,
最后,9 年 2019 月 XNUMX 日,负责 Linux 内核网络子系统的 David S. Miller,
今天,即 29 年 2020 月 XNUMX 日,这些更改已提交给 Linus 并包含在内核中。
WireGuard 声称相对于其他 VPN 解决方案的优势:
- 易于使用。
- 采用现代密码学:Noise协议框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF等。
- 紧凑、可读的代码,更容易调查漏洞。
- 高性能。
- 清晰且详尽
规格 .
WireGuard 的所有核心逻辑仅占用不到 4000 行代码,而 OpenVPN 和 IPSec 则需要数十万行代码。
“WireGuard 使用加密密钥路由的概念,其中涉及将私钥附加到每个网络接口并使用公钥对其进行绑定。 以与 SSH 类似的方式交换公钥以建立连接。 为了协商密钥并连接而无需在用户空间中运行单独的守护进程,来自的 Noise_IK 机制
噪声协议框架 类似于在 SSH 中维护authorized_keys。 数据传输是通过封装在UDP数据包中进行的。 它支持在不断开连接的情况下更改 VPN 服务器的 IP 地址(漫游),并自动重新配置客户端,-пишет 开放网。用于加密
使用 流密码ChaCha20 和消息认证算法(MAC)Poly1305 ,由丹尼尔·伯恩斯坦设计(丹尼尔·伯恩斯坦 )、塔尼娅·兰格和彼得·施瓦贝。 ChaCha20 和 Poly1305 被定位为 AES-256-CTR 和 HMAC 的更快、更安全的类似物,其软件实现允许在不使用特殊硬件支持的情况下实现固定的执行时间。 为了生成共享密钥,实现中使用了椭圆曲线 Diffie-Hellman 协议Curve25519 ,也是由丹尼尔·伯恩斯坦提出的。 用于散列的算法是BLAKE2 (RFC7693) “。
结果
带宽(兆位/秒)
平(毫秒)
测试配置:
- 英特尔酷睿 i7-3820QM 和英特尔酷睿 i7-5200U
- 千兆位卡 Intel 82579LM 和 Intel I218LM
- Linux 4.6.1
- WireGuard 配置:256 位 ChaCha20 与适用于 MAC 的 Poly1305
- 第一个 IPsec 配置:256 位 ChaCha20 和用于 MAC 的 Poly1305
- 第二个 IPsec 配置:AES-256-GCM-128(使用 AES-NI)
- OpenVPN 配置:AES 256 位等效密码套件,带 HMAC-SHA2-256,UDP 模式
- 性能测量使用
iperf3
,显示 30 分钟内的平均结果。
理论上,一旦集成到网络堆栈中,WireGuard 的工作速度应该会更快。 但实际上,由于向内核内置的 Crypto API 加密函数的过渡,情况不一定如此。 也许并非所有这些都已优化到本机 WireGuard 的性能水平。
“从我的角度来看,WireGuard 通常是用户的理想选择。 所有低级决策均在规范中做出,因此准备典型 VPN 基础设施的过程只需几分钟。 搞乱配置几乎是不可能的 -
писали 2018 年关于哈布雷。 — 安装过程详细描述 在官方网站上,我想单独指出优秀的OpenWRT 支持 。 代码库的易用性和紧凑性是通过消除密钥分发来实现的。 没有复杂的证书系统和所有这些企业恐怖;短加密密钥的分发方式很像 SSH 密钥。”
WireGuard项目自2015年开始开发,已经过审核并通过
来源: habr.com