打开 VPN 应用时,您可能会看到一个名为“协议”的设置,里面有 WireGuard 之类的名称。大多数人从来不去动它,这完全没问题。但如果您曾好奇这些名称到底是什么意思,本文将不用数学公式、不讲行话,为您解释清楚。

什么是 VPN 协议

协议其实就是一套事先约定好的规则。您的设备和 VPN 服务器在私密通信之前,需要就三件事达成一致:

  1. 谁是谁。 双方都必须确认自己是在和正确的对象通信,而不是冒充者。
  2. 用哪些密钥。 双方需要一组只有彼此知道的共享密钥。
  3. 如何打包数据。 每一段流量都要以对方能够打开的方式加锁、贴上标签并发送出去。

VPN 协议就是同时涵盖这三点的“配方”。不同的配方会在简洁性、速度以及流量在网络上呈现的样子之间做出不同的取舍。

一段话讲懂加密

加密会把可读的数据变成杂乱的数据,只有持有正确密钥的人才能把它还原。EFF 的《监控自卫指南》(Surveillance Self-Defense)把加密描述为保护信息、防范不法分子和服务提供商的关键手段,并指出只要使用得当,加密几乎不可能被破解。现代加密还能发现篡改:如果有人在传输途中改动了加密消息哪怕极小的一部分,接收方也会察觉并将其丢弃。

这里涉及两类密钥:

  • 公钥和私钥。 可以把它想象成一把您随意分发给别人的挂锁(公钥),以及唯一能打开它、由您自己保管的钥匙(私钥)。正是靠这种方式,两个素不相识的人无需见面也能建立共同的秘密。
  • 会话密钥。 双方建立信任后,会为真正传输的数据生成新的临时密钥。这类密钥使用起来很快,并会定期更换。

什么是“握手”

握手是连接开始时的一段简短对话。双方在这一步证明各自的身份,并商定会话密钥。想象两个人在火车站碰头:他们先对上事先约好的暗号,确认彼此身份,然后在接下来的旅途中改用一种只有他们俩才懂的私密语言交谈。

好的握手过程快速、难以伪造,而且不会把密钥泄露给任何旁听者。

WireGuard:现代,且刻意保持精简

WireGuard 由 Jason Donenfeld 设计,并有一份公开的白皮书加以说明。它的核心思路是保持小巧简单,因为越简单的代码越容易检查出错误。项目官网表示,它力求易于配置和部署,并且设计目标是“可以由单个人完整审阅”,而不需要庞大的团队来审计。

用通俗的话说,WireGuard 的不同之处在于:

  • 一套固定的强加密组件。 老式协议允许双方从一长串选项中协商选择,这会增加复杂度和出错的空间。WireGuard 只使用一套现代组合。根据其协议页面,这套组合包括用于加密和保护数据的 ChaCha20 与 Poly1305、用于协商密钥的 Curve25519、用于哈希运算的 BLAKE2s,以及用于派生密钥的 HKDF。
  • 基于 Noise 的握手。 WireGuard 的握手基于 Noise 协议框架(Noise Protocol Framework),这是一种经过充分研究的密钥交换设计方法。握手过程很短:您的设备发出一条消息,服务器回复一条,隧道就建立好了。
  • 密钥不断更换。 WireGuard 的文档说明,握手每隔几分钟就会重复一次以轮换密钥,从而实现完美前向保密(perfect forward secrecy)。通俗地讲:即使某个密钥日后不幸被盗,也无法用它来解开之前会话中的流量。
  • 天生“安静”。 对于无法证明自己来自已知密钥的数据包,WireGuard 服务器不会作出任何回应。在未经授权的扫描者看来,这台服务器根本没有反应。
  • 适应移动中的设备。 当您的手机从 Wi-Fi 切换到移动数据时,WireGuard 可以在新地址上继续维持隧道,而无需完全重新连接。

正是这些特点的组合,让 WireGuard 成为现代 VPN 应用的热门选择。

TLS 处在什么位置

其实您每天都在不知不觉中使用另一个重要协议:TLS,也就是 HTTPS 里的那个“S”。当浏览器地址栏出现小锁图标时,就是 TLS 在保护这个页面。它的当前版本 TLS 1.3 由 RFC 8446 定义。TLS 同样先通过握手商定密钥,然后对整个对话进行加密。

TLS 对 VPN 很重要,因为有些 VPN 协议正是建立在它之上的。这类协议的流量被包裹在与普通安全网站相同类型的加密连接中。

为什么有些网络会区别对待 VPN 流量

加密能隐藏数据包里的内容,但每种协议仍然有可辨认的“轮廓”。不妨想想信封:您读不到里面的信,却能看到信封的大小、形状,以及信件到达的规律。网络设备可以观察这些轮廓,这种技术通常被称为流量分类或深度包检测(DPI)。

各类机构出于多种原因使用这项技术。公司网络可能只允许某些类型的流量通过;酒店网络可能会限制它无法识别的流量;一些互联网服务提供商会按类型管理流量。

由于 WireGuard 的消息格式固定且紧凑,它的数据包可能比较容易被识别。这并不是其加密的弱点,加密本身依然牢固,但这意味着某些网络能够识别出它,进而降低它的速度或将其阻断。

因此,一些现代协议不仅关注流量如何被加锁,也关注流量看起来是什么样子。大体上有两种思路:

  • 调整轮廓。 改变数据包大小或添加填充,使流量不再符合某种简单、固定的模式。
  • 使用常见的“信封”。 把隧道放在 TLS 连接内部传输,使其看起来和大多数网络日常处理的加密网页流量相似。

这两种思路都会让您的数据在设备与 VPN 服务器之间全程保持加密,目的都是获得可靠、私密的连接。请始终遵守适用于您的法律和网络规定。

VPNRice 应用中的协议

VPNRice 提供三种协议,外加一个自动模式:

  • WireGuard。 即上文介绍的标准协议,在大多数家庭和移动网络上都是不错的默认选择。
  • RiceGuard。 在 WireGuard 的基础上增加了数据包混淆。它保留 WireGuard 的加密算法,但改变了数据包的轮廓。
  • RiceGuardX。 基于 VLESS 与 REALITY 构建,是一种基于 TLS 的协议,因此隧道是在 TLS 连接内部传输的。
  • 自动(Auto)。 应用会为您选择协议,并在连接不通时自动切换。

在 Android 和 Android TV 上,三种协议和自动模式全部可用。在 iPhone 和 iPad 上,自动模式不会使用 RiceGuardX。Windows 应用提供 WireGuard、RiceGuardX 和自动模式。Chrome 和 Firefox 扩展的工作方式有所不同:它们是浏览器代理,只让您浏览器中的流量经由 VPNRice 服务器转发(您通过 HTTPS 打开的网站仍保持端到端加密)。

应该选哪一个?

对大多数人来说,实话实说:保持自动模式即可。如果您想自己试试:

  • 当您的网络环境普通、希望使用简单且成熟的配置时,选择 WireGuard。
  • 如果在某个网络上连接不稳定,自动模式会尝试另一种协议;您也可以手动切换。

无论选择哪一种,基本要素都不变:强加密、快速握手,以及定期更换的密钥。

要点回顾

  • 协议是您的设备和 VPN 服务器进行私密通信时共同遵循的规则手册。
  • 握手用于证明身份并建立新的密钥。
  • WireGuard 现代、精简,使用一套固定的强加密算法。
  • 有些网络即使读不到 VPN 流量的内容,也能凭轮廓识别出它。
  • 较新的协议会改变流量的外观,同时保持其加密状态。

想亲眼看看这些协议的实际表现?下载 VPNRice,打开“协议”设置,在它们之间切换,看看哪一种在您的网络上效果更好。