密碼系統
密碼系統
密碼系統,密碼學技術,保密通信是密碼技術的一個基本功能。。在通信系統中它可能是比特流,如文本、點陣圖、數字化的語音流或數字化的視頻圖像等 。
密碼技術的一個基本功能是實現保密通信,經典的保密通信模型
注意:僅用一個保密通信模型來完整描述密碼系統,可能是並不全面和準確的,因為密碼系統不單單隻提供信息的機密性服務。
保密通信是密碼技術的一個基本功能。
明文(Plaintext)
一般可以簡單地認為明文是有意義的字元或比特集,或通過某種公開的編碼標準就能獲得的消息。明文常用m或p表示。
密文(Ciphertext)
對明文施加某種偽裝或變換后的輸出,也可認為是不可直接理解的字元或比特集,密文常用c表示。
加密(Encrypt )
把原始的信息(明文)轉換為密文的信息變換過程。
解密(Decrypt)
把已加密的信息(密文)恢復成原始信息明文的過程,也稱為脫密。
密碼演演算法(Cryptography Algorithm)也簡稱密碼(Cipher),通常是指加、解密過程所使用的信息變換規則,是用於信息加密和解密的數學函數。
對明文進行加密時所採用的規則稱作加密演演算法,而對密文進行解密時所採用的規則稱作解密演演算法。加密演演算法和解密演演算法的操作通常都是在一組密鑰的控制下進行的。
密鑰(Secret Key )
密碼演演算法中的一個可變參數,通常是一組滿足一定條件的隨機序列。
用於加密演演算法的叫做加密密鑰,用於解密演演算法的叫做解密密鑰,加密密鑰和解密密鑰可能相同,也可能不相同。
密鑰常用k表示。在密鑰k的作用下,加密變換通常記為Ek(·),解密變換記為Dk(·)或Ek-1(·)。
系統組成
密碼系統
可以有如下幾個部分:
–消息空間M(又稱明文空間):所有可能明文m的集合;
–密文空間C:所有可能密文c的集合;
–密鑰空間K:所有可能密鑰k的集合,其中每一密鑰k由加密密鑰ke和解密密鑰kd組成,即k=(ke,kd);
–加密演演算法E:一簇由加密密鑰控制的、從M到C的加密變換;
–解密演演算法D: 一個由解密密鑰控制的、從C到M的解密變換。
五元組{ M,C,K,E,D }
對於明文空間M中的每一個明文m,加密演演算法E在加密密鑰ke的控制下將明文m加密成密文c;而解密演演算法D則在密鑰kd的控制下將密文c解密成同一明文m,即:
對m∈M,(ke,kd)∈K,有:Dkd(Eke(m))=m
從數學的角度來講,一個密碼系統就是一族映射,它在密鑰的控制下將明文空間中的每一個元素映射到密文空間上的某個元素。這族映射由密碼方案確定,具體使用哪一個映射由密鑰決定。
在上面通信模型中,還存在一個密碼攻擊者或破譯者可從普通通道上攔截到的密文c,其工作目標就是要在不知道密鑰k的情況下,試圖從密文c恢復出明文m或密鑰k。
如果密碼分析者可以僅由密文推出明文或密鑰,或者可以由明文和密文推出密鑰,那麼就稱該密碼系統是可破譯的。相反地,則稱該密碼系統不可破譯。
密碼分析者破譯或攻擊密碼的方法主要有窮舉攻擊法、統計分析法和數學分析攻擊法。
窮舉攻擊法
窮舉攻擊法又稱為強力或蠻力(Brute force)攻擊。這種攻擊方法是對截獲到的密文嘗試遍歷所有可能的密鑰,直到獲得了一種從密文到明文的可理解的轉換;或使用不變的密鑰對所有可能的明文加密直到得到與截獲到的密文一致為止。
統計分析法
統計分析攻擊就是指密碼分析者根據明文、密文和密鑰的統計規律來破譯密碼的方法。
數學分析法
數學分析攻擊是指密碼分析者針對加解密演演算法的數學基礎和某些密碼學特性,通過數學求解的方法來破譯密碼。數學分析攻擊是對基於數學難題的各種密碼演演算法的主要威脅。
在假設密碼分析者已知所用加密演演算法全部知識的情況下,根據密碼分析者對明文、密文等數據資源的掌握程度,可以將針對加密系統的密碼分析攻擊類型分為以下四種:
① 唯密文攻擊
(Ciphtext-only attack)
在惟密文攻擊中,密碼分析者不知道密碼演演算法,但僅能根據截獲的密文進行分析,以得出明文或密鑰。由於密碼分析者所能利用的數據資源僅為密文,這是對密碼分析者最不利的情況。
②已知明文攻擊
(Plaintext-known attack)
已知明文攻擊是指密碼分析者除了有截獲的密文外,還有一些已知的“明文—密文對”來破譯密碼。密碼分析者的任務目標是推出用來加密的密鑰或某種演演算法,這種演演算法可以對用該密鑰加密的任何新的消息進行解密。
③ 選擇明文攻擊
(Chosen-plaintext attack)
選擇明文攻擊是指密碼分析者不僅可得到一些“明文—密文對”,還可以選擇被加密的明文,並獲得相應的密文。這時密碼分析者能夠選擇特定的明文數據塊去加密,並比較明文和對應的密文,已分析和發現更多的與密鑰相關的信息。
密碼分析者的任務目標也是推出用來加密的密鑰或某種演演算法,該演演算法可以對用該密鑰加密的任何新的消息進行解密。
④ 選擇密文攻擊
(Chosen—ciphenext attack)
選擇密文攻擊是指密碼分析者可以選擇一些密文,並得到相應的明文。密碼分析者的任務目標是推出密鑰。這種密碼分析多用於攻擊公鑰密碼體制。
衡量密碼系統攻擊的複雜性主要考慮三個方面的因素:
數據複雜性
(Data Complexity)
用做密碼攻擊所需要輸入的數據量;
處理複雜性
(Processing Complexity)
完成攻擊所需要花費的時間;
存儲需求
(Storage Requirement)
進行攻擊所需要的數據存儲空間大小。
攻擊的複雜性取決於以上三個因素的最小複雜度,在實際實施攻擊時往往要考慮這三種複雜性的折衷,如存儲需求越大,攻擊可能越快。
安全因素
一個密碼系統的安全性主要與兩個方面的因素有關。
(1)一個是所使用密碼演演算法本身的保密強度。密碼演演算法的保密強度取決於密碼設計水平、破譯技術等。可以說一個密碼系統所使用密碼演演算法的保密強度是該系統安全性的技術保證。
(2)另外一個方面就是密碼演演算法之外的不安全因素。
因此,密碼演演算法的保密強度並不等價於密碼系統整體的安全性。—個密碼系統必須同時完善技術與管理要求,才能保證整個密碼系統的安全。本教材僅討論影響一個密碼系統安全性的技術因素,即密碼演演算法本身。
評估方法
評估密碼系統安全性主要有三種方法:
(1)無條件安全性
這種評價方法考慮的是假定攻擊者擁有無限的計算資源,但仍然無法破譯該密碼系統。
(2)計算安全性
這種方法是指使用最好的方法攻破它所需要的計算遠遠超出攻擊者的計算資源水平,則可以定義這個密碼體制是安全的。
(3)可證明安全性
這種方法是將密碼系統的安全性歸結為某個經過深入研究的數學難題(如大整數素因子分解、計算離散對數等),數學難題被證明求解困難。這種評估方法存在的問題是它只說明了這個密碼方法的安全性與某個困難問題相關,沒有完全證明問題本身的安全性,並給出它們的等價性證明。
對於實際應用中的密碼系統而言,由於至少存在一種破譯方法,即強力攻擊法,因此都不能滿足無條件安全性,只提供計算安全性。密碼系統要達到實際安全性,就要滿足以下準則:
(1)破譯該密碼系統的實際計算量(包括計算時間或費用)十分巨大,以致於在實際上是無法實現的。
(2)破譯該密碼系統所需要的計算時間超過被加密信息有用的生命周期。例如,戰爭中發起戰鬥攻擊的作戰命令只需要在戰鬥打響前需要保密;重要新聞消息在公開報道前需要保密的時間往往也只有幾個小時。
(3)破譯該密碼系統的費用超過被加密信息本身的價值。
如果一個密碼系統能夠滿足以上準則之一,就可以認為是滿足實際安全性的。
柯克霍夫斯(Kerckhoffs)原則
即使密碼系統中的演演算法為密碼分析者所知,也難以從截獲的密文推導出明文或密鑰。
也就是說,密碼體制的安全性僅應依賴於對密鑰的保密,而不應依賴於對演演算法的保密。
只有在假設攻擊者對密碼演演算法有充分的研究,並且擁有足夠的計算資源的情況下仍然安全的密碼才是安全的密碼系統。
一句話: “一切秘密寓於密鑰之中”
對於商用密碼系統而言,公開密碼演演算法的優點包括:
①有利於對密碼演演算法的安全性進行公開測試評估;
②防止密碼演演算法設計者在演演算法中隱藏後門;
③易於實現密碼演演算法的標準化;
④有利於使用密碼演演算法產品的規模化生產,實現低成本和高性能。
但是必須要指出的是,密碼設計的公開原則並不等於所有的密碼在應用時都一定要公開密碼演演算法。例如世界各國的軍政核心密碼就都不公開其加密演演算法。
綜上,一個提供機密性服務的密碼系統是實際可用的,必須滿足的基本要求:
①系統的保密性不依賴於對加密體制或演演算法的保密,而僅依賴於密鑰的安全性。 “一切秘密寓於密鑰之中”是密碼系統設計的一個重要原則。
②滿足實際安全性,使破譯者取得密文後在有效時間和成本範圍內,確定密鑰或相應明文在計算上是不可行的。
③加密和解密演演算法應適用於明文空間、密鑰空間中的所有元素。
④加密和解密演演算法能有效地計算,密碼系統易於實現和使用。