端到端加密 - 任何人都无法窥探的通信机制

端到端加密(E2EE)是一种只有消息的发送者和接收者才能读取内容的加密方式。通信路径上的服务器、互联网服务提供商,甚至服务提供者本身,都无法解密加密后的消息内容。

普通的 TLS/HTTPS 加密虽然对客户端和服务器之间的通信进行了加密,但数据在服务器上是以解密状态被处理的。也就是说,服务提供者可以访问消息内容。E2EE 解决了这个问题,实现了即使消息经过服务器中转,也始终保持加密状态的机制。

E2EE 的技术原理 - 公钥加密与密钥交换

E2EE 的基础是公钥加密体系。每个用户持有"公钥"和"私钥"一对密钥,用公钥加密的数据只能用对应的私钥解密。

基本加密流程

  1. Alice 和 Bob 各自生成公钥和私钥对
  2. Alice 获取 Bob 的公钥(通过服务器分发)
  3. Alice 用 Bob 的公钥加密消息后发送
  4. 服务器将加密消息原样转发给 Bob(无法解密)
  5. Bob 用自己的私钥解密并阅读消息

实际的即时通讯应用中,出于性能考虑,消息本体使用 AES 等对称加密算法加密,而对称密钥则用公钥加密来传输——这就是混合加密方式。

Signal 协议 - 现代 E2EE 的标准

Signal 协议(原 Axolotl 协议)是目前最广泛采用的 E2EE 协议,组合了以下技术:

  • X3DH(Extended Triple Diffie-Hellman):初始密钥交换协议。即使对方离线也能异步开始密钥交换
  • Double Ratchet 算法:每条消息都更新加密密钥的机制。即使过去的密钥泄露,之后的消息也无法被解读(前向保密)
  • Sesame 算法:多设备间的会话管理

Double Ratchet 中的"棘轮"指的是只能单向旋转的齿轮。意味着加密密钥始终向前推进,无法回退。因此,即使某个时间点的密钥泄露,过去的消息仍然受到保护。

主要即时通讯应用的 E2EE 支持情况

各即时通讯应用的 E2EE 实现范围和方式差异很大。

应用 E2EE 范围 协议 元数据保护
Signal所有通信(默认开启)Signal 协议Sealed Sender 隐藏发送者
WhatsApp所有通信(默认开启)Signal 协议元数据由 Meta 收集
LINE一对一聊天(Letter Sealing)自研实现(ECDH + AES)有限
Telegram仅 Secret Chat(需手动开启)MTProto 2.0普通聊天无 E2EE
iMessageApple 设备间(默认开启)自研实现(RSA + AES)注意 iCloud 备份

值得注意的是,LINE 的 E2EE(Letter Sealing)不适用于群聊。另外,Telegram 虽然以"安全通讯工具"著称,但默认并未启用 E2EE,需要手动开启 Secret Chat。也可以参阅如何选择安全的通讯工具

E2EE 的局限性与误解

E2EE 是强大的技术,但并非万能。需要了解以下局限性。

元数据不受保护

E2EE 加密的是消息的"内容",但"谁""何时""与谁""以多高频率"通信这些元数据并不受保护。仅凭元数据就能推测出人际关系、行为模式、所在位置等重要信息。Signal 的 Sealed Sender 部分解决了这个问题,但尚未完全解决。

终端的脆弱性

E2EE 保护的是通信路径,但如果终端设备本身被入侵就毫无意义。如果手机上安装了间谍软件,解密后的消息可以通过屏幕截图或键盘记录器被窃取。NSO Group 的 Pegasus 间谍软件就以这种方式绕过 E2EE 而闻名。

备份的加密

将 WhatsApp 或 iMessage 的聊天记录备份到云端时,备份本身可能未受 E2EE 保护。WhatsApp 在 2021 年推出了端到端加密备份功能,但默认未启用。iCloud 备份同样以 Apple 可访问的状态保存(除非启用了高级数据保护)。

密钥验证

E2EE 的安全性依赖于对方公钥的真实性。服务器分发伪造公钥的中间人攻击(MITM)在理论上是可能的。Signal 和 WhatsApp 可以通过当面核对"安全号码"或"安全码"来验证密钥的真实性。这与数字证书面临的信任问题类似。

E2EE 与邮件加密

与即时通讯应用不同,邮件的 E2EE 普及进展缓慢。标准邮件(SMTP)以明文发送,服务器间的 TLS 加密是可选的。

实现加密邮件的主要方式有以下两种:

  • PGP/GPG:使用公钥加密方式加密邮件正文。密钥管理复杂,对普通用户门槛较高
  • S/MIME:使用电子证书的邮件加密。在企业环境中有所使用,但个人采用较少

ProtonMail 和 Tutanota 等服务通过自有机制实现了邮件 E2EE,但完整的 E2EE 仅在同一服务的用户之间有效。

正确利用 E2EE

要最大限度地享受 E2EE 的保护,需要在理解技术原理和局限性的基础上,选择合适的应用,同时加强终端设备的安全。如果最优先考虑隐私就选 Signal,兼顾便利性就选 WhatsApp,国内联系可以使用 LINE 并确保 Letter Sealing 已启用,同时注意不在群聊中分享机密信息——这样的分场景使用是比较现实的做法。想快速检查通信路径安全性的话,可以在IP 确认上进行 DNS 泄露测试和安全评分检查。

想系统学习加密技术的人,可以参考加密技术相关书籍。

本文相关术语

加密 将数据转换为第三方无法读取的形式的技术。E2EE 是其最强大的应用形态。 SSL/TLS 加密通信路径的协议。与 E2EE 不同,数据在服务器上会被解密。 公钥加密 使用公钥和私钥对的加密方式。是 E2EE 不可或缺的基础技术。