IND-CPA,IND-CCA1,IND-CCA2,EUF-CMA


評估密碼系統安全性主要有三種方法:

(1)無條件安全性
這種評價方法考慮的是假定攻擊者擁有無限的計算資源,但仍然無法破譯該密碼系統。
(2)計算安全性
這種方法是指使用目前最好的方法攻破它所需要的計算遠遠超出攻擊者的計算資源水平,則可以定義這個密碼體制是安全的。
(3)可證明安全性
這種方法是將密碼系統的安全性歸結為某個經過深入研究的數學難題(如大整數素因子分解、計算離散對數等),數學難題被證明求解困難。這種評估方法存在的問題是它只說明了這個密碼方法的安全性與某個困難問題相關,沒有完全證明問題本身的安全性,並給出它們的等價性證明。

實際安全性

對於實際應用中的密碼系統而言,由於至少存在一種破譯方法,即強力攻擊法,因此都不能滿足無條件安全性,只提供計算安全性。密碼系統要達到實際安全性,就要滿足以下准則:
(1)破譯該密碼系統的實際計算量(包括計算時間或費用)十分巨大,以致於在實際上是無法實現的。
(2)破譯該密碼系統所需要的計算時間超過被加密信息有用的生命周期。例如,戰爭中發起戰斗攻擊的作戰命令只需要在戰斗打響前需要保密;重要新聞消息在公開報道前需要保密的時間往往也只有幾個小時。
(3)破譯該密碼系統的費用超過被加密信息本身的價值。
如果一個密碼系統能夠滿足以上准則之一,就可以認為是滿足實際安全性的。

可證明安全性

3.1 可證明安全性體系的三大要素 

在可證明安全體系中,有三大要素:安全模型安全性定義困難性問題
安全模型分為安全目標和敵手能力。安全目標描述了安全模型要達到什么程度的安全,例如,對於加密算法的不可區分性(Indistinguishablity 簡稱 IND)、對於簽名算法的存在性不可偽造(Existable Unforgeble 簡稱 EU)等。

其中不可區分性(IND)也稱為語義安全(Semantic scurity),其定義如下。敵手即使獲得了密文,也不能得到其對應明文的任何信息,哪怕是 1bit 的信息。其形式化的表示方法為:已知 m0,m1以及 Cb=Enc(pk,mb),其中 m0是 m0或 m1中的任意一個,即 Cb是 m0、m1其中之一的密文,敵手無法有效判斷加密過程中 b 到底是 0 還是 1。

3.2 安全性定義 

刻畫敵手的能力,主要有四類,選擇明文攻擊(Chosen Plaintext Attacke 簡稱 CPA)、選擇密文攻擊(Chosen Ciphertext Attack 簡稱 CCA)、惟密文攻擊(Ciphertext-Only Attack)、已知明文攻擊(Known Plaintext Attack)。常用的刻畫敵手能力是前面兩類,選擇明文攻擊(CPA)是指由敵手選擇明文並且可以得到對應的密文選擇密文攻擊(CCA)是指敵手不僅可以選擇明文獲得密文,還能選擇有限次的密文,獲得對應的明文。CCA比 CPA 描述敵手的能力更強。

CPA 安全。我們把選擇明文攻擊(CPA)描述成一個游戲以方便我們更好的理解。首先聲明一點,這個游戲的目的是在選擇明文攻擊的前提下攻破系統的不可區分性(Indistinguishablity),所以下面簡稱這個游戲為 IND-CPA。其次,還要定義兩個角色挑戰者 C 和敵手 A。挑戰者(challenger)的任務相當裁判,主持游戲並且對敵手的行為進行反饋。敵手顧名思義,就是去攻擊當前系統,而且對於這個游戲來說是采用選擇明文攻擊的方法進行攻擊。游戲的描述如下: 

A. 初始化:挑戰者 C 創建 IND-CPA 系統,並且將公鑰發送給敵手 A。 

B. 敵手 A 選擇兩個長度相同的明文 m0,m1發送給挑戰者 C。挑戰者 C 隨機選擇 b∈{0,1},並將 mb加密記作 cb,然后將密文cb發送給敵手 A

C. 敵手 A 猜測挑戰者 C 上一步進行加密的明文是 m0還是 m1,並且將猜測結果輸出,輸出結果記為 b‘。若 b‘=b,那么敵手攻擊成功。

敵手攻擊的優勢可以定義為如下函數: 

 其中 w 是加密方案密鑰的長度。因為隨機猜測就有 1/2 的概率贏得 IND-CPA 游戲。所以

才是敵手經過努力得到的優勢。如果對任何多項式時間的敵手 A,存在一個可忽略的優勢σ,使得

 

那么就稱這個加密算法在選擇明文攻擊下具有不可區分性,或者稱為 IND-CPA 安全。

CPA(選擇明文攻擊)

敵手可以訪問到加密預言機

敵手選擇明文並且可以得到對應的密文

 

 

 

CCA(選擇密文攻擊)

敵手可以訪問到加密和解密預言機

敵手不僅可以選擇明文獲得密文,還能選擇有限次的密文,獲得對應的明文

 

 

 

CCA-1和CCA-2

CCA2 與 CCA1 只有一個區別,那就是在生成挑戰密文后,CCA2依然允許敵手進行解密詢問(限制是不能允許敵手詢問挑戰密文的解密詢問)

 

翻譯自:
https://crypto.stackexchange.com/questions/26689/easy-explanation-of-ind-security-notions

理想的加密方案E EE 是這樣的,對每一個密文C = E ( K , M ) C=E(K,M)C=E(K,M).如果對於對手來說,密鑰是不可見的,那么區分M MM 的概率是可忽略不計的。由於這在實踐中是不可能的,第二個最合理的方式是定義足夠強的限制來滿足一些安全的定義。IND-notation 根據一些攻擊游戲提供了這樣的定義,在游戲中,挑戰者保持它的密鑰,對手有一定的能力並且對手的目標是破壞整個加密系統。

通常來說,一個加密系統將會有密鑰生成算法K G KGKG,這將會生成一個密鑰對K E , K D K_E,K_DKE,KD,(用來加密的密鑰和用來解密的密鑰),還有一個加密算法和一個解密算法。

    • IND-CPA INDistinguishability under Chosen Plaintext Attack 選擇明文攻擊下的不可區分性。

      總的來說:對手生成兩個相同長度的明文信息,挑戰者隨機地決定加密其中一個,對手嘗試去猜測哪個信息被加密了。

      算法:

      1. 挑戰者:K E , K D = K G K_E,K_D=KGKE,KD=KG(安全參數)
      2. 對手:m 0 , m 1 m_0,m_1m0,m1= 選擇兩個相同長度的明文。發送m 0 , m 1 m_0,m_1m0,m1給挑戰者。在多項式時間內執行 額外的操作包括調用加密oracle
      3. 挑戰者:b bb=隨機選擇0或者1
      4. 挑戰者:C : = E ( K E , m b ) C:=E(K_E,m_b)C:=E(KE,mb) 發送C給對手
      5. 對手:在多項式時間內執行額外的操作,包括對加密oracle的調用。輸出猜測g u e s s guessguess
      6. 如果g u e s s = b guess=bguess=b 對手贏

      在這個場景中,主要引入的概念是多項式界。現在,我們對密碼的期望被減弱:從“贏得概率是可忽略不計的”,到“在一個合理的時間片中贏得概率是可忽略不計的”。對相同長度明文的限制是為了防止對手只是對比密文長度就能贏。然而,這種要求太弱,特別是因為它假設在對手和挑戰者之間只有單一的交互。

    • IND-CCA1: INDistinguishability under Chosen Ciphertext Attack

      總的來說:游戲的目標和IND-CPA是一樣的。對手有額外的能力:調用一個加密或者解密oracle。這意味着,對手可以在得到挑戰密文之前加密或者解密任意信息。基於IND-CPA游戲的基礎之上,引入了對敵手A的解密幫助

    • 互動的流程如下:

      1. 難題挑戰者首先生成難題的參數並發送給難題敵手,難題敵手偽裝成算法挑戰者,根據數學難題參數進一步構造算法的公鑰參數並發送給算法敵手;

      2. 算法敵手發起詢問,這個詢問根據不同的安全級別(選擇明文攻擊/選擇密文攻擊)包括密鑰生成詢問、加密詢問或解密詢問,包括難題敵手采用某些設計好的詭計返回詢問結果,這些詢問結果可能是真實的,可能是隨機,但算法敵手絕對分辨不出來;

      3. 算法敵手發起挑戰,發送兩段等長的明文給難題敵手,難題敵手隨機選擇其中一段明文,進行加密並返回給算法敵手;

      4. (可選,如果是針對自適應的攻擊就加上這個過程)算法敵手再次發起詢問,詢問內容和之前一樣;

      5. 算法敵手猜測密文加密的明文是哪一個,或者直接計算出明文是什么,隨后難題敵手利用算法的結果做出難題的解答,並最終返回給難題挑戰者。
      ————————————————
      版權聲明:本文為CSDN博主「辣油小餛飩」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
      原文鏈接:https://blog.csdn.net/MichaelJava/article/details/78112902

    •  

      算法:

      1. 挑戰者:K E , K D = K G K_E,K_D=KGKE,KD=KG(安全參數)
      2. 對手(多項式有界的次數):對任意明文或者密文分別調用加密或者解密oracle
      3. 對手:m 0 , m 1 m_0,m_1m0,m1= 選擇兩個相同長度的明文。發送m 0 , m 1 m_0,m_1m0,m1給挑戰者。在多項式時間內執行 額外的操作包括調用加密oracle
      4. 挑戰者:b bb=隨機選擇0或者1
      5. 挑戰者:C : = E ( K E , m b ) C:=E(K_E,m_b)C:=E(KE,mb) 發送C給對手
      6. 對手:在多項式時間內執行額外的操作。輸出猜測g u e s s guessguess
      7. 如果g u e s s = b guess=bguess=b 對手贏

      IND-CCA1考慮了重復交互的可能性,這意味着安全不會隨着時間的推移而減弱。

    • CCA1是午餐攻擊模型,因為午餐持續的時間短,所以敵手A沒有足夠的時間准備他需要提問的密文,當然這里准備的密文,攻擊者肯定是要想辦法構造與目標密文相關的密文,使得通過解密預言機之后可以得到與目標密文對應明文相關的明文。因此午餐時間敵手A提問的所有的密文都是午餐前准備的。
    •  午餐攻擊是一個非常受限的攻擊模型,敵手A只能在很短的時間內獲得提供給他的解密服務,就好像“午餐”以后解密盒被永久的關閉一樣。
    • IND-CCA2: INDistinguishability under adaptive Chosen Ciphertext Attack

      總的來說:除了IND-CCA1的能力以外,對手在收到C CC后可以訪問oracle,但是不可以發送C CC給解密oracle。

    •  在IND-CCA1的基礎上,去掉了只能在短時間內得到解密幫助這個不現實的條件,即在這個更強安全性的攻擊模型中,對敵手A的解密幫助在午餐攻擊前后都可以得到,我們去一個“美麗的”名字------凌晨攻擊。
    •  

      算法:

      1. 挑戰者:K E , K D = K G K_E,K_D=KGKE,KD=KG(安全參數)
      2. 對手(多項式有界的次數):對任意明文或者密文分別調用加密或者解密oracle
      3. 對手:m 0 , m 1 m_0,m_1m0,m1= 選擇兩個相同長度的明文。發送m 0 , m 1 m_0,m_1m0,m1給挑戰者。在多項式時間內執行 額外的操作包括調用加密oracle
      4. 挑戰者:b bb=隨機選擇0或者1
      5. 挑戰者:C : = E ( K E , m b ) C:=E(K_E,m_b)C:=E(KE,mb) 發送C給對手
      6. 對手:在多項式時間內執行額外的操作,包括對不同於C CC的密文的oracle的調用。輸出猜測g u e s s guessguess
      7. 如果g u e s s = b guess=bguess=b 對手贏

      IND-CCA2建議,在了解密文之后使用解密oracle在某些方案中具有合理的優勢,因為可以根據特定的密文定制對oracle的請求.

    • ​ 如果一個密碼系統能抵抗適應性選擇密文攻擊,那么他則可以抵抗其余幾種攻擊(非適應性選擇密文攻擊、適應性選擇明文攻擊、非適應性選擇明文攻擊、已知明文攻擊、唯密文攻擊)。

      ​ 目前普遍認為,任何新提出的公鑰加密算法都應該在適應性選擇密文攻擊下達到語義安全性,即IND-CCA2

    •  3.3 困難問題

      有了安全模型和安全性定義,通常使用規約到困難問題的方法來進行安全性證明。密碼學中常用的困難問題有離散對數困難問題(discrete logarithm problem,簡稱 DLP)、CDH 問題(Computational Diffie-Hellman) 、DDH 問題(Decisional Diffie-Hellman)以及 BDH 問題(Bilinear Diffie-Hellman)。 

      3.4 可證明安全性理論 

      有了前面敘述了安全模型,安全性定義,困難性問題,可證有了前面敘述了安全模型,安全性定義,困難性問題,可證明安全體系也變得可行。可證明安全性是指利用“規約”的方法,將攻擊密碼算法或安全協議的方法規約到一個攻擊困難問題上。首先確定加密體制的安全目標,如簽名體制的安全目標是簽名的不可偽造性(Existable Unforgeble),加密體制的安全目標是信息的不可區分性(Indistinguishablity)。然后根據安全性定義確定敵手的能力構建一個安全性模型。

      規約是復雜性理論中的概念, 一個問題P1規約到問題P2是指,已知解決問題 P1的算法 M1,我們能構造另一算法 M2,M2可以以 M1作為子程序,用來解決問題 P2。

      將規約的方法應用在密碼算法或安全協議的安全性證明上,例如,可以將敵手對密碼算法或安全協議(P1)的攻擊規約到一些已經得到深入研究的困難問題(P2)。即若敵手能夠對算法或協議發起有效的攻擊,就可以利用敵手構建一個算法來攻破困難問題,然而困難問題是已經被證明無法攻破的,這樣就出現矛盾。根據反證法,敵手可以攻破算法或協議假設不成立,證明完畢。

      一般來說,為了證明方案 1 的安全性,我們可以將方案 1 規約到方案 2,即如果敵手 A 可以攻破方案 1,那么敵手 B 同樣也可以攻擊方案 2,而方案 2 已經被證明是安全的,或者是一個難題。

      證明過程通過一個思維游戲來描述。首先,挑戰者創建方案2,B 表示方案 2 中的敵手,A 表示方案 1 中的敵手。B 為了攻破方案 2,利用 A 作為子程序來攻擊方案 1。B 想要利用 A,就需要對 A 進行訓練,所以 B 模擬了 A 的挑戰者。

      例如,如果要對加密算法進行安全性證明,那么方案 1 就是具 體 的 加 密 算 法 。 假 設 安 全 目 標 是 信 息 的 不 可 區 分 性(Indistinguishablity),敵手 A 的能力是可以選擇明文攻擊,即 CPA。敵手 B 模擬敵手 A 的挑戰者,與 A 進行 IND-CPA 游戲。在游戲過程中,B 為了實現自己的目的利用 A。如果 A 無法判斷自己是與 B 還是與挑戰者做游戲,那么稱 B 的模擬是完備的。 

      對於其他加密算法或加密協議,我們必須首先確定它想要實現的安全目標,例如簽名方案的不可偽造性,然后根據安全性定義確定敵手的能力構建一個安全性模型,再把對加密算法或加密協議的攻擊規約到已被證明的困難問題上。 這就是可證明安全性。

      結語:可證明安全性理論是密碼學理論與計算復雜性理論的一次完美結合,也是現代密碼學的基石。在過去的 30 年終,現代密碼學最大的突破就是把密碼學體系建立在計算復雜理論上,這使得密碼學從一門藝術發展成為一門嚴謹的學科。

    • 簽名體制的語義安全性(EUF-CMA)
      對於數字簽名體制,存在以下幾種偽造類型

      完全攻破:攻擊者能夠產生與私鑰持有者相同的簽名,這相當於恢復出了私鑰
      選擇性偽造:攻擊者能夠偽造一個他選擇的消息簽名
      存在性偽造:攻擊者能夠偽造一個消息的簽名,這個消息可能僅僅是一個隨機比特串
      簽名體制的語義安全性,由不可偽造(Existential Unforgeability)游戲(簡稱EUF游戲)來刻畫

       

       

      ————————————————

      版權聲明:本文為CSDN博主「hhh_2333」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
      原文鏈接:https://blog.csdn.net/qq_36291381/article/details/106805123


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM