0Pricing
Cryptology Academy · 课时

现代消息传递中的端到端加密

研究支持 WhatsApp 和 Signal 的 Signal Protocol,包括前向保密、棘轮机制和密封发送者

现代消息传递中的端到端加密 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

Signal 协议概览

Signal 协议是 Signal、WhatsApp 及其他安全通信应用背后的密码学基础。它结合了两种算法:X3DH 用于在收件人离线时建立初始共享密钥,双棘轮用于为每条消息派生新的加密密钥。其结果是强大的机密性和前向保密,而且对用户完全透明。

X3DH:扩展三重迪菲-赫尔曼

X3DH 允许双方在一方离线时建立共享密钥。它结合长期身份密钥、中期签名预密钥和一次性预密钥,执行四次迪菲-赫尔曼计算。服务器会预先存储由收件人上传的预密钥。发送方使用这些密钥执行 X3DH,派生共享密钥,并发送加密的初始消息,无需等待收件人上线。

双棘轮算法

在 X3DH 建立初始共享密钥后,双棘轮接管后续会话。它结合了会在交换新的 DH 密钥时推进的迪菲-赫尔曼棘轮,以及会随每条消息推进的对称密钥棘轮。每条消息都使用唯一密钥加密,该密钥在使用后立即删除,因此即使捕获了某条消息的密钥,也不会危及任何其他消息。

实践中的前向保密

前向保密意味着,即使攻击者今天记录了加密流量,之后又攻破了您的长期私钥,他们仍然无法解密旧消息。双棘轮之所以能够实现这一点,是因为每条消息的密钥都是临时密钥,并且会立即删除。只有当时参与会话的设备才能解密过去的消息,而且前提是该设备尚未在本地删除这些消息。

入侵恢复

双棘轮还提供入侵恢复,有时称为攻陷后安全性。如果攻击者暂时攻陷设备并读取其当前密钥,下一次 DH 棘轮步骤就会生成攻击者无法预测的新密钥。未来的消息会再次变得安全,无需任何手动干预;而在某些系统中,单个密钥遭到攻陷会暴露所有后续消息。

WhatsApp 采用 Signal 协议

2016 年,WhatsApp 完成了在所有平台上全面部署 Signal 协议端到端加密,当时覆盖超过十亿用户。这是当时历史上规模最大的端到端加密部署。该集成由 Open Whisper Systems 合作开发,该组织正是 Signal 背后的组织。WhatsApp 的实现经过独立审计,并确认无误。

密封发件人:隐藏消息元数据

即使内容已加密,Signal 协议最初仍会向服务器透露消息发送者和接收者。密封发件人是一项扩展功能,它会加密消息信封中的发件人身份。服务器只知道收件人而不知道发件人,从而减少服务器或任何通过传票调取服务器记录的人能够获得的元数据。收件人解密外层信封后即可得知消息发送者。

消失消息与临时密钥

Disappearing messages add a timer after which messages are deleted from both sender and recipient devices. Combined with the Double Ratchet's ephemeral keys, this means that even forensic examination of a seized device at a later date may find no recoverable plaintext. Signal's Note to Self feature and disappearing message defaults encourage minimal data retention as a privacy practice.

iMessage:混合方案

当双方都启用 iMessage 时,Apple 的 iMessage 会使用端到端加密;如果其中一方未启用,则回退到 SMS。iMessage 会将加密的消息密钥存储在 iCloud 钥匙串中,从而支持多设备访问,但这也意味着,在受到法律强制且启用了 iCloud 备份的情况下,Apple 在技术上可以访问消息。与 Signal 不同,iMessage 不使用双棘轮协议,因此不具备同等的前向保密保障。

群组消息为何更难保障安全

在双方通信中,双棘轮协议非常高效。在包含 N 名成员的群组中,每条消息都必须分别为每名成员加密,或者必须管理一个共享的群组密钥。安全地管理群组密钥非常复杂:当一名成员离开时,所有剩余成员都必须刷新密钥,这称为群组的入侵后安全性。消息层安全协议(MLS/RFC 9420)通过以对数复杂度更新密钥来解决这一问题。

Signal、WhatsApp 与 Telegram 的比较

Signal 完全开源,仅收集最少的元数据,并始终使用 Signal 协议。WhatsApp 使用 Signal 协议传递消息,但归 Meta 所有,并会收集大量元数据。Telegram 仅在秘密聊天中使用自定义的 MTProto 协议;普通聊天不采用端到端加密,而是存储在 Telegram 服务器上。若要实现最大程度的隐私,推荐使用启用消失消息的 Signal。

Signal 协议的特性

双棘轮协议的哪项特性可以确保,即使获取了一条消息的密钥,也不会暴露其他消息?

端到端加密:要点总结

Signal 协议结合使用 X3DH 进行离线密钥协商,并使用双棘轮协议为每条消息派生密钥。前向保密可以保护过去的消息;入侵恢复可以保护设备遭到入侵后的未来消息。WhatsApp 于 2016 年大规模部署了这套方案。群组消息需要使用 MLS 等更复杂的密钥管理协议。元数据保护还需要诸如密封发件人之类的额外技术。

常见问题解答

「现代消息传递中的端到端加密」课时是免费的吗?

是的 — 「现代消息传递中的端到端加密」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「现代消息传递中的端到端加密」这节课中我会学到什么?

研究支持 WhatsApp 和 Signal 的 Signal Protocol,包括前向保密、棘轮机制和密封发送者 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「现代消息传递中的端到端加密」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 电子邮件为何天生不安全
  2. 用于电子邮件的 PGP 与 GPG 加密
  3. 企业电子邮件中的 S/MIME
  4. 现代消息传递中的端到端加密
← 返回 Cryptology Academy