VPN 加密原理:对称、非对称与前向保密讲明白
Yalgorup 编辑部 · 更新于 2026年8月1日
核心要点
- 对称加密快但需要事先共享密钥,非对称加密慢但能在公开信道上协商密钥 —— 所以两者组合使用。
- AES-256 与 ChaCha20-Poly1305 的安全性没有实质差距,区别在于硬件加速的可用性。
- AEAD 把加密和完整性校验合并,避免了「先加密后校验」顺序出错导致的经典漏洞。
- 前向保密意味着即使长期私钥泄露,之前录下的流量也解不开。
两种加密,各管一段
对称加密:加密和解密用同一把钥匙。速度快,适合处理大量数据,问题是双方得先有同一把钥匙。
非对称加密:一对公钥私钥,公钥加密的只有私钥能解。可以在公开信道上安全地建立信任,但运算慢得多,不适合加密整条流量。
VPN 的做法是把两者组合起来:先用非对称手段协商出一把临时的对称密钥,之后所有数据都用对称加密传输。这个组合在 TLS、IPsec、WireGuard 里的形式不同,思路完全一致。
密钥交换:在窃听下达成共识
Diffie-Hellman 解决了一个看起来矛盾的问题:两个人在被完全监听的信道上对话,最后各自得到同一个秘密,而窃听者拿不到。
原理是双方各自保留一个私有值,交换各自的公开值,再用对方的公开值和自己的私有值算出同一个结果。窃听者看到两个公开值,却无法反推。
现代实现用椭圆曲线版本(ECDHE、Curve25519),密钥更短、运算更快。
关键在于那个 E —— ephemeral,临时的。 每次连接生成全新的密钥对,用完丢弃。这样即使服务器的长期私钥日后泄露,攻击者也无法解开之前录制的流量,因为那些会话密钥根本没有被存储过。这就是前向保密。
AEAD:加密和校验必须一起做
早期的做法是先加密、再单独算一个校验值,两步分开。顺序搞错就会出问题 —— 密码学史上有一批漏洞正是源于「先解密后校验」这个次序。
AEAD(带关联数据的认证加密)把两件事合并成一个原语。现在 VPN 里常见的两套:
| 算法组合 | 加密 | 认证 | 适合的场景 |
|---|---|---|---|
| AES-256-GCM | AES | GCM 模式内建 | 有 AES-NI 硬件加速的 x86 设备 |
| ChaCha20-Poly1305 | ChaCha20 | Poly1305 | 移动设备、路由器等无硬件加速环境 |
安全性上两者都没有已知的实用攻击。选择依据是硬件:ARM 手机和低端路由器跑 ChaCha20 常常快出一倍以上,而带 AES-NI 指令的电脑上则反过来。
密钥派生与轮换
协商出来的共享秘密不会被直接拿来加密。它先经过 HKDF(RFC 5869)这类密钥派生函数,产出多把用途不同的密钥 —— 发送方向一把、接收方向一把、校验一把。
好的实现还会定期更换会话密钥。WireGuard 大约每两分钟主动重新握手,OpenVPN 默认一小时重新协商一次。轮换越频繁,单把密钥一旦出问题所影响的数据量越小。
怎么看服务商的加密宣传
看到「军用级 AES-256 加密」这种说法,值得追问的是后面的部分:
- 密钥交换用的是什么?有没有前向保密?
- 认证方式是证书还是共享密钥?
- 会话密钥多久轮换一次?
- 客户端是否有独立的安全审计?
算法名字本身早已不是差异点 —— 所有主流服务用的都是同一批算法。真正拉开差距的是实现细节和运营方式,见 VPN 到底安不安全。
常见问题
AES-256 和 ChaCha20 哪个更好?+
安全性上都足够。有 AES-NI 硬件加速的设备上 AES-256-GCM 更快;没有硬件加速的老手机、路由器上 ChaCha20-Poly1305 明显更快,这也是它在移动端受青睐的原因。
「军用级加密」是什么意思?+
这是营销词汇,通常指 AES-256。AES 确实被美国政府批准用于机密信息,但这个说法不构成任何额外的技术保证。
256 位密钥比 128 位安全多少?+
在暴力破解层面,两者都远超现实可行的计算能力,128 位已经足够。选 256 位更多是出于对未来(包括量子计算)的保守考虑。
量子计算会让 VPN 加密失效吗?+
对称加密受影响有限,Grover 算法只把有效强度减半,256 位仍然安全。真正受威胁的是密钥交换用的椭圆曲线算法,业界正在推进后量子密钥交换方案。