分組密碼
在密碼學中,分組加密(英語:Block cipher),又稱分塊加密或塊密碼,是一種對稱密鑰算法。它將明文分成多個等長的模塊(block),使用確定的算法和對稱密鑰對每組分別加密解密。分組加密是極其重要的加密協議組成,其中典型的如AES和3DES作為美國政府核定的標準加密算法,應用領域從電子郵件加密到銀行交易轉帳,非常廣泛。
現代分組加密建立在迭代的思想上產生密文。其思想由克勞德·香農在他1949年的重要論文《保密系統的通信理論》(Communication Theory of Secrecy Systems)中提出,作為一種通過簡單操作如替代和排列等以有效改善保密性的方法。[1] 迭代產生的密文在每一輪加密中使用不同的子密鑰,而子密鑰生成自原始密鑰。
DES加密在1977年由前美國國家標準局(今「美國國家標準與技術研究所」)頒布,是現代分組加密設計的基礎思想。它同樣也影響了密碼分析的學術進展。
簡述
分組加密包含兩個成對的算法:加密算法E和解密算法D,兩者互為反函數。每個算法有兩個輸入:長度為n位的組,和長度為k位的密鑰;兩組輸入均生成n位輸出。將兩個算法看作函數,K表示長度為k的密鑰(密鑰長度),P表示長度為n的分組,P也被表示為明文,C表示密文,則滿足:
對於任意密鑰K,EK(P)是輸入的組的一個置換函數,且可逆地落在{0,1}n區間。E的反函數(解密算法)定義為:
例如,一個分組加密算法使用一段 128 位的分組作為明文,相應輸出 128 位的密文;而其轉換則受加密算法中第二個輸入的控制,也就是密鑰k。解密算法類似,使用 128 位的密文和對應的密鑰,得到原 128 位的明文。
- 每一個密鑰實際上是選擇了n位輸入排列的 種組合中的一種[2]。
大多數的分組密碼在在加密算法中會重複使用某一函數進行多輪運算,典型的輪數在4-32次之間,每一輪的函數R使用不同的子密鑰Ki,由原密鑰生成,作為輸入:
其中 是最初的明文, 是第i輪加密後的密文。
歷史
Lucifer一般被認為是第一個現代分組密碼,由IBM在1970年代基於霍斯特·費斯妥(Horst Feistel)的工作完成。它的一個修改版本是數據加密標準,被美國政府納入聯邦資料處理標準,並於1976年正式發布,至今仍被廣泛應用。
當時設計DES密碼的最初目的是為了抵抗某些美國國家安全局(NSA)和IBM知道的密碼分析方法,直到1980年代末期,這種被稱為差分密碼分析的方法才被畢漢姆(Eli Biham)和薩莫爾(Adi Shamir)獨立重新發現[3]。線性密碼分析是另一種方法,NSA在松井充發布這種實驗性的密碼分析方法[4]之前還並不知道。DES作為早期的分組密碼,最早成為密碼標準,由於在最初DES並未公布其實現細節,其S盒設計被懷疑包含後門,因此學界對其進行了大量的研究,提高了學界對分組密碼的了解,客觀上促進了密碼學及密碼分析的發展,引領了很多密碼學和密碼分析的研究。另一種分組密碼標準高級加密標準(AES)被美國國家標準與技術研究院(NIST)採納,即將逐漸取代DES目前的位置。
優缺點
設計原則
混淆與擴散(confusion and diffusion)是影響密碼安全的主要因素[5]。擴散的目的是讓明文中的單個數字影響密文中的多個數字,從而使明文的統計特徵在密文中消失,相當於明文的統計結構被擴散[6]。例如,最簡單的方法讓明文中的一個數字影響密文中的k個數字,可以用:
擾亂是指讓密鑰與密文的統計信息之間的關係變得複雜,從而增加通過統計方法進行攻擊的難度。擾亂可以通過各種代換算法實現。
設計安全的分組加密算法,需要考慮對現有密碼分析方法的抵抗,如差分分析、線性分析等,還需要考慮密碼安全強度的穩定性。此外,用軟件實現的分組加密要保證每個組的長度適合軟件編程(如8、16、32……),儘量避免位置換操作,以及使用加法、乘法、移位等處理器提供的標準指令;從硬件實現的角度,加密和解密要在同一個器件上都可以實現,即加密解密硬件實現的相似性[7]。
工作模式
參考文獻
- ^ Shannon, Claude. Communication Theory of Secrecy Systems (PDF). Bell System Technical Journal. 1949, 28 (4): 656–715 [2013-09-24]. (原始內容 (PDF)存檔於2007-06-05).
- ^ Matt Bishop. Introduction to Computer Security First Edition. Addison-Wesley Professional. 2004. ISBN 0321247442 (英語).
- ^ Eli Biham and Adi Shamir. Differential cryptanalysis of DES-like cryptosystems. Journal of Cryptology. 1991, 4 (1). doi:10.1007/BF00630563 (英語).
- ^ Mitsuru Matsui. The First Experimental Cryptanalysis of the Data Encryption Standard. CRYPTO. 1994. doi:10.1007/3-540-48658-5_1.
- ^ C.E. Shannon. Communication theory of secrecy systems.. Bell System Technology Journal. 1949, 28: 656-715 (英語).
- ^ 黃皓. 分组加密的原理 (PDF). 《計算機系統信息安全》課程講義. 南京大學. 2010年9月28日 [2011-07-29]. (原始內容存檔 (PDF)於2018-10-07) (中文).
- ^ 馮登國,吳文玲,張文濤. 《分组密码的设计与分析》 第二版. 清華大學出版社. 2009年. ISBN 9787302204602 (中文).