
VPN 加密究竟如何运作:AES-256、握手与隧道揭秘
VPN 加密究竟如何运作:揭开 AES-256、握手与隧道的真相
大多数关于 VPN 加密的解释都止步于一句让人安心的口号:“您的流量受到军用级 AES-256 的保护。” 可这句话几乎没告诉您数据到底经历了什么。真正有意思的部分——几乎所有同类文章都略过的部分——是每一次安全连接的开场动作:两台素未谋面的计算机,要在一个充满敌意、每个字节都被窥视的网络中,协商出一把共享的密钥。
本文将跟随您的一个数据包,走完它的整个生命周期:握手、密钥交换、真正承担工作的对称加密、把一切打包起来的隧道封装,以及在另一端进行的解密。一路上,我们会讲清楚 AES-256 究竟是什么,为什么“军用级”这个说法只是营销话术而非技术规范,以及您的保护到底从哪里开始、又在哪里结束。不含糊其辞,也不制造恐慌。
两类密码学,以及 VPN 为何两者都需要
在追踪数据包之前,您需要先掌握一个基础概念:加密分为两个根本不同的家族,而 VPN 会分别用它们来完成不同的工作。
对称加密用同一把共享密钥来上锁和解锁。同一个秘密既用来加密数据,也用来解密数据。它的速度极快——现代 CPU 借助专门的 AES 指令,能以每秒数 GB 的速度加密对称数据(自 2010 年前后起,Intel 和 AMD 芯片就已内置 AES-NI 硬件加速)。它的软肋也很明显:双方必须持有同一把密钥,而您无法在一个有窃听者潜伏的不可信网络上,就这么直接把密钥发过去。
非对称加密(公钥密码学)使用一对在数学上彼此关联的密钥:一把人人皆可知晓的公钥,和一把始终保密的私钥。用其中一把锁住的数据,只能用另一把来解开。这巧妙地解决了密钥分发难题——您可以公开地分享公钥——但它慢得多,并不适合用来加密持续不断的流量。
每一个 VPN(以及每一个 HTTPS 网站)核心处那个精妙的把戏,就是把两者结合起来:在连接开始时,仅用一次缓慢的非对称运算,纯粹为了协商出一把快速的对称密钥。随后便把笨重的机器扔掉,让快速的密码算法去承担所有繁重的批量工作。这个开场协商,就叫做握手。
第一步:握手与密钥交换
当您的 VPN 应用建立连接时,在您浏览的第一个字节得到保护之前,您的设备和 VPN 服务器会先完成一次握手。它的目标狭窄而明确:让两台机器最终得到一把完全相同、且任何旁观者都无法推算出来的对称密钥,并确认服务器确实是它所声称的那一台。
首先是身份认证。服务器出示一份包含其公钥的证书,您的客户端则验证一个数字签名,以确认自己正在与真正的服务器对话,而不是某个正在实施中间人攻击的冒名顶替者。RSA 或 ECDSA 签名通常就在这一步发挥作用。
接下来是密钥协商,这一步才真正值得理解。现代 VPN 采用 Diffie-Hellman,并且几乎总是用它的椭圆曲线变体 ECDH。Diffie-Hellman 是一项了不起的数学成果:双方都把各自的公开值明文交换出去,各自再把对方的公开值与自己的私有秘密结合起来——多亏背后的数论原理——双方都能独立地算出同一个共享秘密。即便窃听者捕获了线路上传输的一切,他依然无法推导出这个秘密,因为那些私有的另一半从未在任何地方传输过。
握手的全部目的,就是在众目睽睽之下制造出一个共享秘密——一把两端都能算出完全相同结果的密钥,可任何旁观者都无法从他们眼睁睁看着经过的流量里把它重建出来。
从这个共享秘密出发,双方各自推导出将用于加密您真实流量的对称会话密钥。昂贵的公钥步骤至此完成。在 WireGuard 中,这一交换建立在 Curve25519 之上;在 OpenVPN 和 IKEv2/IPsec 中,它则作为 TLS 或 IKE 握手的一部分被协商出来。具体名称各不相同,但它们的形态完全一致。
第二步:AES-256 到底是什么
握有共享对称密钥之后,VPN 就切换到它的主力密码算法——最常见的是 AES,即高级加密标准(Advanced Encryption Standard)。AES 于 2001 年由美国国家标准与技术研究院(NIST)通过一场公开竞赛选拔并标准化;获胜的算法最初名为 Rijndael,由比利时密码学家 Joan Daemen 与 Vincent Rijmen 设计。
以下是营销话术很少解释的部分。AES 是一种分组密码(block cipher):它以固定的 128 位分组为单位加密数据(每次 16 字节)。“256”指的是密钥长度——256 位——而不是分组大小。AES 让每个分组经过多轮(rounds)替换、置换与混合:AES-128 用 10 轮,AES-192 用 12 轮,AES-256 用 14 轮。更多的轮数和更长的密钥意味着更大的安全裕度,代价是略微的性能开销。
分组大小: 128 位,所有 AES 变体都相同。
密钥长度: 128、192 或 256 位——这是那个数字所指的唯一区别。
轮数: 分别为 10 / 12 / 14——密钥越长,变换过程越多。
模式很关键: 裸 AES 需要一种运作模式(如 GCM 或 CBC)才能安全地加密数据流;VPN 使用的是经过认证的模式,绝不会用裸分组加密。
“军用级加密”:拆穿这个标签
“军用级加密”是一句营销话术,而不是一项技术认证。世界上没有任何标准机构会把软件盖章认定为“军用级”。厂商们想说的是:AES-256 获美国国家安全局(NSA)批准,可用于保护直至绝密(TOP SECRET)级别的机密信息——这是事实,但同一份 NSA 指南也批准 AES-128 用于秘密(SECRET)级别的数据。两者都是 AES,都被认为是安全的。
诚实的版本是这样的:就公开密码分析所知,AES-128 和 AES-256 都基本无法通过暴力破解攻克。一把 128 位密钥有 2^128 种可能取值——大约是 340 涧(undecillion)。哪怕您征用地球上的每一台计算机,也无法在太阳燃尽之前暴力破解出哪怕一把 AES-128 密钥。AES-256 那 2^256 的密钥空间并不是“两倍”那么强;它在天文数字之上又大了无数倍,可您本就早已越过了实际可攻击的界线。在面对暴力破解时,AES-128 与 AES-256 在现实世界中的差别,就一切实际意义而言,等于零——两者都遥不可及。
那为什么还要偏向 AES-256 呢?一部分是为了给未来密码分析的进展留出裕度,另一部分是因为量子计算(下文详谈)理论上会把有效密钥强度减半,而 AES-256 留下的缓冲更为宽裕。但如果一个 VPN 保护了您,那并不是因为 128 位和 256 位之间的差别,而是因为密码算法周围的一切——握手、密钥管理、具体实现。一个无懈可击的密码算法,配上一个被攻破的握手,什么也保护不了。
第三步:隧道封装——把数据包裹起来
现在轮到真正的数据了。假设您请求一个网页。您的设备会构建一个普通的 IP 数据包:一个标注目标地址的包头,和一段承载您请求内容的载荷。没有 VPN 时,这个数据包会带着它的目标地址——往往还有它的内容——明晃晃地穿过您 ISP 的网络。
有了 VPN,封装(encapsulation)便登场了。VPN 客户端取走您完整的原始数据包——连同包头在内——用对称会话密钥把它加密成一团无法读取的乱码。然后它把这团乱码包进一个全新的外层数据包里。这个外层包的包头对外部世界只说一件事:这是发往 VPN 服务器的流量。您真正的目标地址被严严实实地封在加密载荷之内。
这就是所谓的“隧道”。它不是一根物理管道;它是这样一种套娃式的嵌套结构——您真实的数据包成了一个新数据包的加密货物。任何监视您本地网络的人——您的 ISP、同一家咖啡馆 Wi-Fi 上的某个人、某个网络运营方——只看得到加密数据包流向一个 VPN 服务器的 IP 地址,对里面装着什么、最终又要去往何处一无所知。
原始数据包: 您真实的目标地址 + 您的数据——没有 VPN 时一览无余。
加密载荷: 整个原始数据包,用会话密钥打乱。
新的外层包头: 仅以 VPN 服务器为收件人——窃听者所能读到的全部。
结果: 旁观者得知您在用 VPN、以及有多少数据在流动,但读不到它的内容或最终目的地。
第四步:服务器端的解密与返程
被包裹好的数据包抵达 VPN 服务器。服务器持有相匹配的对称会话密钥,于是它解密外层载荷,还原出您的原始数据包,并读取它真正的目标地址。随后它代您把这个请求转发到广阔的互联网上——只不过现在这个请求看起来源自服务器的 IP 地址,而非您的。这正是 VPN 能改变您表面位置的原因。
网站回复给 VPN 服务器。服务器用同一把会话密钥加密这份响应,对其封装,再通过隧道送回您的设备,由设备解密。每一次往返都重复这套动作:加密、封装、传输、解封装、解密。由于对称密码算法有硬件加速,这只增加很小的开销——您能感觉到的延迟,主要来自您的流量绕道服务器所经历的物理路程,而不是那些运算。
不只是保密:完整性与认证
加密能隐藏您的数据,但它本身并不能证明数据原封不动地送达。老练的攻击者有时能在不解密的情况下翻转密文里的某些比特,从而破坏或操纵明文。安全的 VPN 会用完整性和认证校验来抵御这一点,而不只是依赖机密性。
较旧的设计会额外附加一个独立的 HMAC(基于哈希的消息认证码):一个针对整个数据包计算出来的密码学标签,让接收方能够察觉任何篡改。现代设计则采用 AEAD 密码算法——带关联数据的认证加密(Authenticated Encryption with Associated Data)——把加密与完整性融合进一次运算。AES-GCM 和 ChaCha20-Poly1305 是两种占主导地位的 AEAD 构造。如果一个 AEAD 数据包在传输途中哪怕只有一个比特被改动,认证标签就会校验失败,该数据包会被直接丢弃,而不会被信任。
ChaCha20-Poly1305 值得专门一提,因为 WireGuard 独家使用它,而且它是没有 AES 硬件加速的设备上的默认选择——许多手机和低功耗处理器运行 ChaCha20 时比 AES 更快、更接近恒定时间。它并不比 AES 弱;它是一种不同的、同样备受推崇的现代密码算法,由 Daniel J. Bernstein 设计。
完美前向保密:为什么被盗的密钥不是万能钥匙
有一种特性把认真的 VPN 配置与马虎的配置区分开来:完美前向保密(PFS)。握手期间推导出的会话密钥是临时的(ephemeral)——它们为每次会话重新生成、定期轮换,随后即被丢弃。它们永远不会作为长期秘密被写入磁盘。
由此带来的后果很重要。假设某个对手今天就记录下您所有的加密流量并存起来,多年后又攻破 VPN 服务器、窃走它的长期私钥。有了前向保密,那把被盗的密钥无法回溯解密您过去的会话,因为真正的会话密钥是临时的、早已不复存在——它们从来就无法仅凭长期密钥推导出来。每一次会话都被密封在它自己的那一刻里。这正是握手为何要使用临时的 Diffie-Hellman(常写作 ECDHE,末尾的 E 代表“ephemeral”,即临时),而不是反复使用一把静态密钥的原因。
加密在哪里结束:出口跳点很关键
一个流传甚广的误解是:VPN 会一路把您的流量加密到网站为止。它不会。VPN 加密保护的是您的设备与 VPN 服务器之间的这一段——仅此而已。一旦服务器解密了您的数据包并将其转发到真正的目的地,您的数据便继续穿越公共互联网,由那个目的地所提供的任何保护来照看。
这正是为什么即便用了 VPN,HTTPS 依然重要。如果您访问的是一个 https:// 站点,那段流量会携带它自己独立的、端到端的 TLS 加密,因此即使越过了 VPN 的出口也依然受保护。但如果您通过纯 http:// 发送某些内容,它离开 VPN 服务器时就是明文,处在服务器与目的地之间的任何人都能读到。VPN 改变的是“谁能看到您未加密的出口流量”——从您本地的 ISP 转移到了 VPN 提供商及其后续网络——它并不能让明文凭空变得安全。请选择一个您愿意把这个位置交付信任的提供商,并坚持使用 HTTPS。
常见误区,逐一纠正
“AES-256 牢不可破。” 没有哪个正经系统能永远牢不可破,而且攻击很少冲着密码算法本身去——它们瞄准的是弱密钥、有缺陷的实现、泄露的凭据,或是使用软件的那个人。数学是最坚固的一环;它周围的一切都要软得多。
“他们直接暴力破解就行了。” 暴力破解一把 128 位密钥不是慢的问题——它在物理上根本不可行。那些数字超出了可观测宇宙的能量与时间预算。真正的入侵来自绕过密码算法,而不是攻破它。
“量子计算机会瞬间破解我的 VPN。” 这是最被过度炒作的说法。Grover 算法理论上能把对称密钥的有效强度减半,把 AES-256 削减到仍然宽裕的约 128 位裕度。更值得长期担忧的是非对称握手(RSA/ECDH),它受到 Shor 算法的威胁——这正是业界正在迁移到后量子密钥交换的原因。但今天还不存在能做到这一点的量子计算机,而“现在收割、日后解密”是一种未来风险,而非当下的破解。
“位数越多就越安全。” 越过某个阈值之后,密钥长度在面对暴力破解时便不再有意义。协议设计、前向保密和干净的实现,对真实安全的决定作用,远胜于 128 位还是 256 位之争。
实用要点
剥去那些口号,VPN 的加密其实是一条清晰、被充分理解的流水线:一次公钥握手引导出一把共享的对称密钥,这把密钥驱动一个像 AES-GCM 或 ChaCha20-Poly1305 这样快速且经过认证的密码算法,您的数据包被封装进加密的外层数据包里,而临时密钥则确保即便服务器明天被攻破,今天的秘密也依然是秘密。
密码算法的选择(AES-128 还是 AES-256)很少是决定性因素——两者都远超暴力破解的能力范围。
优先选择现代协议(WireGuard,或配置得当的 OpenVPN/IKEv2)、经过认证的 AEAD 加密,以及完美前向保密。
记住,加密在 VPN 服务器处就结束了——坚持使用 HTTPS 以获得真正的端到端保护。
把“军用级”和“牢不可破”当作营销噪音;判断一个 VPN,要看它的实现、密钥处理,以及您愿意托付给它运营方的那份信任。
常见问题
“军用级加密”是真的,还是只是营销噱头?
它是营销话术。世界上没有官方的“军用级”认证。这个说法通常指的是 AES-256,美国 NSA 确实批准它用于保护直至绝密(TOP SECRET)级别的机密数据——但 NSA 同样批准 AES-128 用于秘密(SECRET)级别的数据。密码算法本身是真实而强大的;那个标签只是包裹在它外面的一句推销词。
简单解释一下,什么是 AES-256 加密?
AES-256 是使用 256 位密钥的高级加密标准(Advanced Encryption Standard)。它是一种分组密码,把数据以 128 位为单位、经过 14 轮数学变换打乱。“256”仅指密钥长度,而非分组大小,它是当今使用中被分析得最多、最受信任的密码算法之一。
VPN 握手期间到底发生了什么?
VPN 握手会认证服务器(通过证书和数字签名),并运行一次密钥交换——通常是椭圆曲线 Diffie-Hellman——让双方各自独立算出同一把秘密的对称密钥,而无需把它发送到网络上。随后这把对称密钥就加密您所有的真实流量,从而把缓慢的公钥运算变成一次性的初始化步骤。
VPN 隧道封装是如何工作的?
VPN 隧道封装(也称封装)会取走您的原始数据包,把它完整加密,再包进一个仅以 VPN 服务器为收件人的新外层数据包里。您本地网络上的旁观者只看得到流向服务器的加密流量,对其内容或真实目的地一无所知。服务器随后将其拆包解密,再转发到真正的目的地。
对 VPN 而言,AES-256 比 AES-128 更好吗?
在实践中,两者面对暴力破解攻击的差别可以忽略不计——破解任何一个在计算上都不可行,因为即便是 AES-128 那 2^128 的密钥空间,也超出了任何现实的算力。AES-256 提供更大的安全裕度,对未来的量子进展也有更好的缓冲,但现实世界中的 VPN 安全,更多取决于协议设计、前向保密和实现质量,而非密钥大小。
什么是完美前向保密,它为什么重要?
完美前向保密意味着每次会话都使用临时的密钥,这些密钥重新生成后随即被丢弃。即便攻击者日后窃取了 VPN 服务器的长期私钥,他依然无法解密您过去录下的会话,因为那些会话密钥已不复存在,而且从来就无法仅凭长期密钥推导出来。它保护您的历史记录免受未来被攻破的影响。
VPN 会把我的流量一路加密到网站吗?
不会。VPN 加密只保护您的设备与 VPN 服务器之间的这一段。一旦服务器解密您的流量并将其继续转发,保护就取决于目的地了——HTTPS 站点保持端到端加密,但纯 HTTP 流量离开 VPN 服务器时是可读的明文。这正是为什么即使用了 VPN,您也应该坚持使用 HTTPS。



