1. 程式人生 > >密碼學基礎概念(二)

密碼學基礎概念(二)

1.1密碼學的基本概念

1、什麼是密碼學

   密碼學是保密學的一部分。保密學是研究密碼系統或通訊安全的科學,它實際上包含兩個分支——密碼學和密碼分析學。密碼學是對資訊進行編碼實現隱蔽資訊的一門科學;而密碼分析學是研究分析如何破解密碼的學問。兩者相互獨立,又相互促進,正如病毒技術和反病毒技術一樣。

   採用密碼技術可以隱藏和保護需要保密的資訊,使未經授權者不能提取資訊。需要隱藏的訊息稱為“明文”;明文被變換成的另一種隱蔽的形式就是“密文”。這種變換稱為“加密”;加密的逆過程,即從密文恢復出對應的明文的過程稱為“解密”。對明文進行加密時採用的一組規則(函式)稱為“加密演算法”。對密文解密時使用的演算法稱為“解密演算法”。一般地,加密演算法和解密演算法都是在一組金鑰控制之下進行的,加密時使用的金鑰稱之為“加密金鑰”,解密時使用的金鑰稱之為“解密金鑰”。

2、密碼系統的分類

   密碼系統通常從3個獨立的方面進行分類:

   (1)按將明文轉換成密文的操作型別可以分為:置換密碼和易位密碼。

所有加密演算法都是建立在兩個通用的原則上的:置換和易位。置換是指將明文的每一個元素(位元、字母、位元或字母的組合)對映成其他的元素。如最古老的一種置換密碼是由Julius Caesar發明的凱撒密碼,這種密碼演算法是將明文中的每一個字母都用該字母后的第n個字母代替,其中n就是金鑰。顯然這種密碼體制中的金鑰空間只有26個金鑰,只要知道用的是凱撒密碼,破譯者只需嘗試25次,就可以知道正確的密碼了。

   易位是對明文的元素進行重新佈置,但並不隱藏它們,即明文中的所有字母都可以從密文中找到,只是位置不一樣。列易位密碼是一種常用的易位密碼。

   大多數實用的密碼演算法都是用了多級置換及易位。無論如何進行置換和易位,總之,沒有資訊丟失是最基本的要求,也就是說,所有的操作都應該是可逆的。

   (2)按照明文的處理方式可分為:分組密碼和序列密碼。

   分組密碼又稱為“塊密碼(block cipher)”,它每次處理一塊輸入元素,每個輸入塊生成一個輸出塊。序列密碼又稱為“流密碼(stream cipher),它對輸入元素進行連續處理,每次生成一個輸出塊。

   (3)按密碼體制中金鑰使用的個數可以分為:對稱密碼體制和非對稱密碼體制。

   如果加密操作和解密操作採用的是相同的金鑰,或者從一個金鑰易於得出另一個金鑰,這樣的系統就叫做“對稱密碼系統”,也稱為“金鑰密碼體制”。如果加密使用的金鑰和解密使用的金鑰不相同,且從一個金鑰難以推出另一個金鑰,這樣的密碼系統稱為“非對稱密碼系統”,也稱為“公鑰密碼體制”。

3、未來的密碼——量子密碼

   隨著物理學和資訊科學的發展與交融,研究人員發現:以微觀粒子作為資訊的載體,利用量子技術,可以解決許多傳統資訊理論無法處理或是難以處理的問題。“量子密碼”的概念就是在這種背景下提出的。

當前,量子密碼研究的核心內容,就是如何利用量子技術在量子通道上安全可靠地分配金鑰。在資訊保密中,金鑰的地位是舉足輕重的。但是,如何安全可靠、迅速高效地分配金鑰,一直是密碼學領域的一大難題。與傳統密碼學不同,量子密碼學利用物理學原理保護資訊。

   通常把以量子為資訊載體,經由量子通道傳送,在合法使用者之間建立共享的金鑰的方法,稱為量子金鑰分配(QKD),其安全性由“海森堡測不準原理”及“單量子不可複製定理”保證。“海森堡測不準原理”是量子力學的基本原理,它表明,在同一時刻以相同的精度測定量子的位置與動量是不可能的,只能精確測定兩者之一。“單量子不可複製定理”是“海森堡測不準原理”的推論,它表明,在不知道量子狀態的情況下複製單個量子是不可能的,因為要複製單個量子就只能先作測量,而測量必然改變數子的狀態,所以說不可能。量子的上述特性可以用來解決金鑰的分配問題,從而突破傳統資訊理論的束縛,設計出無條件安全的密碼。

1.2 密碼體制及其安全性

1.密碼體制與密碼函式

   1949年,Claude Shannon在《Bell System Technical Journal》上發表了題為《Communication Theory of Security System》的論文。這篇論文對密碼學的研究產生了巨大的影響。在這篇著作中對保密系統的執行做了如下的描述:

通訊雙方Alice和Bob通過一個安全通道進行相互協商,確定了一個共享的金鑰K 。

   Alice欲通過一個不安全的通道向Bob傳送明文資訊P;Alice使用鑰控加密演算法Ek( · )將明文P變換為密文C,C=Ek(P);Alice通過不安全的通道將密文C傳送給Bob。

   Bob使用鑰控解密演算法Dk( · )將密文C變換成明文P,P=Dk(C)。

   截聽者Eve在不安全的通道上截獲了密文C,他試圖進行攻擊(攻擊的方式有:被動攻擊,破解密文C,從而得到明文P或金鑰K;主動攻擊,即毀壞或篡改密文以達到破壞明文的目的)。

具體過程見下圖(圖1.2-1):


   以上所描述的五位一體 ( P,C,K,Ek( · ),Dk( · ) )就是一個密碼體制,其中Ek( · ),Dk( · )都是密碼函式。一般地說,資訊保安工程中的訊息加密方案和認證方案統稱為密碼體制,所使用的函式統稱為密碼函式。

   對於以上的例子,有如下4點需要說明:

   (1)Alice和Bob之間的安全通道通常是低速的,不能直接用於訊息傳遞,否則就沒有必要在不安全的通道上傳送加密資訊了。在安全通道上只能進行金鑰協商,而且不能太頻繁,這就是說安全通道的低速率使我們不能太頻繁的更換金鑰

   (2)作為訊息加密方案中使用的密碼函式,即加密演算法Ek( · )和解密演算法Dk( · )的設計必須滿足各種各樣的置亂功能。比如,當兩個金鑰K1和K2不相同時,Ek1( · )和Ek2( · )應該“差別很大”。又比如,當兩個明文P1和P2 “差別很小”時,它們對應的密文C1和C2應該“差別很大”;反之亦然。這些置亂功能統稱為“偽隨機性”。(注:作為認證方案中使用的某些密碼函式,需要一些與置亂功能恰恰相反的認證及糾錯功能。)

   (3)對函式密碼的另一個基本要求是穩定的安全性,當對手已經知道了一部分金鑰或一部分明文時,整個密碼體制不至於因此而立即崩潰。比如,金鑰是一個長度為n的位元串,且對手已經知道了其中的k個位元。如果密碼體制的安全性過分的依賴於這k 個位元,那就很危險了。反之如果金鑰中的n個位元對密碼的安全性的貢獻是平均的,則無論對手知道的是哪k 個位元,它所面對的破解難度是一樣的。特別地,如果密文獨立於金鑰中的任意k個位元(儘管n個位元的金鑰已經完全確定了密文),則這時對手無論得到的是哪k個位元,保密者仍能獲得良好的安全性。金鑰的這種性質稱為相關免疫性或彈性。

   (4)為了達到密碼演算法商業化的目的,人們通常假設鑰控加密演算法Ek( · )和鑰控解密演算法Dk( · )是可以公開的;因此要求密碼函式Ek( · )和Dk( · )的設計必須滿足“唯金鑰安全性”;這就是說,密文的保密性僅僅依賴於金鑰的保密性,而與演算法Ek( · )和Dk( · )的公開與否無關。

2.評價密碼體制安全性的量度

   簡單的說,一個密碼體制如果其生成的密文符合以下的兩個條件之一,則認為這種加密方案是安全的:

   ◆破解密文所用的成本超過了被加密資訊本身的價值;

   ◆破解密文所需的時間超過了資訊的有效期。

   但一般認為評價一個密碼體制的安全性有以下的三個準則:

  (1)計算安全性(Computational Security)

   這種度量涉及到攻破密碼體制所需的計算上的努力。如果使用最好的演算法攻破一個密碼體制需要至少N次操作,這裡的N是一個特定的非常大的數字,我們可以定義這個密碼體制是計算安全的。問題是沒有一個已知的實際的密碼體制在這個定義下可以被證明是計算安全的。實際中,人們經常通過幾種特定的攻擊型別來研究計算上的安全性,例如窮盡金鑰搜尋攻擊。當然對一種型別的攻擊是安全的,並不代表對其他型別的攻擊也是安全的。

  (2)可證明安全性(Provable Security)

   另外一種途徑是將密碼體制的安全性歸結為某個已經過深入研究的數學難題。例如可以證明這樣一類命題:如果給定的整數是不可分解的,那麼給定的密碼體制則是不可破解的。我們稱這種型別密碼體制是可證明安全性的。但應該注意的是,這種途徑只是說明了密碼體制的安全和另一個問題相關,而並未真正的證明這種密碼體制是安全的。這和證明一個問題是NP完全的(NP-Complete)類似:證明給定的問題和其它的NP完全問題的難度是一樣的,但並未完全證明這個問題的計算難度。

  (3)無條件安全性

   這種度量考慮的是對攻擊者Eve 的計算量沒有限制的時候的安全性。即使是提供了無窮的計算資源,也是無法破解的,這種密碼體制被定義為是無條件安全的。

3.密碼體制的安全性之一 —— 完善保密性

   完善保密性意味著明文隨機變數P和密文隨機變數C相互獨立。它的直觀含義是:當攻擊者不知道金鑰時,知道對應的密文對於估計明文沒有任何幫助。這是最強的安全概念。

   為了用數學語言描述密碼體制的完善保密性,以下假定明文P、密文C、金鑰K都是隨機變數;P( · )表示概率;P( · | · )表示條件概率;H( · )表示Shannon熵;H( · | · )表示Shannon條件熵;I(· ;· )表示互資訊。  由於

C=Ek(P) ; P=Dk(C)

   因此,(P,K)唯一確定了C,而(C,K)也唯一確定了P。用資訊理論的語言就是

   H(P | CK)=0 ;H(C | PK)=0  ―――――――――(1.1)

       義1.2-1. 我們稱密碼體制是完善保密的,如果 I(P ;C)=0  ―――――――――(1.2)

        定 理1.2-1. 完善保密的密碼體制必然有H(K)≥H(P)  ―――――――――(1.3)

證 明: 熵不等式如下所示

H(P)= H(P | C)+ I(P ; C)

       = H(P | C)           (∵ 式1.2)

       ≤ H(PK | C)

       = H(K | C) + H(P | CK)

       = H(K | C)          (∵ 式1.1)

       ≤ H(K)

∴定理1.2-1得證。

   關於完善保密性,有如下的註解:

   (1)定理1.2-1表明,完善保密的密碼體制其金鑰的不確定性要不小於明文訊息的不確定性,即H(K)≥H(P)。比如,當明文P是n位元長的均勻分佈隨機變數,為了達到完善保密,金鑰K的長度必須至少是n位元長;而且為了用n位元長的金鑰達到完善保密,金鑰也必須是均勻分佈的隨機變數。這意味著完善保密的密碼體制需要消耗大量的金鑰。

   (2)完善保密的密碼體制是存在的。比如,當明文P=(x1,x2,x3……xn)是n位元長的均勻分佈隨機變數,金鑰K=(k1,k2,k3……kn)也是n位元長的均勻分佈隨機變數,加密演算法為C=P⊕K,其中 ⊕ 為逐位元異或運算。由於 ⊕ 是群運算,故容易看出C是n位元長的均勻分佈隨機變數,且P和C相互獨立。

   (3)由概率統計和資訊理論的知識可以知道,為了實現保密性,通訊雙方必須在每一次傳遞祕密訊息時,所用的金鑰對於攻擊者來說都是完全未知的。這就是說,要傳遞一個新的訊息,必須首先更換金鑰。這種體制稱為“一次一密制”。

完善保密性的密碼體制的金鑰一般不能用於多次加密。比如在註解(2)的例子中,設兩個明文P1和P2都是n位元長的均勻分佈隨機變數,它們用同一個金鑰K進行加密,分別得到密文隨機變數C1=P1⊕K 和C2=P2⊕K。設P1、P2及K相互獨立,則容易得到:P1、P2、C1相互獨立;P1、P2、C2相互獨立。但由於P1⊕P2 ≡ C1⊕C2 ,故(C1,C2)與(P1,P2)不相互獨立。這說明在本例中,重複使用金鑰是得不到完善保密性的。

   (4)定理1.2-1引出這樣一個問題:對於明文隨機變數P,是否存在“最節省金鑰”的完善保密的密碼體制?即是否存在密碼函式Ek( · )和Dk( · ),使得H(K)=H(C)?這實際上是個編碼的問題,可以得出的基本結論是:在H(C)→∞的過程中,    總會有完善保密的密碼體制使得H(K)任意接近H(P)。

   總之,要想實現完善保密性,就必須時時更新金鑰;只要有時時更新的金鑰,就一定能實現完善保密性。

4.密碼體制的安全性之二 —— 計算安全性

   一個金鑰體制( P,C,K,Ek( · ),Dk( · ) ),如果破譯所需的代價太大而難以實現,這個密碼體制就稱為計算安全的。這裡的“代價”通常指計算的複雜度,有時也可以包括經濟代價。計算複雜度原本分為時間複雜度和空間複雜度,但由於平行計算技術的發展,在許多情況下可以進行時空轉變,故一般不再分為時空,而統稱為計算複雜度。計算安全性已經有了多種定義,在這些定義中分別使用了概率圖靈機、多項式時間確定性等概念。下面以RSA公鑰密碼體制作為例子來演示計算安全性。

設p、q是兩個大素數,n=p×q 。設e、d是兩個正整數,e×d≡1 mod (p-1)×(q-1)。設Alice、 Bob和Eve三人都知道(n ,e),只有Bob知道d,而無人知道(p ,q)。此處(n ,e)為Bob的公鑰,d為Bob的私鑰。當Alice欲向Bob傳送明文訊息P時,她計算密文

C ≡ Xe  mod  n

   並將密文C傳送給Bob;Bob計算明文

P ≡ Cd  mod  n

   此時Eve能夠攔截密文C,但由於不知道素分解n=p×q ,因此沒有有效的演算法有(n ,e)得到d,雖然(n ,e)唯一確定了d。這樣,Eve對明文P的估計近乎於盲目的隨機猜測。當然,如果知道素分解n=p×q ,由(p ,q ,e)得到d是很容易的,只需使用歐幾里德演算法和孫子定理。

5.完善保密性與計算安全性的比較

   完善保密性與計算安全性都是密碼體制安全性的重要指標,它們之間即相互獨立又有密切的關係,以下從不同的角度比較而這之間的關係:

  (1)計算安全性的安去強度弱於完善保密性。

  (2)從當前看,計算安全性比完善保密性要容易實現得多。具有計算安全性的密碼體制允許相同金鑰的重複使用,從而減少了金鑰協商所需的資訊量。

  (3)完善保密性的密碼體制,由於擁有源源不斷的更新金鑰,因此不需要精心的設計密碼函式,只需要簡單的群運算來加密和解密即可。具有計算安全性的密碼體制則不然,如果加密演算法是簡單的群運算C=P Z ,則K=P-1 C。這就是說,當Eve進行已知明文攻擊時,只需要一組明文/密文對(P ,C)就解出了金鑰。具有計算安全性的密碼體制要能抵制已知明文攻擊,即當Eve已知k組明文/密文對:(P1 ,C1)、(P2,C2)、……(Pn ,Cn)時,雖然有方程組

Cj=Ek(Xj),其中j=1~k

   可能已完全確定了金鑰K,但無法將K解出來。這意味著密碼函式Ek( · ),Dk( · )需要精心設計。

  (4)長期以來由於完善保密性難以實現,故人們在訊息保密方面的努力主要集中在計算保密上。近年來形勢漸漸有了變化,顯示出以下兩個特徵:①人類的計算能力越來越強,其中包括晶片技術的飛速發展和量子計算機的問世,這一切預示著“計算安全”似乎越來越不可靠。 ②大量有擾通道(比如衛星通道和廣播通道)的開通,使得通訊夥伴之間共享源源不斷的互資訊;只要使用訊息處理技術,將這些互資訊中對手已知的部分去掉,保留並協調對手未知的部分,通訊夥伴之間就獲得了源源不斷的金鑰流,因而實現了一次一密,達到“完善保密”。從這個觀點來看,完善保密性要比計算安全性優越。