SharedSec 如何成为 RootKey · EK_A 如何成为首条消息的 ratchet_key · 双方对称启动
不熟悉以下底层概念? 这里是 30 秒回顾。
标准化 KDF (RFC 5869), 两步走: extract(salt, IKM) → PRK, expand(PRK, info, L) → OKM。
SharedSec = HKDF(DH₁‖DH₂‖DH₃‖DH₄)
不同协议子模块通过明确的输入/输出契约组合在一起。X3DH 的产物无变换地传给 DR — 这是可证明安全性的关键。
X3DH.SharedSec → DR.RootKey₁
发送方不需等接收方响应就能发出第一条加密消息。Signal 通过 X3DH 的"预共享密钥包"实现这一点。
vs TLS 1.3 1-RTT / 0-RTT
EK 同时参与 X3DH 和 DR 的 ratchet_key — 两阶段共用一个密钥需要协议设计层面证明无安全降级。
EK 在 X3DH 后被"重新解释"为 ratchet