“IND-”安全概念的簡單解釋?
有許多方案可以用某些安全概念來宣傳自己,通常是 IND-CPA 或 IND-CCA2,例如普通 ElGamal 具有 IND-CPA 安全性,但不提供 IND-CCA 安全性。
最常見的是“IND-”,針對特定類別的攻擊者宣傳安全性。
現在這些概念可能沒有被很多人很好地理解,所以我在此請求一個規範的答案,它解釋了以下安全概念的含義。正式攻擊場景的(簡單)描述是首選。
請不要將答案限制為“你可以選擇這個,如果你可以用這個打破它,它不是 IND-CCA2”。請至少概述正式的攻擊(例如 f.ex. real-or-random)。解釋了“IND-”之間的關係(例如 IND-CCA 暗示 IND-CPA)。
有問題的概念是:
- 註冊會計師
- IND-CCA
- IND-CCA1
- IND-CCA2
- IND-CCA3
理想的加密方案 $ E $ 將是一個,對於每個密文 $ C=E(K, M) $ ,如果密鑰對對手來說仍然是秘密的,則辨識的機率 $ M $ 可以忽略不計。由於這在實踐中是不可能的,第二個最合理的方法是定義足夠強的約束以滿足安全性的某些定義。這 $ \operatorname{IND-} $ 符號以博弈的形式提供了這樣的定義,其中挑戰者將其密鑰保密,而對手具有一定的能力,其目標是破解加密系統。
為了保持通用性,加密方案將具有密鑰生成算法 $ KG $ ,這將生成一個密鑰對 $ K_E $ , $ K_D $ , 一種加密算法 $ E $ 和解密算法 $ D $ . 加密總是可逆的,但加密和解密密鑰可以不同(包括公鑰加密): $ D(K_D, E(K_E, M))=M $
**換句話說:**對手生成兩條長度相等的消息。挑戰者隨機決定加密其中一個。攻擊者試圖猜測哪些消息是加密的。
算法:
- 挑戰者: $ K_E, K_D $ = KG(安全參數)
- 對手: $ m_0, m_1 = $ 選擇兩條長度相同的消息。發送 $ m_0,m_1 $ 給挑戰者。在多項式時間內執行其他操作,包括呼叫加密預言機。
- 挑戰者: $ b= $ 在 0 和 1 之間隨機選擇
- 挑戰者: $ C:=E(K_E, m_b) $ . 發送 $ C $ 給對手。
- 對手:在多項式時間內執行其他操作,包括呼叫加密預言機。輸出 $ guess $ .
- 如果 $ guess=b $ , 對手獲勝
*進一步評論:這個場景引入的主要概念是多項式界限。現在,我們對加密貨幣的期望從獲勝的機率可以忽略不計到在合理的時間範圍內***獲勝的機率可以忽略不計。消息長度相同的限制旨在防止對手僅通過比較密文的長度來輕鬆贏得比賽。然而,這個要求太弱了,特別是因為它假設對手和挑戰者之間只有一次互動。
**換句話說:**遊戲的目標與IND-CPA相同。對手有一個額外的能力:呼叫加密或解密預言機。這意味著:對手可以在獲得挑戰密文之前加密或解密任意消息。
算法:
- 挑戰者: $ K_E, K_D $ = KG(安全參數)
- 對手(多項式有界的次數):分別呼叫任意明文或密文的加密或解密預言機
- 對手: $ m_0, m_1 = $ 選擇兩條相同長度的消息
- 挑戰者: $ b= $ 在 0 和 1 之間隨機選擇
- 挑戰者: $ C:=E(K_E, m_b) $ 發送 $ C $ 給對手。
- 對手:在多項式時間內執行額外的操作。輸出 $ guess $
- 如果 $ guess=b $ , 對手獲勝
進一步評論: IND-CCA1 考慮了重複互動的可能性,暗示安全性不會隨著時間的推移而減弱。
**換句話說:**除了 IND-CCA1 下的能力外,對手現在可以在收到預言機後訪問 $ C $ ,但不能發送 $ C $ 到解密預言機。
算法:
- 挑戰者: $ K_E, K_D $ = KG(安全參數)
- 對手(任意多次):為任意明文/密文呼叫加密或解密預言機
- 對手: $ m_0, m_1 = $ 選擇兩條相同長度的消息
- 挑戰者: $ b= $ 在 0 和 1 之間隨機選擇
- 挑戰者: $ C:=E(K_E, m_b) $ 發送 $ C $ 給對手。
- 對手:在多項式時間內執行額外的操作,包括對預言機的呼叫,對於不同的密文 $ C $ . 輸出 $ guess $ .
- 如果 $ guess=b $ , 對手獲勝
進一步評論: IND-CCA2 建議在知道密文後使用解密 oracle 可以在某些方案中提供合理的優勢,因為可以根據特定的密文定制對 oracle 的請求。
IND-CCA3 的概念是根據@SEJPM 提供的參考資料添加的。我添加它是為了完整,但似乎很重要的是要指出關於它的資源很少,我的解釋可能會產生誤導。
換句話說:不可能以不可忽略的機率創建有效的偽造品。攻擊者被給予兩對加密/解密預言機。第一對執行預期的加密和解密操作,而第二對定義如下: $ \mathcal{E}_K $ :返回隨機字元串的加密。 $ \mathcal{D}_K: $ 返回無效。它不是以遊戲的形式呈現,而是使用優勢的數學概念來呈現:通過使用有效的預言來提高獲勝的機率,以對抗“虛假”預言下的成功機率。
公式: $ \mathbf{Adv}^{ind-cca3}_{\pi}(A)=Pr\left[K\overset{\$}{\leftarrow}\mathcal{K}:A^{\mathcal{E}_K(\cdot),\mathcal{D}_K(\cdot)}\Rightarrow 1\right] - Pr\left[A^{\mathcal{E}_K(\$|\cdot|),\perp(\cdot)}\Rightarrow 1\right] $
進一步評論: IND-CCA3 的論文重點介紹了一個基本思想。IND-CCA3 相當於認證加密。
請注意,在公鑰加密的情況下,攻擊者總是可以訪問公鑰 $ K_E $ 以及加密功能 $ E(K_E, \cdot) $ .