分組密碼是將明文消息編碼表示后的數(shù)字(簡稱明文數(shù)字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數(shù)字(簡稱密文數(shù)字)序列。
基本簡介
研究歷史
現(xiàn)代分組密碼的研究始于20世紀(jì)70年代中期,至今已有40余年歷史,這期間人們在這一研究領(lǐng)域已經(jīng)取得了豐碩的研究成果。
對于分組密碼,在早期的研究,基本上是圍繞DES進行的,推出了一些類似的算法,例如:LOKI,F(xiàn)EAL,GOST等。進入20世紀(jì)90年代,人們對DES算法研究更加深入,IntelliJ IDEA密碼打破了DES類密碼的壟斷局面,隨后出現(xiàn)了SQUARE、Shark、SAFER-64等采用了結(jié)構(gòu)非常清晰的代替—置換(SP)網(wǎng)絡(luò),從理論上給出了最大差分特征概率和最佳線性逼近優(yōu)勢的界,證明了密碼對差分密碼分析和線性密碼分析的安全性。
AES的征集掀起了分組密碼研究的新高潮,15個AES候選算法反映了當(dāng)前分組密碼設(shè)計的水平,也可以說是近幾年研究成果的一個匯總。
目前分組密碼所采用的整體結(jié)構(gòu)可分為Feistel結(jié)構(gòu)(例如CAST—256、DEAL、DFC、E2等)、SP網(wǎng)絡(luò)(例如等)及其他密碼結(jié)構(gòu)(例如Frog和HPC)。加解密相似是Feistel型密碼的一個實現(xiàn)優(yōu)點,但它在密碼的擴散似乎有些慢,例如需要兩輪才能改變輸入的每一個比特。SP的網(wǎng)絡(luò)結(jié)構(gòu)非常清晰,S一般被稱為混淆層,主要起混淆作用。P一般被稱為擴散層,主要起擴散作用。在明確S和P的某些密碼指標(biāo)后,設(shè)計者能估計SP型密碼抵抗差分密碼分析和線性密碼分析的能力。SP網(wǎng)絡(luò)和Feistel網(wǎng)絡(luò)相比,可以得到更快速的擴散,但是SP密碼的加/解密通常不相似。
分組密碼是現(xiàn)代密碼學(xué)中的一個重要研究分支,其誕生和發(fā)展有著廣泛的實用背景和重要的理論價值。目前這一領(lǐng)域還有許多理論和實際問題有待繼續(xù)研究和完善。這些問題包括:如何設(shè)計可證明安全的密碼算法;如何加強現(xiàn)有算法及其工作模式的安全性;如何測試密碼算法的安全性;如何設(shè)計安全的密碼組件,例如S—盒、擴散層及密鑰擴散算法等。
研究內(nèi)容
大體上,分組密碼的研究包括三方面:分組密碼的設(shè)計原理,分組密碼的安全性分析和分組密碼的統(tǒng)計性能測試。
設(shè)計分析
分組密碼的設(shè)計與分析是兩個既相互對立又相互依存的研究方向,正是由于這種對立促進了分組密碼的飛速發(fā)展。早期的研究基本上是圍繞DES進行,推出了許多類似于DES的密碼,例如,LOKI、FEAL、GOST等。進入90年代,人們對DES類密碼的研究更加深入,特別是差分密碼分析(differential 密碼分析)和線性密碼分析(linear cryptanalysis)的提出,迫使人們不得不研究新的密碼結(jié)構(gòu)。IntelliJ IDEA密碼的出現(xiàn)打破了DES類密碼的壟斷局面,IDEA密碼的設(shè)計思想是混合使用來自不同代數(shù)群中的運算。隨后出現(xiàn)的Square、Shark和Safer-64都采用了結(jié)構(gòu)非常清晰的代替-置換(SP)網(wǎng)絡(luò),每一輪由混淆層和擴散層組成。這種結(jié)構(gòu)的最大優(yōu)點是能夠從理論上給出最大差分特征概率和最佳線性逼近優(yōu)勢的界,也就是密碼對差分密碼分析和線性密碼分析是可證明安全的。
設(shè)計原則
擴散(diffusion)和擾亂(confusion)是影響密碼安全的主要因素。擴散的目的是讓明文中的單個數(shù)字影響密文中的多個數(shù)字,從而使明文的統(tǒng)計特征在密文中消失,相當(dāng)于明文的統(tǒng)計結(jié)構(gòu)被擴散。例如,最簡單的方法讓明文中的一個數(shù)字影響密文中的k個數(shù)字,可以用:
擾亂是指讓密鑰與密文的統(tǒng)計信息之間的關(guān)系變得復(fù)雜,從而增加通過統(tǒng)計方法進行攻擊的難度。擾亂可以通過各種代換算法實現(xiàn)。
設(shè)計安全的分組加密算法,需要考慮對現(xiàn)有密碼分析方法的抵抗,如差分分析、線性分析等,還需要考慮密碼安全強度的穩(wěn)定性。此外,用軟件實現(xiàn)的分組加密要保證每個組的長度適合軟件編程(如),盡量避免位置換操作,以及使用加法、乘法、移位等處理器提供的標(biāo)準(zhǔn)指令;從硬件實現(xiàn)的角度,加密和解密要在同一個器件上都可以實現(xiàn),即加密解密硬件實現(xiàn)的相似性。
AES征集
AES的征集掀起了分組密碼研究的新高潮,15個AES候選算法反映了當(dāng)前分組密碼設(shè)計的水平,可以說是近幾年研究成果的一個總匯。分組密碼所采用的整體結(jié)構(gòu)可分為Feistel結(jié)構(gòu)(如CAST-256、DEAL、DFC/E2等)、SP網(wǎng)絡(luò)(如等)及其他密碼結(jié)構(gòu)(如Frog和HPC)。Feistel結(jié)構(gòu)由于DES的公布而廣為人知,已被許多分組密碼所采用。Feistel結(jié)構(gòu)的最大優(yōu)點是容易保證加解密相似,這一點在實現(xiàn)中尤其重要。而SP網(wǎng)絡(luò)比較難做到這一點,但是SP網(wǎng)絡(luò)的擴散特性比較好。在現(xiàn)有的分組密碼中,所有的基本運算有異或、加、減、查表、乘及數(shù)據(jù)依賴循環(huán)等。查表運算提供了DES的安全基礎(chǔ),仔細(xì)地選擇S-盒能較好地抗擊線性和差分密碼分析,提供好的數(shù)據(jù)及密鑰比特的雪崩特性。不過,S-盒需要一些存儲器,所以S-盒的規(guī)模不能太大。15個AES候選算法所采用的S-盒規(guī)模有6種,分別是。S-盒的另一中稱呼是黑盒子,它常給人造成故意設(shè)置陷阱的嫌疑,因此,Safer+等選取公開的數(shù)學(xué)函數(shù),避免嫌疑。S-盒的設(shè)計與分析是分組密碼設(shè)計中的重要環(huán)節(jié),它的好壞直接影響密碼體制的安全性,對S-盒的設(shè)計并沒有一個完備的要求,但總的希望是增強S-盒的非線性度、差分均勻性及分量函數(shù)的代數(shù)次數(shù)和項數(shù)。
對分組密碼安全性的討論主要包括差分密碼分析、線性密碼分析和強力攻擊等。從理論上講,差分密碼分析和線性密碼分析是目前攻擊分組密碼的最有效的方法,而從實際上說,強力攻擊是攻擊分組密碼最可靠的方法。到目前為止,已有大量文獻討論各種分組密碼的安全性。自AES候選算法公布以后,國內(nèi)外許多專家都致力于候選算法的安全性分析,預(yù)計將會推出一些新的攻擊方法,這無疑將進一步推動分組密碼的發(fā)展。
與序列密碼每次加密處理數(shù)據(jù)流的一位或一個字節(jié)不同,分組密碼處理的單位是一組明文,即將明文消息編碼后的數(shù)字序列劃分成長為L位的組,各個長為L的分組分別在密鑰(密鑰長為t)的控制下變換成與明文組等長的一組密文輸出數(shù)字序列。L通常為。分組密碼的模型如圖2.3所示。
設(shè)明文m與密文c均為二進制0、1數(shù)字序列,它們的每一個分量,,則明文空間為,密文空間也為,分組密碼是由密鑰確定的一個一一映射,也就是空間,到自身的一個置換F,由于置換F是由密鑰k所確定,一般地,我們把這個置換表示為。
算法要求
分組密碼算法實際上就是密鑰控制下,通過某個置換來實現(xiàn)對明文分組的加密變換。為了保證密碼算法的安全強度,對密碼算法的要求如下。
分組長度足夠大
當(dāng)分組長度較小時,分組密碼類似于古典的代替密碼,它仍然保留了明文的統(tǒng)計信息,這種統(tǒng)計信息將給攻擊者留下可乘之機,攻擊者可以有效地窮舉明文空間,得到密碼變換本身。
密鑰量足夠大
分組密碼的密鑰所確定密碼變換只是所有置換中極小一部分。如果這一部分足夠小,攻擊者可以有效地窮舉明文空間所確定所有的置換。這時,攻擊者就可以對密文進行解密,以得到有意義的明文。
密碼變換足夠復(fù)雜
使攻擊者除了窮舉法以外,找不到其他快捷的破譯方法。
技術(shù)總結(jié)
優(yōu)點
明文信息良好的擴展性,對插入的敏感性,不需要密鑰同步,較強的適用性,適合作為加密標(biāo)準(zhǔn)。
缺點
加密速度慢,錯誤擴散和傳播。
分組密碼將定長的明文塊轉(zhuǎn)換成等長的密文,這一過程在秘鑰的控制之下。使用逆向變換和同一密鑰來實現(xiàn)解密。對于當(dāng)前的許多分組密碼,分組大小是 64 位,但這很可能會增加。
明文消息通常要比特定的分組大小長得多,而且使用不同的技術(shù)或操作方式。這樣的方式示例有:電子編碼本(ECB)、密碼分組鏈接(CBC)或密碼反饋(CFB)。ECB 使用同一個密鑰簡單地將每個明文塊一個接一個地進行加密;在 CBC 方式中,每個明文塊在加密前先與前一密文塊進行“異或”運算,從而增加了復(fù)雜程度,可以使某些攻擊更難以實施。 “輸出反饋”方式(OFB)類似 CBC 方式,但是進行“異或”的量是獨立生成的。 CBC 受到廣泛使用,例如在實現(xiàn)中,而且在有關(guān)密碼術(shù)的技術(shù)性方面的相應(yīng)書籍中深入討論了各種方式。請注意:您自己建立的 密碼系統(tǒng)的普遍弱點就是以簡單的形式來使用某些公開的算法,而不是以提供了額外保護的特定方式使用。
迭代的分組密碼是那些其加密過程有多次循環(huán)的密碼,因此提高了安全性。在每個循環(huán)中,可以通過使用特殊的函數(shù)從初始秘鑰派生出的子密鑰來應(yīng)用適當(dāng)?shù)淖儞Q。該附加的計算需求必然會影響可以管理加密的速度,因此在安全性需要和執(zhí)行速度之間存在著一種平衡。天下沒有免費的午餐,密碼術(shù)也是如此;與其它地方一樣,應(yīng)用適當(dāng)方法的技巧中有一部分是源于對需要進行的權(quán)衡以及它們與需求平衡的關(guān)系如何的理解。
分組密碼包括DES、IDEA、SAFER、Blowfish和 Skipjack — 最后一個是“美國國家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法。
參考資料 >