Diffie-Hellman
信號協議:X3DH
我一直在嘗試了解 Signal 協議的工作原理。根據規範,DH 是在四個鍵上完成的:
IK_A
、SPK_B
和:EK_A``IK_B
If the bundle does not contain a one-time prekey, she calculates: DH1 = DH(IK_A, SPK_B) DH2 = DH(EK_A, IK_B) DH3 = DH(EK_A, SPK_B) SK = KDF(DH1 || DH2 || DH3)
鑑於所有這四個密鑰都是公鑰並通過不受信任的渠道公佈,一個邪惡的玩家不能計算共享秘密
SK
嗎?
實際上 $ DH1, DH2 $ 和 $ DH3 $ 不是“通過不受信任的渠道宣布的”。
我認為這個文件是模糊的。為了計算 DH,Alice 使用只有她自己知道的 IK_A 和 EK_A 的離散對數。
更具體地說,如果 IK_A = g^{sk_A},並且 SPK_B=g^{sk_B},則 $ sk_A $ Alice 已經知道的秘密值。
然後她可以通過計算來計算 DH(IK_A, SPK_P) $ (SPK_B)^{sk_A} $ .
Bob 可以通過計算 DH(IK_A, SPK_P) $ (EK_A)^{sk_B} $ .
該協議在計算 Diffie-Hellman 假設下是安全的:
https://en.wikipedia.org/wiki/Computational_Diffie%E2%80%93Hellman_assumption