Skip to content

端到端加密


端到端加密”(End-to-End Encryption,简称 E2EE)是一种保护通信内容不被第三方窃取或篡改的安全机制,只有通信的两端(发送方和接收方)才能解密消息内容,中间的任何节点(包括服务器、运营商、政府、黑客)都无法查看明文。也就是说——即使数据经过了服务器中转,服务器也无法读取内容,因为数据在进入网络前就被加密了。

E2EE(端到端加密)的核心在于通信双方必须在不依赖可信第三方的前提下,安全地建立共享密钥。这个过程称为密钥建立(Key Establishment),它决定了整个通信的安全性。以下是 E2EE 中常见的密钥建立方式,按技术原理和协议分类说明。

1.1. 公钥封装式(Public-Key Encryption)

Section titled “1.1. 公钥封装式(Public-Key Encryption)”

基本流程

  1. B 生成公钥/私钥对 (PubB, PrivB);
  2. A 获取 PubB;
  3. A 随机生成 AES 密钥 K;
  4. A 用 PubB 加密 KEncKey;
  5. A 用 K 加密消息 → Ciphertext;
  6. A 发送 {EncKey, Ciphertext} 给 B;
  7. 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)

  1. A 生成密钥对 (a, A_pub);
  2. B 生成密钥对 (b, B_pub);
  3. 交换公钥:A_pubB_pub;
  4. A 计算 K = (B_pub)^a
  5. B 计算 K = (A_pub)^b
  6. 得到相同的共享密钥 K;
  7. 双方用 K 派生 AES 密钥进行加密通信
安全特性含义
前向保密(Forward Secrecy)私钥泄露不会暴露过去通信内容
后向保密(Backward Secrecy)未来通信不受当前密钥泄露影响
完整性验证(Integrity)检测消息是否被篡改
身份认证(Authentication)确保消息确实来自声明的发送方
抗重放攻击(Replay Protection)旧消息无法被重复注入通信流中

Double Ratchet 是现代 E2EE 协议的核心机制(Signal 协议的关键算法)。

原理概述:

  • 每条消息都使用新的密钥加密;
  • 收发双方都独立推进自己的“棘轮”(ratchet)状态;
  • 即使一个密钥泄露,也无法解密过去或未来的消息。

三个主要组件:

  1. DH Ratchet:通过新的 Diffie–Hellman 密钥对更新共享密钥;
  2. Send Ratchet / Receive Ratchet:每发送或接收一条消息都会更新;
  3. KDF Chain:从主密钥派生出消息密钥、MAC 密钥等。

该设计同时提供了「前向保密」与「后向保密」,是 Signal、WhatsApp、Element 等应用的核心。