端到端加密
端到端加密”(End-to-End Encryption,简称 E2EE)是一种保护通信内容不被第三方窃取或篡改的安全机制,只有通信的两端(发送方和接收方)才能解密消息内容,中间的任何节点(包括服务器、运营商、政府、黑客)都无法查看明文。也就是说——即使数据经过了服务器中转,服务器也无法读取内容,因为数据在进入网络前就被加密了。
1. E2EE 的密钥建立方式
Section titled “1. E2EE 的密钥建立方式”E2EE(端到端加密)的核心在于通信双方必须在不依赖可信第三方的前提下,安全地建立共享密钥。这个过程称为密钥建立(Key Establishment),它决定了整个通信的安全性。以下是 E2EE 中常见的密钥建立方式,按技术原理和协议分类说明。
1.1. 公钥封装式(Public-Key Encryption)
Section titled “1.1. 公钥封装式(Public-Key Encryption)”基本流程
- B 生成公钥/私钥对 (
PubB,PrivB); - A 获取
PubB; - A 随机生成 AES 密钥
K; - A 用
PubB加密K→EncKey; - A 用
K加密消息 →Ciphertext; - A 发送
{EncKey, Ciphertext}给 B; - B 用
PrivB解出K,再解Ciphertext。
用户A生成密钥对 用户B生成密钥对 ↓ ↓ 公钥A ───→ 服务器 ───→ 公钥B ↑ ↑A 用 公钥B 加密消息 → 服务器 → B 收到后用 私钥B 解密1.2. 密钥协商式(Diffie–Hellman / ECDH)
Section titled “1.2. 密钥协商式(Diffie–Hellman / ECDH)”基本流程(ECDH)
- A 生成密钥对
(a, A_pub); - B 生成密钥对
(b, B_pub); - 交换公钥:
A_pub↔B_pub; - A 计算
K= (B_pub)^a - B 计算
K= (A_pub)^b - 得到相同的共享密钥
K; - 双方用
K派生AES密钥进行加密通信
2. 核心安全特性
Section titled “2. 核心安全特性”| 安全特性 | 含义 |
|---|---|
| 前向保密(Forward Secrecy) | 私钥泄露不会暴露过去通信内容 |
| 后向保密(Backward Secrecy) | 未来通信不受当前密钥泄露影响 |
| 完整性验证(Integrity) | 检测消息是否被篡改 |
| 身份认证(Authentication) | 确保消息确实来自声明的发送方 |
| 抗重放攻击(Replay Protection) | 旧消息无法被重复注入通信流中 |
3. Double Ratchet(双重棘轮)机制
Section titled “3. Double Ratchet(双重棘轮)机制”Double Ratchet 是现代 E2EE 协议的核心机制(Signal 协议的关键算法)。
原理概述:
- 每条消息都使用新的密钥加密;
- 收发双方都独立推进自己的“棘轮”(ratchet)状态;
- 即使一个密钥泄露,也无法解密过去或未来的消息。
三个主要组件:
- DH Ratchet:通过新的 Diffie–Hellman 密钥对更新共享密钥;
- Send Ratchet / Receive Ratchet:每发送或接收一条消息都会更新;
- KDF Chain:从主密钥派生出消息密钥、MAC 密钥等。
该设计同时提供了「前向保密」与「后向保密」,是 Signal、WhatsApp、Element 等应用的核心。