端到端加密 - 任何人都无法窥探的通信机制
端到端加密(E2EE)是一种只有消息的发送者和接收者才能读取内容的加密方式。通信路径上的服务器、互联网服务提供商,甚至服务提供者本身,都无法解密加密后的消息内容。
普通的 TLS/HTTPS 加密虽然对客户端和服务器之间的通信进行了加密,但数据在服务器上是以解密状态被处理的。也就是说,服务提供者可以访问消息内容。E2EE 解决了这个问题,实现了即使消息经过服务器中转,也始终保持加密状态的机制。
E2EE 的技术原理 - 公钥加密与密钥交换
E2EE 的基础是公钥加密体系。每个用户持有"公钥"和"私钥"一对密钥,用公钥加密的数据只能用对应的私钥解密。
基本加密流程
- Alice 和 Bob 各自生成公钥和私钥对
- Alice 获取 Bob 的公钥(通过服务器分发)
- Alice 用 Bob 的公钥加密消息后发送
- 服务器将加密消息原样转发给 Bob(无法解密)
- Bob 用自己的私钥解密并阅读消息
实际的即时通讯应用中,出于性能考虑,消息本体使用 AES 等对称加密算法加密,而对称密钥则用公钥加密来传输——这就是混合加密方式。
Signal 协议 - 现代 E2EE 的标准
Signal 协议(原 Axolotl 协议)是目前最广泛采用的 E2EE 协议,组合了以下技术:
- X3DH(Extended Triple Diffie-Hellman):初始密钥交换协议。即使对方离线也能异步开始密钥交换
- Double Ratchet 算法:每条消息都更新加密密钥的机制。即使过去的密钥泄露,之后的消息也无法被解读(前向保密)
- Sesame 算法:多设备间的会话管理
Double Ratchet 中的"棘轮"指的是只能单向旋转的齿轮。意味着加密密钥始终向前推进,无法回退。因此,即使某个时间点的密钥泄露,过去的消息仍然受到保护。
主要即时通讯应用的 E2EE 支持情况
各即时通讯应用的 E2EE 实现范围和方式差异很大。
| 应用 | E2EE 范围 | 协议 | 元数据保护 |
|---|---|---|---|
| Signal | 所有通信(默认开启) | Signal 协议 | Sealed Sender 隐藏发送者 |
| 所有通信(默认开启) | Signal 协议 | 元数据由 Meta 收集 | |
| LINE | 一对一聊天(Letter Sealing) | 自研实现(ECDH + AES) | 有限 |
| Telegram | 仅 Secret Chat(需手动开启) | MTProto 2.0 | 普通聊天无 E2EE |
| iMessage | Apple 设备间(默认开启) | 自研实现(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 泄露测试和安全评分检查。
想系统学习加密技术的人,可以参考加密技术相关书籍。