VPN技术 · 2023年11月10日

The WireGuard Protocol

wireguard

wireguard

官网 https://www.wireguard.com

采用先进的加密技术,如noise协议框架,Curve25519,chacha20,Poly1305,blake2,siphash24,hkdf,和安全的信任结构。这让保守的、合理的选择和已审查了密码

最小攻击面

WireGuard的设计易于实施和简单。它意味着可以通过很少的代码轻松实现,并且可以轻松审计安全漏洞。与像Swan / IPsec或OpenVPN / OpenSSL这样的庞然大物相比,即使对于大型安全专家团队来说,审计庞大的代码库也是一项压倒一切的任务,WireGuard意味着可以由单个人全面审查。

高性能

极高速的加密原语和WireGuard存在于Linux内核中的事实意味着安全的网络可以非常高速。它适用于小型嵌入式设备,如智能手机和满载的骨干路由器。

良好的定义和彻底的考虑

WireGuard是经过漫长而彻底考虑的学术过程的结果,产生了技术白皮书,这是一份学术研究论文,明确定义了协议以及每个决策中的强烈考虑因素。

概念概述

如果您想了解WireGuard的一般概念概述,请点击此处阅读。然后您可以继续安装并阅读有关如何使用它的快速入门说明。

如果您对内部工作感兴趣,可能会对协议的简要概述感兴趣,或者通过阅读技术白皮书进行更深入的介绍,该白皮书详细介绍了协议,密码学和基础知识。如果您打算为新平台实施WireGuard,请阅读跨平台说明。

WireGuard通过UDP安全地封装IP数据包。您添加了一个WireGuard接口,使用您的私钥和对等方的公钥对其进行配置,然后通过它发送数据包。密钥分发和推送配置的所有问题都不在WireGuard的范围之内; 这些问题远远好于其他层,以免导致IKE或OpenVPN的膨胀。相比之下,它更模仿SSH和Mosh的模型; 双方拥有彼此的公钥,然后他们只需通过接口就可以开始交换数据包。

简单的网络接口

WireGuard工作通过将网络接口(或多个),例如eth0wlan0,称为wg0(或wg1wg2wg3等等)。然后,可以使用ifconfig(8)ip-address(8)使用route(8)ip-route(8)使用所有普通网络实用程序添加和删​​除路由来正常配置此网络接口。接口的特定WireGuard方面使用该wg(8)工具进行配置。该接口充当隧道接口。

WireGuard将隧道IP地址与公共密钥和远程端点关联。当接口向对等体发送数据包时,它会执行以下操作:

  1. 此数据包适用于192.168.30.8。那是哪个同行?让我看看……好吧,这是同行的ABCDEFGH。(或者如果它不是用于任何配置的对等体,则丢弃该数据包。)
  2. 使用对等方ABCDEFGH的公钥加密整个IP数据包。
  3. 同伴的远程端点是ABCDEFGH什么?让我看看……好的,端点是主机216.58.211.110上的UDP端口53133。
  4. 使用UDP将步骤2中的加密字节通过Internet发送到216.58.211.110:53133。

当接口收到数据包时,会发生以下情况:

  1. 我刚从主机98.139.183.24上的UDP端口7361获得一个数据包。让我们解密它!
  2. 它为对等体正确解密和验证LMNOPQRS。好的,让我们记住,对等LMNOPQRS的最新Internet端点是使用UDP的98.139.183.24:7361。
  3. 解密后,纯文本数据包来自192.168.43.89。同行LMNOPQRS允许发送我们的数据包为192.168.43.89?
  4. 如果是,请接受接口上的数据包。如果没有,请放弃它。

在幕后,使用最先进的密码术可以提供适当的隐私,真实性和完美的前向保密

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.