三大组件如何协作 — X3DH 启动 · DH Ratchet 翻转 · Symmetric Ratchet 派生消息密钥
不熟悉以下底层概念?这里是 30 秒回顾。点开图前后随时翻阅。
双方各持私钥, 交换公钥后能算出相同的 shared secret, 但中间人只看到公钥算不出。
Sec = DH(Sa^priv, Pb^pub) = DH(Sb^priv, Pa^pub)
把高熵的 key 加上公开的 context, 单向映射成新 key 的函数。Signal 用 HKDF / HMAC-SHA256。
output = KDF(secret, context)
带密钥的哈希, 输出 32 字节固定值。密码学单向性 → 无法从输出反推输入。
mac = HMAC(key, data)
即使长期密钥泄漏, 过去会话的密钥仍不可恢复。工程实现要点: 临时密钥用完即丢。
又称 PFS · Perfect Forward Secrecy