VPN WireGuard 已被 net-next 分支接受,并计划包含在 Linux 5.6 内核中

大卫·米勒(大卫·S·米勒),负责Linux内核的网络子系统, 接受了 到网络下一个分支 补丁 实施项目中的 VPN 接口 WireGuard。 明年初,net-next 分支中积累的更改将构成 Linux 内核 5.6 发布的基础。

过去几年,人们曾尝试将 WireGuard 代码推入主内核,但由于与用于提高性能的加密函数的专有实现相关联,因此仍未成功。 最初,这些功能是 建议的 作为内核的附加低级 Zinc API,它最终可能取代标准的 Crypto API。

经过 Kernel Recipes 会议的讨论,WireGuard 的创建者于 XNUMX 月 做出了妥协的决定 转移您的补丁以使用核心中可用的加密 API,WireGuard 开发人员在性能和一般安全性方面对此有抱怨。 决定继续开发 Zinc API,但作为一个单独的项目。

XNUMX 月,内核开发人员 我们走吧 作为妥协的回应,并同意将部分代码从 Zinc 转移到主内核。 本质上,一些 Zinc 组件将被移入核心,但不是作为单独的 API,而是作为 Crypto API 子系统的一部分。 例如,Crypto API 已经 包括 快速实现 WireGuard 中准备的 ChaCha20 和 Poly1305 算法。

关于即将在主核心中交付 WireGuard,该项目的创始人 объявил 关于重组存储库。 为了简化开发,设计为独立存在的整体“WireGuard.git”存储库将被三个独立的存储库取代,更适合在主内核中组织代码工作:

  • 线卫-linux.git - 完整的内核树,包含 Wireguard 项目的更改,其中的补丁将被审查以包含在内核中,并定期转移到 net/net-next 分支。
  • Wireguard-tools.git - 在用户空间中运行的实用程序和脚本的存储库,例如 wg 和 wg-quick。 该存储库可用于创建分发包。
  • wireguard-linux-compat.git - 包含模块变体的存储库,与内核分开提供,并包括 compat.h 层以确保与旧内核的兼容性。 主要开发将在wireguard-linux.git存储库中进行,但只要用户有机会和需要,也将以工作形式支持单独版本的补丁。

让我们提醒您,VPN WireGuard 是在现代加密方法的基础上实现的,提供非常高的性能,易于使用,没有复杂性,并且已经在处理大量流量的大量大型部署中证明了自己。 该项目自2015年开始开发,已通过审核并通过 形式验证 使用的加密方法。 WireGuard 支持已集成到 NetworkManager 和 systemd 中,并且内核补丁包含在基本发行版中 Debian不稳定、Mageia、Alpine、Arch、Gentoo、OpenWrt、NixOS、 子图 и ALT.

WireGuard 使用加密密钥路由的概念,其中涉及将私钥附加到每个网络接口并使用它来绑定公钥。 以与 SSH 类似的方式交换公钥以建立连接。 为了协商密钥并连接而无需在用户空间中运行单独的守护进程,来自的 Noise_IK 机制 噪声协议框架类似于在 SSH 中维护authorized_keys。 数据传输是通过封装在UDP数据包中进行的。 支持在不断开连接的情况下更改VPN服务器的IP地址(漫游)并自动重新配置客户端。

用于加密 使用 流密码 ChaCha20 和消息认证算法(MAC) Poly1305,由丹尼尔·伯恩斯坦设计(丹尼尔·伯恩斯坦),坦尼娅·兰格
(塔尼娅·兰格)和彼得·施瓦贝。 ChaCha20 和 Poly1305 被定位为 AES-256-CTR 和 HMAC 的更快、更安全的类似物,其软件实现允许在不使用特殊硬件支持的情况下实现固定的执行时间。 为了生成共享密钥,实现中使用了椭圆曲线 Diffie-Hellman 协议 Curve25519,也是由丹尼尔·伯恩斯坦提出的。 用于散列的算法是 BLAKE2 (RFC7693).

测试 性能 与 OpenVPN(带有 HMAC-SHA3.9-3.8 的 256 位 AES)相比,WireGuard 的吞吐量提高了 2 倍,响应速度提高了 256 倍。 与 IPsec(256 位 ChaCha20+Poly1305 和 AES-256-GCM-128)相比,WireGuard 显示出轻微的性能改进 (13-18%) 和更低的延迟 (21-23%)。 测试是使用该项目开发的加密算法的快速实现来执行的 - 转移到内核的标准加密 API 可能会导致性能更差。

VPN WireGuard 已被 net-next 分支接受,并计划包含在 Linux 5.6 内核中

来源: opennet.ru

添加评论