Symmetric

基於認證加密的承諾

  • November 13, 2019

讓 $ (E,D) $ 是經過身份驗證的加密方案的加密/解密。考慮以下承諾方案。

  1. 生成隨機密鑰 $ k $ . 承諾 $ m $ 通過發送 $ c=E_k(m) $ .
  2. 揭示 $ m $ 通過發送 $ k $ .

上述承諾方案的隱蔽性直接來自於對保密性的標准假設 $ E $ . 但是,我不知道這是否具有約束力。似乎大多數用於身份驗證的安全概念都沒有考慮換出密鑰。特別是,是否有一種財產可以保證 $ D_{k’}(c) $ 無法驗證/解密?

有沒有一種財產可以保證 $ D_{k’}(c) $ 無法驗證/解密?

不,那裡沒有; 認證加密提供的所有安全保證都是“如果你不知道密鑰,那麼就很難……”的形式;如果您確實知道鑰匙,它就沒有說明任何事情的難度。

而且,事實證明,使用 GCM,您可以生成一個使用兩個不同密鑰進行身份驗證的密文,這並不難。

這是它的工作原理;你選擇兩個隨機鍵 $ k_0, k_1 $ , 一個隨機的認證標籤 $ t $ ,以及適當的隨機數和 AAD。然後,GCM 有一個屬性,如果你有一個由 16 字節塊組成的 32 字節密文 $ X_a, X_b $ ,此密文將在以下情況下進行身份驗證(在您選擇的上下文中):

$$ h^3 X_a + h^2 X_b = C $$

在哪裡 $ h $ 是密鑰生成的認證密鑰,並且 $ C $ 是一個常數,取決於密鑰、身份驗證標籤、nonce 和 AAD,所有數學都在 $ GF(2^{128}) $

兩個不同的密鑰產生不同的 $ h $ 和 $ C $ 值,因此我們可以生成兩個聯立方程:

$$ h_0^3 X_a + h_0^2 X_b = C_0 $$

$$ h_1^3 X_a + h_1^2 X_b = C_1 $$

這裡的一切都是已知的,除了 $ X_a, X_b $ ; 你有兩個聯立的線性方程,所以你可以求解 $ X_a, X_b $ ,從而為您提供一個密文,該密文將解密為具有兩個不同密鑰的內容。

現在,此方法無法讓您控制它們解密的內容,但仍然足以表明 GCM 沒有綁定。

相反,使用散列函式會更有意義,也就是說, $ \text{Hash}(r, M) $ 對於隨機固定長度的隨機數 $ r $ . 抗碰撞特性意味著它具有約束力。並且,如果隨機數 $ r $ 你包含的比散列長,那麼即使是計算無界的攻擊者也只能獲得關於你所承諾內容的弱機率資訊,這似乎是合理的。

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