密碼系統的安全性

2021-10-23 01:28:22 字數 3890 閱讀 2857

(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 安全。

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

密碼安全性檢查

要求 安全級別低 密碼由單純數字或字母組成 密碼長度小於等於8位 安全級別中 密碼由數字,字母,特殊字元任意兩種組合,密碼長度不低於8位 安全級別高 密碼由數字,字母及特殊字元三種組合,開頭只能為字母。密碼長度不低於16位 str.isdigit 當字串只包含數字返回true str.isalpha...

密碼演算法安全性列表

密碼演算法安全性列表 業界已知不安全演算法 對稱演算法 des在所有場景下都不安全。對稱演算法 3des在金鑰長度256以下,k1 k2 k3時不安全。對稱演算法 skipjack和rc2在所有場景下都不安全。對稱演算法 rc4和blowfish當金鑰長度128以下時,不安全。非對稱演算法 rsa在...

Go 檢測密碼強度(密碼安全性)

目錄 密碼強度 解決方案 走讀 在涉及修改密碼的場景中,密碼強度 也稱密碼安全性 校驗是繞不開的話題。乙個密碼的安全性除了與密碼長度相關外,也與密碼所採用的字元種類有關。在不考慮密碼長度的情況下,密碼強度通常分為以下五類 由高到低排序 密碼強度 說明示例 s密碼中必須存在特殊字元 大小寫字母和數字 ...