WireGuard
WireGuard 是什么?
WireGuard现代化、极简的 VPN 协议,采用固定的新一代密码学原语,并作为 Linux 内核的一部分运行。
WireGuard 由 Jason Donenfeld 创建,以简洁与高性能为设计目标,代码量(约 4,000 行)比 IPsec 或 OpenVPN 小数个量级——更小的攻击面使其更易审计。它采用固定且不可协商的密码学套件(Curve25519 用于密钥交换、ChaCha20-Poly1305 按 RFC 8439 提供认证加密、BLAKE2s 用于哈希、HKDF 以及 1-RTT 的 Noise IK 握手),消除了长期困扰 IPsec/IKE 与 TLS 的密码降级与协商复杂性缺陷。对端通过静态公钥识别,Donenfeld 称之为"密钥路由(cryptokey routing)";握手通过轮换临时密钥提供前向保密。
该协议的安全性经过形式化验证:Donenfeld 与 Kevin Milner 在 Tamarin 证明器中对握手建模,后续工作又在 CryptoVerif 中给出了机械化的计算证明。WireGuard 于 5.6 版本(2020 年)并入 Linux 内核,并为其他系统提供用户态实现与 wireguard-go。它运行在 UDP/51820 上,对未经请求的数据包保持静默,能无缝承受 IP 漫游,并支撑 Tailscale、Netmaker 等覆盖网络。其设计权衡在于:WireGuard 会保留对端状态与最近已知端点,因此在大型集群中运营者会配合动态地址管理使用。
flowchart LR
A[对端 A<br/>静态公钥] -->|Noise IK 握手<br/>UDP/51820 上 1-RTT| B[对端 B<br/>静态公钥]
B -->|派生临时密钥| C[Curve25519 共享密钥]
C --> D[ChaCha20-Poly1305<br/>加密隧道]
D --> E{密钥路由}
E -->|匹配 AllowedIPs| F[投递到对端]
E -->|无匹配| G[丢弃数据包]● 示例
- 01
Tailscale 内部使用 WireGuard 构建覆盖网络,连接笔记本、服务器与云实例。
- 02
在 UDP/51820 上自建的 WireGuard 汇聚点,为远程员工提供接入。
● 常见问题
WireGuard 是什么?
现代化、极简的 VPN 协议,采用固定的新一代密码学原语,并作为 Linux 内核的一部分运行。 它属于网络安全的 网络安全 分类。
WireGuard 是什么意思?
现代化、极简的 VPN 协议,采用固定的新一代密码学原语,并作为 Linux 内核的一部分运行。
如何防御 WireGuard?
针对 WireGuard 的防御通常结合技术控制与运营实践,详见上方完整定义。
WireGuard 还有哪些其他名称?
常见的别称包括: WireGuard 协议。