Diffie-Hellman

X3DH 協議 - 接收方如何計算共享密鑰?

  • November 8, 2017

我正在閱讀 Signal Protocol 和X3DH Protocol。在 X3DH 協議中,Alice 向 Bob 發送使用共享密鑰(SK)加密的初始消息。該 SK 使用(本節)計算:

DH1 = DH(IKa, SPKb)
DH2 = DH(EKa, IKb)
DH3 = DH(EKa, SPKb)
DH4 = DH(EKA, OPKB)
SK = KDF(DH1 || DH2 || DH3 || DH4)

其中 IKa 是 Alice 的身份密鑰,IKb 是 Bob 的身份密鑰,SPKb 是 Bob 的簽名預密鑰,EKa 是 Alice 的臨時密鑰,OPKb 是 Bob 的一次性預密鑰。所有這些密鑰都是公開的。

下一節中,他們將描述 Bob 如何接收此消息。Bob 載入他的私有身份密鑰和私有一次性預密鑰,並執行與 Alice 之前執行相同的步驟來導出 SK。我不明白 Bob 計算的這個 SK 是如何解密 Alice 發送的消息的。Alice 只使用公鑰,Bob 使用他的私鑰。所以我的問題是:Bob 生成的 SK 如何解密 Alice 發送的消息?

Alice 使用Alice 的私鑰Bob 的公鑰

Bob 使用Bob 的私鑰Alice 的公鑰

該符號DH(A, B)意味著您將您知道的任何私鑰AB另一個的公鑰結合起來。因此,當 Alice 計算 時DH(IKa, SPKb),她使用她的長期身份密鑰的私有部分和 Bob 的簽名預密鑰IKa公共部分SPKb;當 Bob 計算它時,他會以相反的方式進行計算。

引用自:https://crypto.stackexchange.com/questions/52976