密碼系統的安全性

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

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

2,實際安全性

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

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。ui

3.2 安全性定義

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

下面介紹一下經常使用的安全性定義。
spa

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

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

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

C. 敵手 A 猜想挑戰者 C 上一步進行加密的明文是 m0仍是 m1,而且將猜想結果輸出,輸出結果記爲 b‘。若 b‘=b,那麼敵手攻擊成功。生命週期

敵手攻擊的優點能夠定義爲以下函數: 

 其中 w 是加密方案密鑰的長度。由於隨機猜想就有 1/2 的機率贏得 IND-CPA 遊戲。因此

纔是敵手通過努力獲得的優點。若是對任何多項式時間的敵手 A,存在一個可忽略的優點σ,使得

 

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

 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 年終,現代密碼學最大的突破就是把密碼學體系創建在計算複雜理論上,這使得密碼學從一門藝術發展成爲一門嚴謹的學科。

 

https://blog.csdn.net/wangtingyao1990/article/details/79475842?utm_source=blogxgwz5

《淺談現代密碼學與可證實安全性理論 》--劉言培

相關文章
相關標籤/搜索