Provable-Security

Stateful Authenticated Encryption 的安全定義存在缺陷?

  • December 5, 2014

我正在尋找狀態認證加密方案 (sAE) 的正確定義及其相關的安全概念。這已在學術文獻中多次討論過,但是,我讀過的所有論文都包含他們用非正式英語陳述安全目標的方式與他們的正式安全遊戲之間的差異。特別是,他們對安全遊戲的正式規範總是包含一個缺陷,讓對手獲得微不足道的勝利。

形式上,sAE 方案 $ \mathcal{SE = (K, E, D)} $ 由三個算法組成,一個密鑰生成算法 $ \mathcal{K} $ , 一種加密算法 $ \mathcal{E} $ 它既是隨機的又是有狀態的,以及一個解密算法 $ \mathcal{D} $ ,這是確定性有狀態的。加密和解密算法都服從正確性要求,即如果它們都從初始狀態開始,並且對於 $ i = 1, 2, \dots, $ 如果 $ C_i = \mathcal{E}_K(M_i) $ 和 $ M_i’ = \mathcal{D}_K(C_i) $ ,那麼一定是 $ M_i = M_i’ $ 對全部 $ i $ .

第一篇正式定義 sAE 安全概念的論文是 Bellare 等人在SSH 中的 Authenticated Encryption: Provably Fixing the SSH Binary Packet Protocol中。他們將加密器和解密器之間的互動定義為同步,如果在任何時間點,解密器的輸入序列是加密器輸出的前綴。如果它們不同步,它們就是不同步的。這是他們的非正式擷取狀態隱私 IND-SFCCA 的安全博弈聲明(請注意,本文將 sAE 方案的安全性分為隱私安全要求和完整性安全要求,而後來的論文將它們合併為一個組合博弈。博弈公式仍然是非常相似,並且在安全性方面也是等效的:附錄 B):

在此處輸入圖像描述

這是他們的正式定義(附錄 A. Def. A.2):

缺陷:在正式定義中, $ \mathcal{D}_K $ oracle 返回的東西不是 $ \perp $ 如果: (1) $ j > i $ IE, $ C $ 是正確的不同步消息**(2) $ C \neq C_v $ ,即送出的密文不是加密器輸出的最新密文。注意到這個缺陷了嗎?

假設攻擊者首先詢問他的 $ \mathcal{E}_K $ 一些消息的預言機 $ M_1, M_2, M_3 $ , 說, 並被歸還 $ C_1, C_2, C_3 $ . 然後他打電話 $ \mathcal{D}_K $ 在 $ C_2 $ . 請注意 $ i = 3 $ 和 $ j = 1 $ , 所以 (1) 不成立, 但 (2) 成立, 因為 $ C_2 \neq C_1 $ . 因此我們輸入 $ \mathsf{phase} = 1 $ ,並且對手收到解密的 $ C_2 $ 並且可以輕而易舉地贏得比賽。

現在您可能會簡單地將其視為微不足道的“錯字”/疏忽,並且作者確實打算寫一些與他們的非正式描述等效的東西。然而,這個具有相同缺陷的安全定義已被不同作者在其他幾篇論文中重複:

此外,您還有 Brzuska 等人的論文Less is More: Relaxed yet Composable Security Notions for Key Exchange,他在自己的(和不同的)框架中提供了上述定義(Def.16,第 29 頁)的摘要,重現相同的有缺陷的行為!

那麼這裡發生了什麼?

回答我自己的問題,因為沒有任何回應。

事實上定義沒有缺陷。也不是我的攻擊本身!

然而,這個定義的全部要點是排除狀態方案(以及沒有以充分方式結合狀態的有狀態方案)是安全的。特別是,當對手要求解密 $ C_2 $ ,解密算法處於狀態“1”,而不是“2”,即期望接收由加密者創建的密文,該加密者在創建密文時處於“1”狀態。因此,如果有狀態的方案是值得的,那麼解密 $ C_2 $ 更好地導致失敗,即 $ \perp $ . 因此,返回“解密”是沒有問題的 $ \mathsf{phase} = 1 $ 不再,因為它不會給攻擊者任何明顯的優勢。

我錯誤地認為這種攻擊一般適用於所有加密方案,但忘記了無狀態方案應該不符合這個定義。

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