Signature

X3DH 密鑰協議協議的可否認性屬性

  • July 7, 2018

Signal 的X3DH 密鑰協議協議規範在第 4.5 節中聲明:

或者,將基於 DH 的相互認證(即 DH1 和 DH2)替換為來自身份密鑰的簽名可能很誘人。然而,這降低了可否認性,

$$ … $$

DH1替換和DH2使用簽名究竟如何減少可否認性?

我認為,使用簽名意味著類似於 STS 協議(https://en.wikipedia.org/wiki/Station-to-Station_protocol)。在 STS 中,為了相互認證,每一方都必鬚髮送一個臨時密鑰的簽名。因此,按照https://signal.org/docs/specifications/x3dh中使用的術語,Alice 應該簽署EK_a || SPK_b,Bob 應該簽署相同的協議。

在 X3DH 中,由簽名提供的身份驗證被這樣一個事實所取代,即為了獲得密鑰 ( SK),每一方都應該使用他的身份密鑰 (例如ID_a) 和對方的臨時密鑰 (例如SPK_b) 執行 DH 交換。因此,實際上,使用(在 STS 中)SPK_b的私鑰簽名ID_a被替換為僅執行 DHID_aSPK_b(在 X3DH 中)。

那麼,否認有什麼區別呢?非常簡單:簽名是通信和知道臨時密鑰的證據,因此知道SK. 雖然 DH 的執行不是證據,因為甚至不可能知道 Bob(或 Alice)執行 DH 並獲得SK與否。如果 Alice 想要向某個法官證明 Bob 與她進行了通信,並且 Bob 知道一些SK(因此 - 他可以創建或至少解密 Alice 提供的一些密碼文本來判斷),她無法證明這一點:很明顯Alice 可以用EK_a她想要的任何密鑰來模擬 DH 。沒有證據表明 Bob 正在執行 DH,EK_a甚至知道存在這樣的EK_a.

簽名可由第三方驗證——任何知道公鑰的一方都可以驗證簽名消息,但這還不足以偽造它們。

如果 Alice 想說服 Charlie Bob 寫了一條消息並且 Alice 上有 Bob 的簽名,那麼 Charlie 可以使用 Bob 的公鑰驗證該簽名消息,而不會受到暴力威脅。

來自 DH 密鑰協議的秘密下的對稱驗證器無法被第三方驗證——任何能夠驗證消息驗證器的方也可以偽造它們。

如果 Alice 想說服 Charlie Bob 寫了一條消息並且消息上只有一個對稱的驗證器,那麼 Alice 不僅可以偽造驗證器,而且為了使 Charlie 能夠驗證驗證器,Alice 必須透露她自己的密鑰,或者在暴力威脅導致鮑勃暴露自己的身份。

因此,當 Bob 簽署了一條以後可能會違背他的利益的消息時,Alice 有一個簡單的方法來說服 Charlie,Bob 寫了這條消息——但是當 Bob 只提供了一個對稱的身份驗證器時,Charlie 無法判斷 Bob 是否真的發送了或者 Alice 是否偽造了它,這給了 Bob 一個簡單的方法來否認它。

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