X3DH 密鑰協議協議中的可否認性和預密鑰安全性
有人可以解釋一下X3DH 密鑰協議協議中的以下段落嗎?
第 1 段:什麼是可否認性,它是如何工作的?
推諉
X3DH 不會向 Alice 或 Bob 提供他們通信內容或他們通信事實的可發布加密證明。
就像在 OTR 協議中一樣
$$ 6 $$,在某些情況下,可能會向從 Alice 或 Bob 洩露合法私鑰的第三方提供似乎是 Alice 和 Bob 之間的通信記錄,並且只能由也可以訪問合法私鑰的其他方創建來自愛麗絲或鮑勃(即愛麗絲或鮑勃本人,或洩露其私鑰的其他人)。 如果任何一方在協議執行期間與第三方合作,他們將能夠向此類第三方提供他們的通信證明。這種對“線上”否認的限制似乎是非同步設置所固有的。
第二段:這種被動攻擊將如何運作?
預密鑰私鑰的洩露可能會引發延伸到未來的攻擊,例如被動計算 SK 值,以及冒充受感染方的任意其他方(“密鑰洩露模擬”)。這些攻擊是可能的,直到被入侵的一方在伺服器上替換了他被入侵的預密鑰(在被動攻擊的情況下);或刪除他洩露的簽名預密鑰的私鑰(在密鑰洩露模擬的情況下)。
推諉
假設 Eve 注意到 Alice 和 Bob 正在進行安全通信。稍後,夏娃出現在愛麗絲的家中,並要求愛麗絲交出她所有的私鑰,以便夏娃可以公開他們的談話。Alice 和 Bob 希望確保他們之前的通信保持私密。
如果 Alice 加密了一條消息 $ m_1 $ 變成密文 $ c = E(m_1,r) $ , 在哪裡 $ r $ 是一些隨機輸入(可能是共享秘密),那麼 Alice 可能想要拒絕她發送 $ m_1 $ 而是聲稱她加密了另一條消息 $ m_2 $ 這樣 $ c = E(m_2,r’) $ , 在哪裡 $ r’ $ 是其他一些隨機輸入。如果 $ E $ 有這個性質,叫可否認。除非夏娃擁有心靈感應超能力,否則她根本無法信任愛麗絲,因為她本可以翻身 $ m_2 $ 和 $ r’ $ 代替 $ m_1 $ 和 $ r $ . 事實上,這可以保護愛麗絲的數據,甚至在未來保護她自己!(夏娃怎麼可能相信愛麗絲解密的任何東西?)
(當然,如果愛麗絲因為某種原因不得不交出 $ m_1 $ 和 $ r $ , 沒有希望。我從這篇論文中舉了一個例子。)
X3DH 不允許 Alice 和 Bob 證明他們進行過特定的對話;他們的資訊是可否認的。但是:如果 Eve 強迫 Alice 和 Bob 交出私鑰,Eve 可以生成看似來自 Alice 和 Bob 的對話。
Prekeys 的妥協
回想一下用於從預密鑰派生密鑰的公式:
DH1 = DH(IK_A, SPK_B) DH2 = DH(EK_A, IK_B) DH3 = DH(EK_A, SPK_B) SK = KDF(DH1 || DH2 || DH3)
如果我可以訪問預密鑰,我可以嘗試計算
DH1
、DH2
和DH3
(儘管我認為如果沒有臨時密鑰和身份密鑰這很難)並執行密鑰洩露模擬攻擊;請參閱此非正式概述。基本上,如果我有一個密鑰 SK 並在對話中冒充某人,我可以計算共享密鑰。這就是為什麼協議建議定期將預密鑰上傳到伺服器的原因,因為這些攻擊是無效的(密鑰取決於預密鑰)。