版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2.1分組密碼的設(shè)計準則2.2數(shù)據(jù)加密標準——DES2.3高級數(shù)據(jù)加密標準——AES2.4國際數(shù)據(jù)加密標準——IDEA*2.5RC5算法2.6分組密碼的安全性及工作模式習題分組密碼是指對固定長度的一組明文進行加密的一種加密算法,這一固定長度稱之為分組長度。分組長度是分組密碼的一個參數(shù),其值取決于實際應(yīng)用的環(huán)境。對于通過計算機來實現(xiàn)的分組密碼算法,通常選取的分組長度為64位。這是一個折中的選擇,考慮到分組算法的安全性,分組長度不能太短,應(yīng)該保證加密算法能夠應(yīng)付密碼分析;考慮到分組密碼的實
用性,分組程度又不能太長,要便于操作和運算。近年來,隨著計算機計算能力的不斷提高,分組長度為64位的分組密碼的安全性越來越不能滿足實際需要,為了提高加密的安全性,很多的分組密碼開始選擇128位作為算法的分組長度。2.1分組密碼的設(shè)計準則分組密碼的加密過程是對一個分組長度為n位的明文分組進行加密操作,相應(yīng)地產(chǎn)生一個n位的密文分組,由此可見,不同的n位明文分組共有2n個??紤]到加密算法的可逆性(即保證解密過程的可行性),每一個不同的n位明文分組都應(yīng)該產(chǎn)生一個惟一的密文分組,加密過程對應(yīng)的變換被稱為可逆變換或非奇異變換。所以,分組密碼算法從本質(zhì)上來說是定義了一種從分組的明文到相應(yīng)的密文的可逆變換。分組密碼是現(xiàn)代密碼學的重要組成部分,當前被廣泛使用的分組加密算法幾乎都是基于Feistel分組密碼的結(jié)構(gòu)而設(shè)計的。為了對具有代表性的分組密碼——DES(DataEncryptionStandard)算法、AES(AdvancedEncryptionStandard)算法和IDEA(InternationalDataEncryptionAlgorithm)算法進行深入研究和分析,我們首先介紹Feistel分組密碼的基本結(jié)構(gòu)和設(shè)計準則。2.1.1Feistel分組密碼的基本結(jié)構(gòu)
Feistel分組密碼結(jié)構(gòu)是基于1949年Shannon提出的交替使用代換和置換方式構(gòu)造密碼體制的設(shè)想提出的。在設(shè)計密碼體制的過程中,Shannon提出了能夠破壞對密碼系統(tǒng)進行各種統(tǒng)計分析攻擊的兩個基本操作:擴散(Diffusion)和混淆(Confusion)。擴散的目的是使明文和密文之間的統(tǒng)計關(guān)系變得盡可能復雜;混淆的目的是使密文和密鑰之間的統(tǒng)計關(guān)系變得盡可能復雜。為了使攻擊者無法得到密鑰,在擴散過程中,明文的統(tǒng)計信息被擴散到密文的更長的統(tǒng)計信息中,使得每一個密文數(shù)字與許多明文數(shù)字相關(guān),從而使密文的統(tǒng)計信息與明文之間的統(tǒng)計關(guān)系盡量復雜,以至于密文的統(tǒng)計信息對于攻擊者來說是無法利用的;在混淆過程中,密文的統(tǒng)計信息與加密密鑰的取值之間的關(guān)系會盡量復雜,以至于攻擊者很難從中推測出加密密鑰。擴散和混淆給出了分組密碼應(yīng)具有的本質(zhì)特性,成為分組密碼設(shè)計的基礎(chǔ)。
Feistel分組密碼的基本結(jié)構(gòu)如圖2-1所示。加密算法的初始輸入是一個長度為2L位的明文分組序列和一個初始密鑰K,在加密之前先將分組的明文序列等分成長度均為L的L0和R0兩部分。加密過程分為n輪進行,其中第i輪以第i-1輪輸出的Li-1和Ri-1作為輸入,此外第i輪加密過程的輸入還包括從初始密鑰K產(chǎn)生的子密鑰Ki。第i輪的加密過程由兩步操作實現(xiàn):第一步先對Ri-1使用輪函數(shù)F和子密鑰Ki進行變換,將變換結(jié)果與Li-1再進行異或運算,運算結(jié)果作為Ri;第二步將Ri-1直接作為Li得到第i輪的輸出值。最終將加密過程的輸出序列Ln和Rn組合起來產(chǎn)生相應(yīng)的長度是2L位的密文。圖2-1Feistel分組密碼的基本結(jié)構(gòu)在每一輪加密過程中,第一步操作是一個代換過程,第二步操作是一個置換過程,通過“代換-置換”這兩步操作實現(xiàn)了Shannon提出的擴散和混淆的目的。根據(jù)圖2-1所示的Feistel分組密碼的基本結(jié)構(gòu)可知,F(xiàn)eistel型分組密碼的安全性取決于以下幾個方面:
(1)明文消息和密文消息的分組大?。涸谄渌麠l件相同的情況下,每一輪加密的分組長度越大,加密算法的安全性就越高,而相應(yīng)的加密速度也越慢,效率越低。目前常用的分組加密算法的分組長度取64位。
(2)子密鑰的大小:算法的安全性隨著子密鑰長度的增加而提高,但是相應(yīng)的加密速度會降低,所以設(shè)計分組密碼時需要在安全性和加密效率之間進行平衡。在實際應(yīng)用中,一般認為,要保證分組加密算法滿足計算安全性,子密鑰的長度至少要大于128位。
(3)循環(huán)次數(shù):循環(huán)越多安全性越高,相應(yīng)的加密效率也就越低。
(4)子密鑰產(chǎn)生算法:在初始密鑰給定的情況下,產(chǎn)生子密鑰的算法越復雜,加密算法的安全性越高。
(5)輪函數(shù)F:對于輪函數(shù)的討論相對較復雜,一般認為,輪函數(shù)F越復雜,對應(yīng)的加密算法的安全性越高。
Feistel分組密碼的解密過程與加密過程是相同的。解密過程將密文作為算法的輸入,同時按照與加密過程相反的次序使用子密鑰對密文序列進行“加密”,即第1輪使用Kn,第2輪使用Kn-1,依此類推,最后一輪使用K1,進行相同次數(shù)“加密”,“加密”的結(jié)果就得到相應(yīng)的明文序列。2.1.2F函數(shù)的設(shè)計準則
Feistel分組密碼的核心是輪函數(shù)F。輪函數(shù)F在Feistel分組密碼算法中的作用是對消息序列進行混淆操作。為了保證這樣的混淆操作的安全性,設(shè)計輪函數(shù)F的一個基本準則是要求F是非線性的。F的非線性程度越強,則算法的安全性能越高,相應(yīng)的攻擊難度也就越大。S—盒是F函數(shù)的重要組成部分,S—盒的設(shè)計問題一直是人們關(guān)注的重點。對于S—盒的設(shè)計,基本要求是希望S—盒輸入序列的任何變動都使得輸出序列產(chǎn)生看似隨機的變動,并且這兩種變動之間的關(guān)系應(yīng)該是非線性的??紤]到加密算法應(yīng)該具有良好的“雪崩效應(yīng)”,也就是說,輸入消息序列一個位的值發(fā)生改變,相應(yīng)的輸出序列應(yīng)該產(chǎn)生多個位的值變化。設(shè)計的F函數(shù)應(yīng)該滿足嚴格雪崩準則(StrictAvalancheCriterion,SAC),這個準則的具體內(nèi)容是:對于任意的i、j,當任何一個輸入位i發(fā)生改變時,S—盒的任何輸出位j的值發(fā)生改變的概率為1/2。雖然以上準則是對S—盒的設(shè)計提出的,但是由于S—盒是F函數(shù)的重要組成部分,因此該準則的要求也可以作為F函數(shù)的設(shè)計要求。設(shè)計F函數(shù)還應(yīng)滿足的一個準則是位獨立準則(BitIndependenceCriterion,BIG),這個準則的具體內(nèi)容是:對于任意的i、j、k,當任何一個輸入位i發(fā)生改變時,輸出位j和k的值應(yīng)該獨立地發(fā)生改變。
S—盒的設(shè)計除了要滿足以上討論的SAC和BIC準則外,還應(yīng)該滿足的一個條件是保證雪崩準則(GuaranteedAvalancheCriterion,GAC),這個準則的具體內(nèi)容是:一個好的S—盒應(yīng)該滿足階的GA(GuaranteedAvalanche),也就是說對于輸入序列中1位的值發(fā)生改變,輸出序列中至少有位的值發(fā)生改變。一般要求的值介于2~5之間。當然除了以上要求,關(guān)于F函數(shù)和S—盒的設(shè)計還有其他很多的建議和要求。這些要求和建議都是為了改進F函數(shù)和S—盒的非線性和隨機性,從而增強分組密碼算法的安全性。
DES(DataEncryptionStandard)算法是最為廣泛使用的一種分組密碼算法。DES對推動密碼理論的發(fā)展和應(yīng)用起了重大的作用。學習DES算法對于掌握分組密碼的基本理論、設(shè)計思想和實際應(yīng)用都有重要的參考價值。
1972年美國商業(yè)部所屬的美國國家標準局(NationalBureauofStandards,NBS)開始實施計算機數(shù)據(jù)保護標準的開發(fā)計劃。
1973年5月13日,美國國家標準局發(fā)布文告征集在傳輸和存儲數(shù)據(jù)中保護計算機數(shù)據(jù)的密碼算法。
1975年3月17日,首次公布DES算法描述,并認真地進行公開討論。
2.2數(shù)據(jù)加密標準——DES
1977年1月15日,正式批準DES為無密級應(yīng)用的加密標準(FIPS—46)。
以后每隔5年美國國家安全局對其安全性進行一次評估,以便確定是否繼續(xù)使用它作為加密標準。在1994年1月的評估后決定1998年12月以后不再將DES作為加密標準。2.2.1DES的描述
DES是一個分組加密算法,它以64位為分組對數(shù)據(jù)進行加密。64位的分組明文序列作為加密算法的輸入,經(jīng)過16輪加密得到64位的密文序列。加密密鑰的長度為56位(注:密鑰通常表示為64位的數(shù),但每個第8位都用作奇偶校驗位,可以忽略),密鑰可以是任意的56位的數(shù),其中極少量的56位數(shù)被認為是弱密鑰。為了保證加密的安全性,在加密過程中應(yīng)該盡量避開使用這些弱密鑰。
DES對64位的明文分組進行操作。首先通過一個初始置換IP,將64位的明文分成各32位長的左半部分和右半部分,該初始置換只在16輪加密過程進行之前進行一次,在接下來的輪加密過程中不再進行該置換操作。在經(jīng)過初始置換操作后,對得到的64位序列進行16輪加密運算,這些運算被稱為函數(shù)f,在運算過程中,輸入數(shù)據(jù)與密鑰結(jié)合。經(jīng)過16輪加密后,左、右半部分合在一起得到一個64位的輸出序列,該序列再經(jīng)過一個末尾置換IP-1(初始置換的逆置換)獲得最終的密文(具體加密流程見圖2-2)。圖2-2DES加密流程圖在每一輪加密過程中,函數(shù)f的運算包括以下四個部分:首先進行密鑰序列移位,從移位后的56位密鑰序列中選出48位(該部分采用一個壓縮置換實現(xiàn));其次通過一個擴展置換將輸入序列32位的右半部分擴展成48位后與48位的輪密鑰進行異或運算;第三部分通過8個S-盒將異或運算后獲得的48位序列替代成一個32位的序列;最后對32位的序列應(yīng)用P—盒進行置換變換得到f的32位輸出序列。將函數(shù)f的輸出與輸入序列的左半部分進行異或運算后的結(jié)果作為新一輪加密過程輸入序列的右半部分,當前輸入序列的右半部分作為新一輪加密過程輸入序列的左半部分。上述過程重復操作16次,便實現(xiàn)了DES的16輪加密運算。
假設(shè)Bi是第i輪計算的結(jié)果,則Bi為一個64位的序列,Li和Ri分別是Bi的左半部分和右半部分,Ki是第i輪的48位密鑰,且f是實現(xiàn)代換、置換及密鑰異或等運算的函數(shù),那么每一輪加密的具體過程為
以上操作的詳細過程如圖2-3所示。圖2-3一輪DES加密過程下面對DES加密過程中包含的基本操作進行詳細說明。
(1)初始置換(InitialPermutation,IP置換)。初始置換在第一輪運算之前執(zhí)行,對輸入分組實施如表2-1所示的IP置換。例如:表2-1表示該IP置換把輸入序列的第58位置換到輸出序列的第1位,把輸入序列的第50位置換到輸出序列的第2位,依此類推。
(2)密鑰置換。DES加密算法輸入的初始密鑰大小為8個字節(jié),由于每個字節(jié)的第8位用來作為初始密鑰的校驗位,因此加密算法的初始密鑰不考慮每個字節(jié)的第8位,DES的初始密鑰實際對應(yīng)一個56位的序列,每個字節(jié)的第8位作為奇偶校驗以確保密鑰不發(fā)生錯誤。首先對初始密鑰進行如表2-2所示的置換操作。DES的每一輪加密過程從56位密鑰中產(chǎn)生出不同的48位子密鑰(Subkey),這些子密鑰Ki通過以下方法產(chǎn)生。首先將56位密鑰等分成兩部分,每部分的長度為28位。然后根據(jù)加密輪數(shù),這兩部分密鑰分別循環(huán)左移1位或2位。表2-3給出了對應(yīng)不同輪數(shù)產(chǎn)生子密鑰時具體循環(huán)左移的位數(shù)。對兩個28位的密鑰循環(huán)左移以后,通過如表2-4所示的壓縮置換(CompressionPermutation,也稱為置換選擇)從56位密鑰中選出48位作為當前加密的輪密鑰。表2-4給出的壓縮置換不僅置換了56位密鑰序列的順序,同時也選擇出了一個48位的子密鑰,因為該運算提供了一組48位的數(shù)字集。例如,56位的密鑰中位于第33位密鑰數(shù)字對應(yīng)輸出到48位輪密鑰的第35位,而56位的密鑰中位于第18位的密鑰數(shù)字在輸出的48位輪密鑰中將不會出現(xiàn)。以上產(chǎn)生輪密鑰的過程中,由于每一次進行壓縮置換之前都包含一個循環(huán)移位操作,因此產(chǎn)生每一個子密鑰時,使用了不同的初始密鑰子集。雖然初始密鑰的所有位在子密鑰中使用的次數(shù)并不完全相同,但在產(chǎn)生的16個48位的子密鑰中,初始密鑰的每一位大約會被14個子密鑰使用。
(3)擴展變換(ExpansionPermutation,也稱為E—盒)。擴展變換將64位輸入序列的右半部分Ri從32位擴展到48位。擴展變換不僅改變了Ri中32位輸入序列的次序,而且重復了某些位。這個操作有以下三個基本的目的:一方面,經(jīng)過擴展變換可以應(yīng)用32位的輸入序列產(chǎn)生一個與輪密鑰長度相同的48位的序列,從而實現(xiàn)與輪密鑰的異或運算;另一方面,擴展變換針對32位的輸入序列提供了一個48位的結(jié)果,使得在接下來的替代運算中能進行壓縮,從而達到更好的安全性;同時,由于輸入序列的每一位將影響到兩個替換,因此輸出序列對輸入序列的依賴性將傳播得更快,體現(xiàn)出良好的“雪崩效應(yīng)”。所以,該操作有助于設(shè)計的DES算法盡可能快地使密文的每一位依賴于明文和密鑰的每一位。表2-5給出了擴展變換中輸出位與輸入位的對應(yīng)關(guān)系。例如,處于輸入分組中第3位的數(shù)據(jù)對應(yīng)輸出序列的第4位,而輸入分組中第21位的數(shù)據(jù)則分別對應(yīng)輸出序列的第30位和第32位。在擴展變換過程中,每一個輸出分組的長度都大于輸入分組,而且該過程對于不同的輸入分組都會產(chǎn)生惟一的輸出分組。
(4)S—盒替代(SboxesSubstitution)。每一輪加密的48位的輪密鑰與擴展后的分組序列進行異或運算以后,得到一個48位的結(jié)果序列,接下來應(yīng)用S—盒對該序列進行替代運算。替代由8個代替盒(Substitutionboxes,S—盒),每一個S—盒對應(yīng)6位的輸入序列,得到相應(yīng)的4位輸出序列。在DES算法中,這8個S—盒是不同的(DES的這8個S—盒占的存儲空間為256字節(jié))。48位的輸入被分為8個6位的分組,每一分組對應(yīng)一個S—盒替代操作:分組1由S—盒1操作,分組2由S—盒2操作,依此類推(見圖2-4)。圖2-4S—盒替代
DES算法中,每個S—盒對應(yīng)一個4行、16列的表,表中的每一項都是一個十六進制的數(shù),相應(yīng)的對應(yīng)一個4位的序列。表2-6列出了所有8個S—盒。輸入序列以一種非常特殊的方式對應(yīng)S—盒中的某一項,通過S—盒的6個位輸入確定了其對應(yīng)的輸出序列所在的行和列的值。假定將S—盒的6位的輸入標記為b1、b2、b3、b4、b5、b6。則b1和b6組合構(gòu)成了一個2位的序列,該2位的序列對應(yīng)一個介于0~3的十進制數(shù)字,該數(shù)字即表示輸出序列在對應(yīng)的S—盒中所處的行;輸入序列中b2到b5構(gòu)成了一個4位的序列,該4位的序列對應(yīng)一個介于0~15的十進制數(shù)字,該數(shù)字即表示輸出序列在對應(yīng)的S—盒中所處的列,根據(jù)行和列的值可以確定相應(yīng)的輸出序列。
例2.1
假設(shè)對應(yīng)第6個S—盒的輸入序列為110011。第1位和最后一位組合構(gòu)成的序列為11,對應(yīng)的十進制數(shù)字為3,說明對應(yīng)的輸出序列位于S—盒的第3行;中間的4位組合構(gòu)成的序列為1001,對應(yīng)的十進制數(shù)字為9,說明對應(yīng)的輸出序列位于S—盒的第9列。第6個S—盒的第3行第9列處的數(shù)是14(注意:行、列的記數(shù)均從0開始,而不是從1開始),14對應(yīng)的二進制為1110,對應(yīng)輸入序列110011的輸出序列為1110。
S—盒的設(shè)計是DES分組加密算法的關(guān)鍵步驟,因為在DES算法中,所有其他的運算都是線性的,易于分析,而S—盒是非線性運算,它比DES的其他任何操作能提供更好的安全性。運用S—盒的替代過程的結(jié)果為8個4位的分組序列,它們重新合在一起形成了一個32位的分組。對這個分組進行下一步操作:P—盒置換。
(5)P—盒置換(P-boxesPermutation)。經(jīng)S—盒代替運算后的32位輸出依照P—盒(Permutationboxes)進行置換。該置換對32位的輸入序列進行一次置換操作,把每個輸入位映射到相應(yīng)的輸出位,任一位不能被映射兩次,也不能被略去。表2-7給出了P—盒置換的具體操作。例如,輸入序列的第21位置換到輸出序列的第4位,而輸入序列的第4位被置換到輸出序列的第31位。將P—盒置換的結(jié)果與該輪輸入的64位分組的左半部分進行異或運算后,得到本輪加密輸出序列的右半部分,本輪加密輸入序列的右半部分直接輸出,作為本輪加密輸出序列的左半部分,相應(yīng)得到64位的輸出序列。
(6)逆初始置換(InverseInitialPermutation)。逆初始置換是初始置換的逆過程,也稱為末尾置換,表2-8列出了逆初始置換IP-1的具體操作。需要說明的是,DES在16輪加密過程中,左半部分和右半部分并沒有進行交換位置的操作,而是將R16與L16并在一起形成一個分組作為逆初始置換的輸入。這樣做保證了DES算法加密和解密過程的一致性。初始置換IP和對應(yīng)的逆初始置換IP-1操作并不會增強DES算法的安全性,它們的主要目的是為了更容易地將明文和密文數(shù)據(jù)以字節(jié)大小放入DES芯片中。
(7)DES解密。DES算法的加密過程經(jīng)過了多次的替代、置換、異或和循環(huán)移動操作,整個加密過程似乎非常復雜。實際上,DES算法經(jīng)過精心選擇各種操作而獲得了一個非常好的性質(zhì):加密和解密可使用相同的算法,即解密過程是將密文作為輸入序列進行相應(yīng)的DES加密,與加密過程惟一不同之處是解密過程使用的輪密鑰與加密過程使用的次序相反。如果加密過程中各輪的子密鑰分別是K1,K2,K3,…,K16,那么解密過程中相應(yīng)的解密子密鑰分別是K16,K15,K14,…,K1。因此解密過程產(chǎn)生各輪子密鑰的算法與加密過程生成輪密鑰的算法相同,與加密過程不同的是解密過程產(chǎn)生子密鑰時,初始密鑰進行循環(huán)右移操作,每產(chǎn)生一個子密鑰,對應(yīng)的初始密鑰移動位數(shù)分別為0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。這樣就可以根據(jù)初始密鑰生成加密和解密過程所需的各輪子密鑰。
例2.2
已知明文m=computer,密鑰k=program,相應(yīng)的ASC
II碼表示為
m=01100011011011110110110101110000
01110101011101000110010101110010
k=01110000011100100110111101100111
011100100110000101101101
其中k只有56位,必須加入第8,16,24,32,40,48,56,64位的奇偶校驗位構(gòu)成64位。其實加入的8位奇偶校驗位對加密過程不會產(chǎn)生影響。令m=m1m2…m63m64,k=k1k2…k63k64,其中m1=0,m2=1,…,m63=1,m64=0,k1=0,k2=1,…,k63=1,k64=0。
m經(jīng)過IP置換后得到
L0=11111111101110000111011001010111
R0=00000000111111110000011010000011
密鑰k經(jīng)過置換后得到
C0=1110110010011001000110111011
D0=1011010001011000100011100110
循環(huán)左移一位后得到48位的子密鑰k1:
k1=001111011000111111001101
001101110011111101001000
R0經(jīng)過擴展變換得到的48位序列為
100000000001011111111110
100000001101010000000110
結(jié)果再和k1進行異或運算,得到的結(jié)果為
101111011001100000110011
101101111110101101001110
將得到的結(jié)果分成8組:
101111011001100000110011
101101111110101101001110通過8個S—盒得到32位的序列為
01110110001101000010011010100001
對S—盒的輸出序列進行P—置換,得到
01000100001000001001111010011111
經(jīng)過以上操作,得到經(jīng)過第1輪加密的結(jié)果序列為
00000000111111110000011010000011
10111011100110001110100011001000
以上加密過程進行16輪,最終得到加密的密文為
01011000101010000100000110111000
01101001111111101010111000110011
需要說明的是,DES的加密結(jié)果可以看做是明文m和密鑰k之間的一種復雜函數(shù),所以對應(yīng)明文或密鑰的微小改變,產(chǎn)生的密文序列都將會發(fā)生很大的變化。2.2.2DES的分析
自從被采用作為聯(lián)邦數(shù)據(jù)加密標準以來,DES遭到了猛烈的批評和懷疑。首先是DES的密鑰長度是56位,很多人擔心這樣的密鑰長度不足以抵御窮舉式搜索攻擊;其次是DES的內(nèi)部結(jié)構(gòu)即S—盒的設(shè)計標準是保密的,這樣使用者無法確信DES的內(nèi)部結(jié)構(gòu)不存在任何潛在的弱點。
事實上,后來的實踐表明DES的S—盒被精心設(shè)計成能夠防止諸如差分分析方法類型的攻擊。另外,DES的初始方案——IBM的Lucifer密碼體制具有128位的密鑰長度,DES的最初方案也有64位的密鑰長度,但是后來公布的DES算法將其減少到56位。IBM聲稱減少的原因是必須在密鑰中包含8位奇偶校驗位,這意味著64位的存儲只能包含一個56位的密鑰。
許多密碼體制都存在著弱密鑰,DES也存在這樣的弱密鑰和半弱密鑰。如果DES的密鑰k產(chǎn)生的子密鑰滿足
k1=k2=…=k16
則有
這樣的密鑰k稱為DES算法的弱密鑰。
DES的弱密鑰有以下四種:
k=0101010101010101
k=1F1F1F1F0E0E0E0E
k=E0E0E0E0F1F1F1F1
k=FEFEFEFEFEFEFEFE如果DES的密鑰k和k′滿足
則稱密鑰k和k′是DES算法的一對半弱密鑰。
DES的半弱密鑰有以下六對:以上0表示二值序列0000,1表示二值序列0001,E表示二值序列1110,F(xiàn)表示二值序列1111。對于DES的攻擊,最有意義的方法是差分分析方法。差分分析方法最初是由IBM的設(shè)計小組在1974年提出的,所以IBM在設(shè)計DES算法的S—盒和換位變換時有意識地避免差分分析攻擊,使得DES能夠抵抗差分分析攻擊。1991年,Biham和Shamir提出了針對選擇明文攻擊的差分分析方法,可以攻擊很多分組密碼。差分分析方法需要帶有某種特性的明文和相應(yīng)的密文之間的比較,攻擊者尋找明文對應(yīng)的某種差分的密文對,這些差分中的一部分會有較高的重現(xiàn)概率。差分分析方法用這種特征來計算可能的密鑰概率,最后可以確定出最可能的密鑰。但是由于DES的S—盒在設(shè)計階段就進行了優(yōu)化,因此它能夠有效抵御差分分析攻擊。
DES加密的輪數(shù)對安全性也有較大的影響。如果DES只進行8輪加密過程,則在普通的個人電腦上只需要幾分鐘就可以破譯密碼。如果DES加密過程進行16輪,應(yīng)用差分分析攻擊比窮舉式搜索攻擊稍微有效一些。然而如果DES加密過程進行18輪,則差分分析攻擊和窮舉式搜索攻擊的效率基本一樣。如果DES加密過程進行19輪,則窮舉式搜索攻擊的效率還要優(yōu)于差分分析攻擊的效率。
隨著計算機硬件技術(shù)的飛速發(fā)展,DES的安全性越來越受到人們的懷疑。為了提高DES加密算法的安全性,人們一直在研究改進DES算法安全性能的方法,下面介紹較為基本的幾種針對DES算法的改進方法。改進方法一
設(shè)明文消息x長度比較大,將其分為64位一組的結(jié)果表示如下
x=x1‖x2‖x3‖…‖xn
相應(yīng)的密文序列y表示為
y=y1‖y2‖y3‖…‖yn
其中,yi=DESk(xi),i=1,2,…,n。
在以上加密過程中,當明文序列的結(jié)構(gòu)有一定的固定格式時,相應(yīng)的密文序列也會表現(xiàn)出一定的規(guī)律性,從而導致加密算法不安全。對該問題可以采用分組反饋的方法進行改進。對明文分組xi,i=2,3,…,n進行加密前,先將明文分組消息和前一組加密的密文分組序列yi-1進行異或運算,然后對運算的結(jié)果序列再進行加密操作,即
相應(yīng)的解密過程為
以上改進方法由于采用了密文反饋的方式進行加密,當明文序列的結(jié)構(gòu)有一定的固定格式時,相應(yīng)的密文序列表現(xiàn)出的規(guī)律性會被隱藏,從而能有效改進加密算法的安全性。
改進方法二
由于DES算法的密鑰長度只有56位,因此安全性較差。最簡單的改進算法安全性的方法是應(yīng)用不同的密鑰對同一個分組消息進行多次加密,由此產(chǎn)生了多重DES加密算法。2.2.3多重DES
1.雙重DES
最簡單的雙重DES加密過程是采用兩個不同的密鑰分兩步對明文分組消息進行加密。給定一個明文分組x和兩個加密密鑰K1和K2,相應(yīng)的密文消息y由下式得到:
相應(yīng)的解密過程為
相比于傳統(tǒng)的DES算法,以上改進方案的密鑰長度變?yōu)?28位,因此算法的安全性有一定的改進。下面對雙重DES加密方法進行安全性分析。假設(shè)對DES以及所有的56位的密鑰值,給定任意的兩個密鑰K1和K2,如果都可以得到一個密鑰K3使得
成立,那么雙重DES的兩次加密甚至包括任意多次加密對于算法的安全性來說都沒有實質(zhì)性的意義,因為得到的加密結(jié)果都等于DES算法使用一個56位的密鑰進行一次加密的結(jié)果??蓪ES加密算法看做是從64位的分組消息序列到另一個64位消息序列的一個映射,考慮到加密/解密結(jié)果的惟一性,這個映射應(yīng)是一個置換。對于所有可能的264個明文消息分組序列,用一個特定的密鑰進行DES加密就是把每個分組映射為另一個惟一的64位的消息序列。那么對于264個明文消息分組序列,產(chǎn)生一個置換的不同映射的個數(shù)為
264!=10347380000000000000000
另一方面,DES的每一個密鑰都可以定義一個映射,因此由56位的密鑰可以定義的映射個數(shù)為
256<<264!通過以上分析可知,如果使用DES算法對消息序列進行兩次加密,每次使用不同的密鑰,那么產(chǎn)生的映射不是單次使用DES算法定義的一種映射。這說明雙重DES加密算法的密鑰空間要大于DES算法,所以其安全性優(yōu)于DES算法。
2.三重DES
在眾多的多重DES算法中,由Tuchman提出的三重DES算法是一種被廣泛接受的改進方法。在該加密算法中,加密過程用兩個不同的密鑰K1和K2對一個分組消息進行3次DES加密。首先使用第一個密鑰進行DES加密,然后使用第二個密鑰對第一次的結(jié)果進行DES解密,最后再使用第一個密鑰對第二次的結(jié)果進行DES加密。解密過程首先使用第一個密鑰進行DES解密,然后使用第二個密鑰對第一次的結(jié)果進行DES加密,最后再使用第一個密鑰對第二次的結(jié)果進行DES解密。
以上這種加密模式稱為加密-解密-加密(EDE)模式。DES算法的密鑰長度是56位,所以三重DES算法的密鑰長度是112位。使用兩個密鑰的三重DES是一種較受歡迎的改進算法,目前已經(jīng)被用于密鑰管理標準ANSX9.17和ISO87322中。隨著密碼破譯技術(shù)和計算機硬件技術(shù)的飛速發(fā)展,雖然到目前為止還沒有一種非常有效的攻擊算法能夠完全破譯DES加密算法,但是考慮到人們對加密算法安全性的擔憂,對于DES算法的改進工作從1997年就開始公開進行了。
2.3高級數(shù)據(jù)加密標準——AES
1997年4月15日,美國國家標準技術(shù)研究所(NIST)發(fā)起了征集DES的替代算法——AES(AdvancedEncryptionStandard)算法的活動。1997年9月12日,NIST發(fā)布了征集算法的正式公告和具體細節(jié),要求AES比三重DES快,至少與三重DES一樣安全,具有128位的分組長度,能夠支持128、192和256位的密鑰長度,同時要求AES要能夠在全世界范圍內(nèi)免費使用。1998年8月20日,NIST在“第一次AES候選大會”上公布了滿足條件的15個AES的候選算法。1998年8月,NIST從這15個候選算法中選出了5個AES的候選算法,分別是MARS、RC6、Rijndael、Serpent、Twofish。到2000年10月2日,NIST正式宣布Rijndael被選擇為高級數(shù)據(jù)加密標準,該算法是由兩位比利時人Daemen和Rijmen提出的。2.3.1AES的描述
AES也是一個典型的迭代型分組密碼,而且其分組長度和密鑰長度都可變,分組長度和密鑰長度可以獨立地指定為128位、192位和256位?,F(xiàn)在被采用的AES算法的加密輪數(shù)依賴于所選擇的子密鑰長度。對于選擇128位的密鑰長度,加密的輪數(shù)為10;對于選擇192位的密鑰長度,加密的輪數(shù)為12;對于選擇256位的密鑰長度,加密的輪數(shù)為14。對于128位的消息分組,AES加密算法的執(zhí)行過程描述如下:
(1)輸入長度為128位的分組明文x,將其按照一定的規(guī)則賦值給消息矩陣State,然后將對應(yīng)的輪密鑰矩陣Roundkey與消息矩陣State進行異或運算AddRoundkey(State,Roundkey)。
(2)在加密算法的前N-1輪中,每一輪加密先對消息x應(yīng)用S—盒進行一次字節(jié)代換操作,稱為ByteSubs(State);對消息矩陣State做行移位操作,稱為ShiftRows(State);然后對消息矩陣State進行列混合操作,稱為MixColumns(State);最后再與輪密鑰Roundkey進行密鑰異或運算AddRoundkey(State,Roundkey)。
(3)對前N-1輪加密的結(jié)果消息矩陣State再依次進行ByteSubs(State)、ShiftRows(State)和AddRoundkey(State,Roundkey)操作。
(4)將輸出的結(jié)果消息矩陣State定義為密文y。其中AddRoundkey(State,Roundkey)、ByteSubs(State)、ShiftRows(State)和MixColumns(State)也被稱為AES算法的內(nèi)部函數(shù)。
AES中的操作都是以字節(jié)為對象的,操作所用到的變量是由一定數(shù)量的字節(jié)構(gòu)成的。輸入的明文消息x長度是128位,將其表示為16個字節(jié)x0,x1,…,x15,初始化消息矩陣State如下:
函數(shù)ByteSubs(State)對State的每一個字節(jié)進行一個非線性代換,任一個非零字節(jié)x∈被下面的變換所代替:
y=Ax-1+b
(2-1)其中
上述變換的非線性性質(zhì)來自于逆x-1,如果將該變換直接作用于變量x,那么該變換就是一個線性變換。另外,由于常數(shù)矩陣A是一個可逆矩陣,因此函數(shù)ByteSubs(State)是可逆的。
上面給出的AES算法中ByteSubs(State)操作相當于DES算法中S—盒的作用。該代換矩陣也可以看做是AES算法的“S—盒”。實際上,函數(shù)ByteSubs(State)對State中每一個字節(jié)進行的非線性代換與下表給出的AES算法的“S—盒”對x進行代換的結(jié)果是等價的。
下面對表2-9給出的對應(yīng)關(guān)系的有效性進行簡單的驗證。設(shè)x-1=00001001,將其轉(zhuǎn)換成兩個十六進制的數(shù)字形式為x-1=09,通過表2-9給出的對應(yīng)關(guān)系可知,與x對應(yīng)的y=01。這個對應(yīng)關(guān)系如果按照公式(2-1)進行計算,相應(yīng)的過程為將其轉(zhuǎn)換成兩個十六進制的數(shù)字形式為y=01??梢园l(fā)現(xiàn)兩種方法的結(jié)果是一致的。
函數(shù)ShiftRows(State)在消息矩陣State的每行上進行操作。對于128位的分組長度,它進行以下變換:這個函數(shù)的運算結(jié)果實際上是對State進行一個簡單的換位操作,它重排了元素的位置而不改變元素本身的值。所以函數(shù)ShiftRows(State)也是可逆的。
函數(shù)MixColumns(State)對State的每一列進行操作。以下只描述該函數(shù)對一列進行操作的詳細過程。
首先取當前的消息矩陣State中的一列,定義為
把這一列表示成一個三次多項式S(x)=S3x3+S2x2+S1x+S0
其中S(x)的系數(shù)是字節(jié),所以多項式定義在上。列S(x)上的運算定義為:將多項式S(x)乘以一個固定的3次多項式C(x),然后和多項式x4+1進行取模運算。具體如下:S(x)·C(x)mod(x4+1)
(2-2)其中C(x)=C3x3+C2x2+C1x+C0C(x)的系數(shù)也是中的元素。公式(2-2)中的乘法和一個4次多項式進行取模運算的目的是為了使運算結(jié)果輸出一個3次多項式,從而保證獲得一個從一列(對應(yīng)一個3次多項式)到一列(對應(yīng)另一個3次多項式)的變換,這個變換在本質(zhì)上是一個使用已知密鑰的代換密碼。同時,由于上的多項式C(x)與x4+1是互素的,因此C(x)在中關(guān)于x4+1的逆C-1(x)mod(x4+1)存在,所以公式
(2-2)的乘法運算是可逆的。函數(shù)AddRoundkey(State,Roundkey)將Roundkey和State中的元素逐字節(jié)、逐位地進行異或運算。其中Roundkey使用一個固定的密鑰編排方案產(chǎn)生,每一輪的Roundkey是不同的。
接下來討論AES的密鑰編排方案。對于需要進行N輪加密的AES算法,共需要N+1個子密鑰。下面以128位的種子密鑰為例,給出產(chǎn)生11個輪密鑰的方法。由于密鑰編排算法是以字為基礎(chǔ)(每個字包含32位),因此每一個輪密鑰由4個字組成,11個輪密鑰共包含44個字,在此表示為w[0],w[1],…,w[43]。具體算法步驟如下:
(1)初始化:
RCon[1]=01000000
RCon[2]=02000000
RCon[3]=04000000
RCon[4]=08000000
RCon[5]=10000000
RCon[6]=20000000
RCon[7]=40000000
RCon[8]=80000000
RCon[9]=1B000000
RCon[10]=36000000
(2)當0≤i≤3時,
w[i]=(key[4i],key[4i+1],key[4i+2],key[4i+3])
(3)當4≤i≤43且i=0mod4時,
w[i]=w[i-4]⊕w[i-1]
(4)當4≤i≤43且i≠0mod4時,
w[i]=w[i-4]⊕(SubWord(RotWord(w[i-1]))⊕RCon[i/4])
其中,步驟4中操作RotWord(B0,B1,B2,B3)對四個字節(jié)(B0,B1,B2,B3)進行循環(huán)移位操作:
RotWord(B0,B1,B2,B3)=(B1,B2,B3,B0)
操作SubWord(B0,B1,B2,B3)對四個字節(jié)(B0,B1,B2,B3)進
行置換操作:
其中,以上是AES算法的整個加密過程。與DES算法相同的是,AES算法的解密也是加密的逆過程,由于AES算法的內(nèi)部函數(shù)都是可逆的,因此解密過程僅僅是將密文作為初始輸入,按照輪子密鑰相反的方向?qū)斎氲拿芪脑龠M行加密的過程,該過程加密的最終結(jié)果就可以恢復出相應(yīng)的明文。2.3.2AES的分析在AES算法中,每一輪加密常數(shù)的不同可以消除可能產(chǎn)生的輪密鑰的對稱性,同時,輪密鑰生成算法的非線性性質(zhì)消除了產(chǎn)生相同輪密鑰的可能性。加/解密過程中使用不同的變換可以避免出現(xiàn)類似DES算法中出現(xiàn)的弱密鑰和半弱密鑰的可能。經(jīng)過驗證,目前采用的AES加/解密算法能夠有效抵御已知的針對DES的所有攻擊方法,如部分差分攻擊、相關(guān)密鑰攻擊等。到目前為止,公開報道中對于AES算法所能采取的最有效的攻擊方法只能是窮舉式搜索攻擊,所以AES算法是安全的。2.4國際數(shù)據(jù)加密標準——IDEA
IDEA(InternationalDataEncryptionAlgorithm)是由瑞士聯(lián)邦理工學院的中國學者來學嘉和著名密碼學家JamesMassey于1990年提出的一種對稱分組密碼,經(jīng)修改后于1992年最后完成。
IDEA是一個分組長度為64位的分組密碼,它的密鑰長度是128位,加密過程共進行8輪。IDEA算法的加密過程如圖2-5所示。應(yīng)注意的是,IDEA的加密結(jié)構(gòu)沒有采用傳統(tǒng)的Feistel分組密碼結(jié)構(gòu)。圖2-5IDEA加密流程根據(jù)IDEA算法的加密流程可知,64位的明文消息被分成4個16位的子分組:X1、X2、X3
和X4。加密算法以X1、X2、X3、X4作為初始輸入,總共進行8輪加密。在每一輪加密過程中,這4個子分組之間相互進行異或、相加、相乘運算,并且與16個16位的子密鑰進行異或、相加、相乘運算,每一輪加密的最后,第2和第3個子分組交換,完成一輪加密過程。
每一輪加密過程中,各個操作執(zhí)行的順序如下:
(1)X1和第1個子密鑰相乘;
(2)X2和第2個子密鑰相加;
(3)X3和第3個字密鑰相加;
(4)X4和第4個子密鑰相乘;
(5)將第(1)步和第(3)步的結(jié)果相異或;
(6)將第(2)步和第(4)步的結(jié)果相異或;
(7)將第(5)步的結(jié)果和第5個子密鑰相乘;
(8)將第(6)步和第(7)步的結(jié)果相加;
(9)將第(8)步的結(jié)果與第6個子密鑰相乘;
(10)將第(7)步和第(9)步的結(jié)果相加;
(11)將第(1)步和第(9)步的結(jié)果相異或;
(12)將第(3)步和第(9)步的結(jié)果相異或;
(13)將第(2)步和第(10)步的結(jié)果相異或;
(14)將第(4)步和第(10)步的結(jié)果相異或。
每一輪加密的結(jié)果,輸出的是第(11)、(12)、(13)和(14)步操作結(jié)果形成的4個長度為16位的子分組。將得到的4個分組的中間兩個分組值進行交換(最后一輪加密除外)后,即作為下一輪加密的輸入。經(jīng)過8輪加密操作后,最終的輸出變換如下:
(1)X1和第1個子密鑰相乘;
(2)X2和第2個子密鑰相加;
(3)X3和第3個子密鑰相加;
(4)X4和第4個子密鑰相乘。最后這4個子分組連接在一起產(chǎn)生密文(Y1,Y2,Y3,Y4)。
IDEA加密算法中每一輪需要6個子密鑰,最后輸出過程需要4個子密鑰,所以進行加密所需的子密鑰共52個。對于子密鑰的產(chǎn)生,給定加密算法的一個128位的初始密鑰,將其分成8個子密鑰,每一個子密鑰的長度都是16位;將初始密鑰分組產(chǎn)生的這8個子密鑰作為第一輪加密所需的6個子密鑰和第二輪加密的前2個子密鑰,將128位的初始密鑰循環(huán)左移25位,將它分成8個長度分別為16位的子密鑰,前4個作為第二輪加密的子密鑰,后4個作為第三輪加密的前4個子密鑰;再將初始密鑰循環(huán)左移25位,同樣經(jīng)過分組產(chǎn)生接下來的8個子密鑰。依此類推,直到完全產(chǎn)生加密過程所需的52個子密鑰后,密鑰生成算法結(jié)束。
IDEA算法的解密過程與加密過程基本一樣,只是需要將密文消息作為加密過程的輸入,同時,每一輪的子密鑰需要求逆運算而且和加密過程的子密鑰有一些微小的差別,解密過程的子密鑰要么是加密子密鑰的加法逆,要么是乘法逆。其中對IDEA而言,對于模216+1的乘法運算,全0子分組用216=-1來表示,所以0的乘法逆是0。表2-10給出了IDEA算法中加密子密鑰和相應(yīng)的解密子密鑰。
IDEA的密鑰長度是128位。假如采用窮舉式搜索的方法對其進行攻擊,那么要獲得密鑰需要進行2128次加密運算,即設(shè)計一個每秒能測試10億個密鑰的計算機,并采用10億臺同樣的計算機來進行并行處理,也將花費1013年才能完成計算。所以雖然目前有許多人都在分析和研究IDEA算法,但是IDEA還沒有被攻破的報道。當然IDEA算法是一個相對較新的分組加密算法,算法本身還有許多問題有待進一步地深入研究。
RC5是由RonRivest提出的一種對稱加密算法,它是含參數(shù)變量的分組密碼算法,其分組長度、密鑰大小和加密輪數(shù)均為參數(shù)變量。RC5算法具有以下特點:
(1)算法原理簡單:RC5的加密結(jié)構(gòu)簡單。
(2)適合硬件和軟件實現(xiàn):RC5只使用微處理器上常見的基本運算操作。
(3)算法實現(xiàn)速度快:RC5計算過程簡單而且運算面向字,基本操作每次對數(shù)據(jù)的整個字進行。
(4)對不同字長的處理器適應(yīng)性好:字中的位數(shù)是RC5的一個參數(shù),不同的字長對應(yīng)不同的算法。*2.5RC5算法
(5)加密輪數(shù)可變:加密輪數(shù)是RC5算法的參數(shù),加密輪數(shù)的選取可以實現(xiàn)加密速度和加密安全性的平衡。
(6)密鑰大小可變:密鑰大小也是RC5算法的參數(shù),密鑰大小的選取可以實現(xiàn)加密速度和加密安全性之間的平衡。
(7)移位位數(shù)依賴于加密數(shù)據(jù):RC5的移位位數(shù)依賴于加密數(shù)據(jù),該過程能夠有效改進RC5算法對抗密碼分析攻擊的能力。
RC5算法的加密過程包含三種基本運算:異或運算、加法運算和循環(huán)操作。RC5算法的分組長度可選32位、64位和128位,密鑰大小可選0~2040位,加密輪數(shù)可選0~255。以上三個參數(shù)的具體定義如下:一個特定版本的RC5算法記為RC5-w/r/b,例如RC5-32/12/16表示該算法具有64位的分組長度,加密輪數(shù)為12,密鑰大小為16字節(jié)(即128位)。下面說明RC5算法的加密過程。
RC5算法對密鑰進行擴展操作產(chǎn)生t=2r+2個子密鑰,每個子密鑰的長度為w,生成的子密鑰被存放在長度為t的數(shù)組S中。子密鑰擴展算法以參數(shù)r和w作為輸入,初始化數(shù)組S為一個特定的偽隨機序列。b字節(jié)的密鑰key[0…b-1]被轉(zhuǎn)換成一個c個字的數(shù)組L[0…c-1]??梢韵劝褦?shù)組L中的各個元素全設(shè)為0,然后把密鑰key直接復制到L所表示的存儲器位置上。如果b不是w的整數(shù)倍,那么L的右端有一部分仍然是0,在此基礎(chǔ)上做一個混合操作,把L的內(nèi)容和S的初始化內(nèi)容混合產(chǎn)生數(shù)組S的最終取值。以上過程中數(shù)組S的初始化操作使用了如下定義的兩個字長的常數(shù):
Pw=Odd[(e-2)·2w]
Qw=Odd[(φ-1)·2w]
其中,e=2.7182818…是自然對數(shù)的底;;Odd(x)表示離x最近的奇數(shù)(當x是偶數(shù)時,Odd(x)=x+1),例如Odd(e)=3,Odd(φ)=1。根據(jù)以上方法可以得到對應(yīng)不同字長的常數(shù)Pw和Qw。
使用以上兩個常數(shù)Pw和Qw,對數(shù)組S進行如下初始化:
其中加法運算是模2w加法。經(jīng)過以上過程初始化的數(shù)組S與密鑰L進行混合,產(chǎn)生最終的子密鑰數(shù)組S。在進行混合運算時對較大的數(shù)組要進行三輪操作,對較小的數(shù)組則可以進行更多次的操作?;旌线\算操作如下:
(1)初始化:
i=j=X=Y=0
(2)循環(huán)以下操作,其中循環(huán)次數(shù)為3×max(t,c):
S[i]=(S[i]+X+Y)<<<3
X=S[i]
i=(i+1)mod(t)
L[j]=(L[j]+X+Y)<<<(X+Y)
Y=L[j]
j=(j+1)mod(c)
RC5的加密過程使用三個基本操作:
(1)加法運算:字的相加是模2w的加法運算。其逆運算是模2w的減法運算。
(2)異或運算。
(3)循環(huán)左移操作:字x被循環(huán)左移y比特記為x<<<y,其逆操作是循環(huán)右移操作,記為x>>>y。
設(shè)明文分組被分為兩個w比特的序列A和B,加密輪數(shù)為r,變量Li和Ri表示第i輪加密之后數(shù)據(jù)的左半部分和右半部分。加密算法描述如下:
(1)初始化:
L0=A+S[0];R0=B+S[1]
(2)循環(huán)進行以下操作r輪:
Li=((Li-1Ri-1)<<<Ri-1)+S[2×i]
Ri=((Ri-1Li)<<<Li)+S[2×i+1]
經(jīng)過以上循環(huán)加密過程得到加密的密文分組Lr和Rr。
解密過程容易從加密過程中推導出,其中初始化已知為Lr和Rr。解密過程描述如下:
(1)循環(huán)進行以下操作r輪:
Ri-1=((Ri-S[2×i+1]>>>Li)Li)
Li-1=((Li-S[2×i]>>>Ri-1)Ri-1)
(2)恢復明文:
B=R0-S[1]:A=L0-S[0]
經(jīng)過以上過程解密出明文序列A和B。
RC5算法的最顯著特點是算法的簡單性和使用過程中依賴于數(shù)據(jù)的循環(huán)移位操作。其中循環(huán)移位操作是算法中僅有的非線性運算。已有的研究結(jié)果表明,RC5算法對于線性和差分密碼分析攻擊是安全的。2.6.1分組密碼的安全性
隨著密碼分析技術(shù)的發(fā)展,安全性成為分組密碼設(shè)計必須考慮的重要因素。前面在介紹分組密碼體制DES、AES和IDEA時,對其安全性已經(jīng)作了初步的分析。本節(jié)將對常見的針對分組密碼的分析技術(shù)做簡單介紹。2.6分組密碼的安全性及工作模式目前,對于分組密碼的分析技術(shù)主要有以下幾種:
(1)窮舉式搜索攻擊;
(2)差分密碼分析攻擊;
(3)線性密碼分析攻擊;
(4)相關(guān)的密鑰密碼分析攻擊。在以上四種攻擊方法中,線性密碼分析攻擊和差分密碼分析攻擊是兩個被人們所熟悉的分組密碼分析方法。
線性密碼分析是對迭代密碼的一種已知明文攻擊,最早由MitsuruMatsui在1993年提出,這種攻擊方法使用線性近似值來描述分組密碼。該密碼分析方法的基本思想如下:
假設(shè)在一個明文位子集合與加密過程最后一輪即將進行代換加密的輸入序列位子集合之間能夠找到一個概率上的線性關(guān)系。如果攻擊者擁有大量的用同一組未知密鑰加密的明文和相應(yīng)的密文對,那么攻擊者對每一個明文和相應(yīng)的密文采用所有可能的候選密鑰來對加密過程的最后一輪解密相應(yīng)的密文。對每一個候選的密鑰,攻擊者計算包含在線性關(guān)系式中的相關(guān)狀態(tài)位的異或值,然后確定上述的線性關(guān)系是否成立。如果線性關(guān)系成立,就在對應(yīng)特定候選密鑰的記數(shù)器上加1。反復進行以上過程,最后得到的計數(shù)器頻率距離明文和相應(yīng)的密文對個數(shù)的一半最遠的候選密鑰最有可能含有密鑰位的正確值。以上過程意味著如果攻擊者將明文的一些位和密文的一些位分別進行異或運算,然后再將這兩個結(jié)果進行異或運算,就能夠得到一個位的值,該位的值是將密鑰的一些位進行異或運算的結(jié)果。這就是概率為p的線性近似值。如果p≠1/2,那么就可以使用該偏差,用已知的明文和相應(yīng)的密文來猜測密鑰的具體位置。以上過程得到的數(shù)據(jù)越多,猜測的結(jié)果就越可靠;概率越大,用同樣的數(shù)據(jù)量相應(yīng)的成功率就越高。差分密碼分析是對迭代密碼的一種選擇明文攻擊,由EliBiham和AdiShamir于1990年提出,這種攻擊方法通過對那些明文有特殊差值關(guān)系的密文對進行比較分析來攻擊相應(yīng)的分組
密碼算法。該密碼分析方法的基本思想如下:通過分析明文對差值對密文對差值的影響來恢復某些密鑰位。選擇具有固定差分關(guān)系的一對明文位序列,這兩個明文序列可以隨機選取,只要它們符合特定差分的條件,攻擊者甚至可以不必知道兩個明文序列的具體值。然后通過對相應(yīng)密文序列中差分關(guān)系的分析,按照不同的概率分配給不同的密鑰;選擇新的滿足條件的明文序列,重復以上過程。隨著分析的密文序列越來越多,相應(yīng)的密鑰對應(yīng)的概率分布也越來越清晰,最有可能的密鑰序列將逐步顯現(xiàn)出來。
一種攻擊的復雜度可以分為兩個部分:數(shù)據(jù)復雜度和處理復雜度。數(shù)據(jù)復雜度是實施該攻擊所需輸入的數(shù)據(jù)量;處理復雜度是處理這些數(shù)據(jù)所需的計算量。差分密碼分析的數(shù)據(jù)復雜度是成對加密所需的選擇明文對個數(shù)的二倍,因此,差分密碼分析的復雜度取決于數(shù)據(jù)復雜度。2.6.2分組密碼的工作模式
分組密碼是將消息作為分組數(shù)據(jù)來進行加密和解密的。通常大多數(shù)消息的長度會大于分組密碼的消息分組長度,這樣在進行加密和解密過程中長的消息會被分成一系列連續(xù)排列的消
息分組進行處理。本小節(jié)討論基于分組密碼的幾種工作模式,這些工作模式不僅能夠增強分組密碼算法的不確定性,還具有將明文消息添加到任意長度(該性質(zhì)能夠?qū)崿F(xiàn)密文長度與明文長度的不對等)、對錯誤傳播進行控制等作用。
1980年12月,F(xiàn)IPS81標準化了DES算法的四種工作模式,這些工作模式適用于任何的分組密碼算法?,F(xiàn)在,人們對AES算法的工作模式的研發(fā)工作正在進行中,這些AES的工作模式可能會包括以前DES的工作模式,還可能增加新的工作模式。五種常用的工作模式為電碼本模式(ECB模式)、密碼分組鏈接模式(CBC模式)、密碼反饋模式(CFB模式)、輸出反饋模式(OFB模式)、計數(shù)器模式(CTR模式)。為了方便描述以上五種工作模式,定義以下幾種符號:
·
E(x):分組密碼算法的加密過程。
·
D(y):分組密碼算法的解密過程。
·
n:分組密碼算法的分組長度。
·
P1,P2,…,Pm:輸入到工作模式中的明文消息的m個連續(xù)分組。
·
C1,C2,…,Cm:從工作模式中輸出的密文消息的m個連續(xù)分組。
·LSBu(A):消息分組A中最低u位比特的取值,例如
LSB3(11001101)=101
·MSBv(A):消息分組A中最高v位比特的取值,例如
MSB2(01001100)=01
·A‖B:消息分組A和B的鏈接。
1.ECB模式
ECB模式是分組密碼的一個直接應(yīng)用,其中加密(或解密)一系列連續(xù)排列的消息分組P1,P2,…,Pm的過程是將它們依次分別加密(或解密)。由于這種工作模式類似于電報密碼本中指定碼字的過程,因此被形象地稱為電碼本模式。ECB模式定義如下:
ECB加密:Ci←E(Pi),i=1,2,…,m;
ECB解密:Pi←D(Ci),i=1,2,…,m。
ECB模式中每一個明文分組都采用同一個密鑰key來進行加密,產(chǎn)生出相應(yīng)的密文分組。這樣的加密方式使得當改變一個明文消息分組值的時候,僅僅會引起相應(yīng)的密文分組取值發(fā)生變化,而其他密文分組不受影響。該性質(zhì)在通信信道不十分安全的情況下會比較有利,但這種工作模式的一個明顯的缺點是加密相同的明文分組會產(chǎn)生相同的密文分組,安全性較差,因此建議在大多數(shù)情況下不要使用ECB模式。
2.CBC模式
CBC模式是用于一般數(shù)據(jù)加密的一個普通的分組密碼算法。CBC模式的輸出是一個n比特的密文分組序列,這些密文分組鏈接在一起使得每一個密文分組不僅依賴于其所對應(yīng)的明文分組,而且依賴于所有以前的明文分組。CBC模式定義如下:
CBC加密:輸入為IV,P1,P2,…,Pm;輸出為IV,C1,C2,…,Cm;
CBC解密:輸入為IV,C1,C2,…,Cm;輸出為IV,P1,P2,…,Pm;
以上加密過程中,第一個密文分組C1的計算需要一個特殊的輸入分組C0,習慣上稱之為初始向量IV。IV是一個長度為n的隨機比特序列,每一次進行會話加密時都要使用一個新的隨機序列IV,由于初始向量IV可以看做是密文分組,因此其取值可以公開,但一定要是不可預知的。在加密過程中,由于IV的隨機性,第一個密文分組C1被隨機化,同樣,后續(xù)的輸出密文分組都將被前面的密文分組隨機化,因此,CBC模式輸出的是隨機化的密文分組。發(fā)送給接收者的密文消息應(yīng)該包括IV。因此,對于m個分組的明文消息,CBC模式將輸出m+1個密文分組。
鑒于CBC模式的鏈接機制,它適合于對長度較長的明文消息進行加密。
3.CFB模式
CFB模式的特點是在加密過程中反饋后續(xù)的密文分組,這些密文分組從工作模式的輸出端返回作為分組密碼算法的輸入。設(shè)消息的分組長度為s,其中1≤s≤n。CFB模式要求以IV作為初始的n比特隨
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 曹縣安全技能培訓課件
- 暴雪天氣交通安全培訓課件
- 金山區(qū)建筑電工培訓課件
- 企業(yè)商務(wù)局招投標知識培訓
- 金屬外殼產(chǎn)品培訓課件
- 金華安全檢測室培訓課件
- 高中化學專題2營養(yǎng)均衡與人體健康第三單元優(yōu)化食物品質(zhì)的添加劑課件7蘇教版選修
- 高中歷史第2單元商鞅變法第3課富國強兵的秦國
- 兒科護理查房:小兒心血管疾病的護理
- 電工電子技術(shù)實訓教程 課件 第5章 PLC控制系統(tǒng)
- 施工員個人工作總結(jié)課件
- 四川省瀘州市2026屆數(shù)學高二上期末統(tǒng)考試題含解析
- 2026湖北武漢市文旅集團市場化選聘部分中層管理人員4人筆試參考題庫及答案解析
- 中國金融電子化集團有限公司2026年度校園招聘備考題庫及一套完整答案詳解
- 生物實驗探究教學中學生實驗探究能力培養(yǎng)與評價體系研究教學研究課題報告
- 校園跑腿行業(yè)數(shù)據(jù)分析報告
- 雨課堂在線學堂《社會研究方法》作業(yè)單元考核答案
- 12345工作總結(jié)個人
- 高中地理第一學期期中試卷湘教版必修1
- 測定直流電源的參數(shù)并研究其輸出特性
- 2021年云南公務(wù)員考試行測試題及答案
評論
0/150
提交評論