我们将解释什么是 VPN 协议及其作用。我们还将比较最常见协议(包括 OpenVPN、WireGuard®、IKEv2、PPTP 和 L2TP)的优缺点。

在信任 VPN 来保护您的互联网活动之前,您需要确保它们已采取必要的保障措施。评估 VPN 较为技术性的方面可能很困难,这往往意味着要费力理解一堆令人眼花缭乱的不同首字母缩略词。

我们已开始撰写一系列帖子,解释我们的部分安全措施,以便人们能够做出更明智的决定。我们的第一篇帖子解释了 HMAC SHA-384 的含义。本篇帖子将探讨 VPN 协议、它们的作用、工作原理,以及例如 VPN 服务使用基于 L2TP 的 OpenVPN 意味着什么。

本篇帖子将深入探讨 VPN 的一些内部工作原理。虽然我们尽量清晰地解释术语,但如果您具备一些基本的技术知识,这篇帖子会对您更有帮助。如果您不确定 VPN 是如何工作的,建议在继续阅读之前先阅读下面链接的文章。

了解 VPN 的工作原理

VPN 协议

VPN 依靠所谓的“隧道”技术在互联网上的两台计算机之间创建私有网络。VPN 协议也称为“隧道协议”,是您的设备用来协商安全已加密连接的指令,该连接构成了您的计算机与另一台计算机之间的网络。

VPN 协议通常由两个频道组成:数据频道和控制频道。控制频道负责密钥交换、身份验证和参数交换(例如提供 IP、路由和 DNS 服务器)。您可以猜到,数据频道负责传输您的互联网流量数据。这两个频道共同建立并维护一条安全的 VPN 隧道。但是,要让您的数据通过这条安全隧道,必须对其进行封装。

封装是指 VPN 协议从您的互联网流量中取出称为数据包的数据片段,并将它们放入另一个数据包中。这一额外层是必要的,因为您的 VPN 在数据频道内使用的协议配置与普通互联网使用的配置不一定相同。这一额外层使您的信息能够穿越 VPN 隧道并到达正确的目的地。

这些都有些技术性,因此这里做一个大致概述:当您连接到 VPN 服务器时,VPN 使用其控制频道在您的设备与服务器之间建立共享密钥并进行连接。一旦建立此连接,数据频道便开始传输您的互联网流量。当 VPN 谈论其性能的优缺点或提到“安全 VPN 隧道”时,指的就是其数据频道。VPN 隧道建立后,控制频道的任务则是维持连接的稳定性。

PPTP

点对点隧道协议 (PPTP) 是较早期的 VPN 协议之一。它最初是在 Microsoft 的支持下开发的,因此所有版本的 Windows 和大多数其他操作系统都原生支持 PPTP。

PPTP 使用点对点协议 (PPP),它本身就像一个原始的 VPN。尽管相当老旧,PPP 仍能验证用户身份(通常使用 MS-CHAP v2)并自行封装数据,使其既能承担控制通道又能承担数据通道的职责。然而,PPP 不可路由,无法自行通过互联网发送。因此,PPTP 使用通用路由封装 (GRE) 对 PPP 封装的数据再次进行封装,以建立其数据通道。

遗憾的是,PPTP 自身不具备任何加密或身份验证功能。它依赖 PPP 来实现这些功能——这就有问题了,因为 PPP 的身份验证系统以及 Microsoft 为其添加的加密机制 MPPE 都很薄弱。

加密:Microsoft 的点对点加密协议 (MPPE(新窗口)) 使用 RSA RC4 算法。MPPE 的最高强度为 128 位密钥。

速度:由于其加密协议不需要太多计算能力 (RC4 且仅有 128 位密钥),PPTP 能保持较快的连接速度。

已知漏洞:自 1998 年以来,PPTP 存在大量已知安全漏洞。其中最严重的漏洞之一会利用未经封装的 MS-CHAP v2 身份验证来实施中间人 (MITM) 攻击。

防火墙端口:TCP 端口 1723。PPTP 使用 GRE,这意味着它无法穿越网络地址转换防火墙(新窗口),是最容易被封锁的 VPN 协议之一。(NAT 防火墙允许多个人同时分享一个公共 IP 地址。这一点很重要,因为大多数个人用户并没有自己的 IP 地址。)

稳定性:在不稳定的网络连接中,PPTP 不如 OpenVPN 可靠,恢复速度也不如 OpenVPN 快。

结论:如果您注重数据安全,就没有理由使用 PPTP。连 Microsoft 也建议(新窗口) 用户升级到其他 VPN 协议以保护数据。

L2TP/IPSec

第二层隧道协议 (L2TP) 旨在取代 PPTP。L2TP 可以自行处理身份验证并执行 UDP 封装,因此在某种程度上,它既能构成控制通道也能构成数据通道。然而,与 PPTP 类似,它本身不提供任何加密。虽然 L2TP 可以发送 PPP,但为了避免 PPP 固有的弱点,L2TP 通常与互联网协议安全 (IPSec) 套件配合使用,由后者负责加密和身份验证。

IPSec 是一个灵活的框架,不仅可用于 VPN,还可用于路由和应用层安全。当您使用 L2TP/IPSec 连接到 VPN 服务器时,IPSec 会协商共享密钥,并验证设备与服务器之间安全控制通道的连接。

然后由 IPSec 封装数据。在执行这一封装时,IPSec 会添加身份验证标头并使用封装安全载荷 (ESP)。这些特殊的标头会为每个数据包添加数字签名,因此攻击者无法在不惊动 VPN 服务器的情况下篡改您的数据。

ESP 会对封装后的数据包进行加密,使攻击者无法读取(并且,视 VPN 的设置而定,还会对数据包进行身份验证)。IPSec 封装数据后,L2TP 会再使用 UDP 对数据进行二次封装,使其能够通过数据通道。

包括 IKEv2 在内的多种 VPN 协议都使用 IPSec 加密。IPSec 虽然总体上是安全的,但非常复杂,可能导致实现不佳。L2TP/IPSec 在大多数主流操作系统上都受支持。

加密:L2TP/IPSec 可以使用 3DES 或 AES 加密,但由于 3DES 如今已被视为弱加密算法,因此很少使用。

速度:在使用相同加密强度的情况下,L2TP/IPSec 通常比 OpenVPN 慢。这主要是因为 OpenVPN 使用的 AES 加密在大多数常见处理器上都有硬件加速。

已知漏洞:L2TP/IPSec 是一种先进的 VPN 协议,但一份 泄露的 NSA 演示文稿(新窗口)表明,该情报机构已经找到了对其进行篡改的方法。此外,由于 IPSec 的复杂性,许多 VPN 提供商曾使用预共享密钥(新窗口) 来设置 L2TP/IPSec。

防火墙端口:UDP 端口 500 用于初始密钥交换,UDP 端口 5500 用于 NAT 穿越,UDP 端口 1701 用于允许 L2TP 流量。由于使用这些固定端口,L2TP/IPSec 比其他一些协议更容易被封锁。

稳定性:L2TP/IPSec 不如一些更先进的 VPN 协议稳定。其复杂性可能导致网络频繁掉线。

结论:L2TP/IPSec 的安全性无疑比 PPTP 有所改进,但可能无法保护您的数据免受高级攻击者的侵害。其较慢的速度和不稳定性也意味着,只有在没有其他选择的情况下,用户才应考虑使用 L2TP/IPSec。

IKEv2/IPSec

互联网密钥交换第二版 (IKEv2) 是一种相对较新的隧道协议,实际上本身就是 IPSec 套件的一部分。Microsoft 和 Cisco 合作开发了最初的 IKEv2/IPSec 协议,但如今已有许多开源版本。

IKEv2 使用 Diffie–Hellman 密钥交换(新窗口)算法,通过验证设备与 VPN 服务器之间的安全通信通道来建立控制通道。随后,IKEv2 使用该安全通信通道建立所谓的安全关联,也就是说,设备与 VPN 服务器使用相同的加密密钥和算法进行通信。

安全关联建立后,IPSec 即可创建隧道,为数据包添加经过身份验证的标头,并使用 ESP 对其进行封装。(同样,视所使用的加密算法而定,ESP 也可以负责消息身份验证。)封装后的数据包随后会再用 UDP 封装一次,以便通过隧道传输。

IKEv2/IPSec 在 Windows 7 及更高版本、macOS 10.11 及更高版本以及大多数移动操作系统上都受支持。

加密:IKEv2/IPSec 可以使用多种不同的加密算法,包括 AES、Blowfish 和 Camellia。它支持 256 位加密。

速度:IKEv2/IPSec 是一种快速的 VPN 协议,但通常不如硬件加速的 OpenVPN 或 WireGuard 快。

已知漏洞:IKEv2/IPSec 没有已知的弱点,几乎所有 IT 安全专家都认为,只要通过正确实施 Perfect Forward Secrecy 来实现,它就是安全的。

防火墙端口:UDP 端口 500 用于初始密钥交换,UDP 端口 4500 用于 NAT 穿越。由于总是使用这些端口,IKEv2/IPSec 比其他一些协议更容易被封锁。

稳定性:IKEv2/IPSec 支持移动与多宿主 (Mobility and Multihoming) 协议,这使其比大多数其他 VPN 协议更可靠,尤其适合经常在不同 WiFi 网络之间切换的用户。

结论:IKEv2/IPSec 具有强大的安全性、高速度和更高的稳定性,是一种不错的 VPN 协议。然而,随着 WireGuard 近年来的推出,人们已经很少有必要选择 IKEv2/IPSec 而非这种更新的 VPN 协议了。

OpenVPN

OpenVPN 是一种开源隧道协议。与依赖 IPSec 套件的 VPN 协议不同,OpenVPN 使用 SSL/TLS 来处理密钥交换并建立控制通道,同时使用一种独特的 OpenVPN 协议来处理封装和数据通道。

这意味着它的数据通道和控制通道都是加密的,这使它在其他 VPN 协议中显得有些独特。借助第三方软件,它可以在所有主流操作系统上使用。

加密:OpenVPN 可以使用 OpenSSL(新窗口) 库中包含的任何加密算法来加密数据,包括 AES、RC5 和 Blowfish。

详细了解 AES 加密

速度:使用 UDP 时,OpenVPN 能保持快速连接,但人们普遍认为 IKEv2/IPSec 和 WireGuard 更快。

已知漏洞:只要采用足够强大的加密算法和 Perfect Forward Secrecy 来实现,OpenVPN 就没有已知漏洞。对于注重数据安全的 VPN 而言,它是行业标准。

防火墙端口:OpenVPN 可以配置为在任何 UDP 或 TCP 端口上运行,包括 TCP 端口 443——该端口承载所有 HTTPS 流量,因此很难被封锁。

稳定性:OpenVPN 总体上非常稳定,并且具有用于对抗审查的 TCP 模式。

结论:OpenVPN 安全、可靠且开源,是目前使用的最佳 VPN 协议之一,尤其适合最关注数据安全的用户。它能够通过 TCP 路由连接(见下文),因此也是规避审查的良好选择。不过,虽然 WireGuard 缺乏 OpenVPN 的抗审查优势,但它同样安全,而且速度比 OpenVPN 更快。

WireGuard®

WireGuard(新窗口) 是一种安全、快速且高效的开源 VPN 协议。

加密:WireGuard 使用 ChaCha20 进行对称加密 (RFC7539(新窗口)),使用 Curve25519 进行匿名密钥交换,使用 Poly1305 进行数据身份验证,并使用 BLAKE2s 进行哈希 (RFC7693(新窗口))。它自动支持 Perfect Forward Secrecy。

速度:WireGuard 使用新型高速加密算法。例如,ChaCha20 比同等强度的 AES 加密算法简单得多,而且速度几乎不相上下——即使现在大多数设备的硬件都内置了 AES 指令。因此,WireGuard 能提供快速的连接速度,并且对 CPU 的要求很低。

已知漏洞:WireGuard 已经过多种正式验证,而且为了被纳入 Linux 内核,WireGuard Linux 代码库还曾由第三方进行独立审计(新窗口)。

防火墙端口:WireGuard 可以配置为使用任何端口,并且通常通过 UDP 运行。不过,Proton VPN 在我们的大多数应用中也提供 WireGuard TCP。

稳定性:WireGuard 是一种非常稳定的 VPN 协议,并引入了其他隧道协议所不具备的新功能,例如在更换 VPN 服务器或切换 WiFi 网络时仍能保持 VPN 连接。

结论:WireGuard 是一种先进的 VPN 协议,快速、高效且安全。它不像 OpenVPN 那样“久经考验”,也不具备 OpenVPN 基于 TCP 的抗审查能力(见下文),但对大多数人而言,在大多数情况下,它是我们推荐的 VPN 协议。

了解更多关于 WireGuard 的信息

OpenVPN 与 WireGuard 对比

Stealth

Stealth 是 Proton 开发的一种全新 VPN 协议。借助它,即使常规 VPN 协议被政府或组织屏蔽,您也能访问受审查的网站,并在社交媒体上与他人交流。

Stealth 基于 WireGuard 并通过 TLS 隧道传输。因此,它使用与 WireGuard 相同的加密方式,并额外增加了一层 TLS 加密。除此之外,它与 WireGuard(见上文)完全相同。

了解更多关于 Stealth 的信息

其他重要术语

在阅读各种 VPN 协议的比较时,您可能遇到过一些不熟悉的缩略词或技术术语。我们在此解释其中最重要的一些。

TCP 与 UDP

传输控制协议 (TCP) 和用户数据报协议 (UDP) 是设备在互联网上相互通信的两种不同方式。两者都运行在互联网协议 (IP) 之上,由 IP 负责向 IP 地址发送和接收数据包。

当您看到隧道协议使用 TCP 端口或 UDP 端口时,表示它会使用这两种协议之一,在计算机与 VPN 服务器之间建立连接。

VPN 协议使用 TCP、UDP 还是两者兼用,会显著影响其性能。TCP 主要侧重于准确传输数据,它会执行额外的检查,以确保数据顺序正确,并在出错时加以纠正。

这听起来是个不错的功能,但执行检查需要时间,会导致性能下降。通过 TCP 运行 VPN (TCP over TCP) 可能会拖慢连接速度,这种现象被称为 TCP meltdown(TCP 熔毁)。

例如,当 TCP 流量通过 OpenVPN TCP 隧道传输时,如果隧道内的 TCP 数据检测到错误,它会尝试进行补偿,而这可能导致 TCP 隧道过度补偿。这一过程可能严重延迟数据的传送。

不过,它也有利于对抗审查。这是因为 HTTPS(新窗口) 流量使用 TCP 端口 443,因此如果将 VPN 连接路由到同一端口,它看起来就像普通的加密 VPN 流量。

能够在端口 443 上运行 VPN 流量是使用 OpenVPN 的最大优势之一(如果使用的是 Proton VPN 为 WireGuard 协议定制的 TCP 实现,WireGuard 也具备这一优势)。

了解更多关于 TCP 和 UDP 的信息

Perfect Forward Secrecy(完美前向保密)

Perfect Forward Secrecy 是加密通信的一项关键安全机制,用于管理加密密钥的生成方式。如果您的 VPN 支持 Perfect Forward Secrecy,它会为每个会话(即每次建立新的 VPN 连接时)创建一组唯一的密钥。

这意味着即使攻击者以某种方式获取了您的其中一个密钥,也只能用它访问该特定 VPN 会话中的数据。其余会话的数据仍将安全无虞,因为它们由不同的唯一密钥保护。这也意味着即使 VPN 的私钥泄露,您的会话密钥仍将保持安全。

Proton VPN 应用使用的协议

我们创建 Proton VPN,是为了确保活动人士、异见人士和记者能够安全、私密地访问互联网。为了保护 Proton 社区的安全,我们只使用经过信任和审查的 VPN 协议。以下列表显示了我们的各类应用支持哪些 VPN 协议:

  • Windows:WireGuard® 和 Stealth。如果使用我们的公测版应用,可以选择使用这些协议的 Proton 协议版本。
  • macOS:IKEv2、WireGuard 和 Stealth。
  • Android:WireGuard 和 Stealth。如果使用我们的公测版应用,可以选择使用这些协议的 Proton 协议版本。
  • iOS 和 iPadOS:WireGuard 和 Stealth。如果使用我们的公测版应用,系统会自动使用这些协议的 Proton 协议版本。
  • Linux GUI 应用:OpenVPN 或 Stealth 和 WireGuard。启用 Proton 协议(公测版)时支持 Stealth。启用 Proton 协议后则不支持 OpenVPN。
  • Linux CLI:WireGuard(仅限 UDP)。
  • Android TV:WireGuard 和 Stealth。如果使用我们的公测版应用,可以选择使用这些协议的 Proton 协议版本。
  • Apple TV:WireGuard(仅限 UDP)。

除非另有说明,OpenVPN 和 WireGuard 均可在 UDP 或 TCP 模式下使用。

了解如何更改 VPN 协议

大多数应用都支持 Smart Protocol。这项抗审查功能会智能探测网络,以找到实现最佳性能或绕过审查所需的最佳 VPN 协议配置。

例如,它可以根据需要自动从 WireGuard TCP 切换到 Stealth,并使用不同的端口。

了解更多关于 Smart Protocol 的信息

我们的所有应用都采用 VPN 协议所支持的最强安全设置。OpenVPN、WireGuard 和 IKEv2/IPSec 是仅有的几种获得绝大多数 IT 安全专家认可的安全协议。

我们拒绝提供任何使用 PPTP 或 L2TP/IPSec 的 VPN 连接(尽管它们运行成本更低、配置更简单),因为其安全性达不到我们的标准。

登入 Proton VPN 后,您可以放心,您的 VPN 连接正在使用最新、最强的隧道协议。

Proton 协议

我们目前正在推出 Proton 协议,这是一种全新的 VPN 架构,旨在提高稳定性并增强抗审查能力。Proton 协议使用 Rust 编写,并取代了 WireGuard 的官方 wireguard-go 实现(Stealth 协议也使用了该实现)。