![《新編密碼學》課件第2章 分組密碼_第1頁](http://file4.renrendoc.com/view4/M00/38/38/wKhkGGZIcaGAKni5AAD-Dnu5Tfk933.jpg)
![《新編密碼學》課件第2章 分組密碼_第2頁](http://file4.renrendoc.com/view4/M00/38/38/wKhkGGZIcaGAKni5AAD-Dnu5Tfk9332.jpg)
![《新編密碼學》課件第2章 分組密碼_第3頁](http://file4.renrendoc.com/view4/M00/38/38/wKhkGGZIcaGAKni5AAD-Dnu5Tfk9333.jpg)
![《新編密碼學》課件第2章 分組密碼_第4頁](http://file4.renrendoc.com/view4/M00/38/38/wKhkGGZIcaGAKni5AAD-Dnu5Tfk9334.jpg)
![《新編密碼學》課件第2章 分組密碼_第5頁](http://file4.renrendoc.com/view4/M00/38/38/wKhkGGZIcaGAKni5AAD-Dnu5Tfk9335.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2.1分組密碼的設計準則分組密碼也叫做塊密碼(BlockCipher),是指對固定長度的一組明文進行加密的一種加密算法,這一固定長度稱之為分組長度。2/149分組密碼是對稱密碼體制分組密碼的作用消息加密消息認證和數(shù)據(jù)完整性保護通過用于構造消息認證碼(MAC)來實現(xiàn)構造偽隨機數(shù)生成器。用于產生性能良好的隨機數(shù)構造流密碼。構成其它密碼協(xié)議的基本模塊如密鑰管理協(xié)議,身份認證協(xié)議等在分組密碼中,必須處理一個問題——填充。在分組加密中,要求填充是可逆的假定塊長度為8字節(jié),要加密的明文數(shù)據(jù)長度為9字節(jié)。那么消息被切成兩個塊,第二塊只有1個字節(jié),需要填充7個字節(jié)。如果把9字節(jié)的明文數(shù)據(jù)記為:F1F2F3F4F5F6F7F8F9(1)Zeros填充算法:需要填充的7個字節(jié)全部填充為0,分組結果為:第一個消息分組:F1F2F3F4F5F6F7F8第二個消息分組:F900000000000000Zeros填充算法無法區(qū)分第二個消息分組中F9后的0序列是否是明文中的原始序列,因此該填充算法不可逆。(2)X923填充算法:需要填充的7個字節(jié)中前6個字節(jié)填充0,最后一個字節(jié)記錄填充的總字節(jié)數(shù),分組結果為:第一個消息分組:F1F2F3F4F5F6F7F8第二個消息分組:F900000000000007(3)PKCS7填充算法:需要填充的7個字節(jié)中的每一個字節(jié)填充需要填充的總字節(jié)數(shù),分組結果為:第一個消息分組:F1F2F3F4F5F6F7F8第二個消息分組:F907070707070707
(4)ISO10126填充算法:需要填充的7個字節(jié)中前6個字節(jié)填充隨機字節(jié)序列,最后一個字節(jié)記錄填充的總字節(jié)數(shù),分組結果為:第一個消息分組:F1F2F3F4F5F6F7F8第二個消息分組:F97D2A75EFF8EF072.1.1Feistel分組密碼的基本結構
Feistel密碼結構是基于1949年Shannon提出的交替使用代換和置換方式構造密碼體制的設想提出的。在設計密碼體制的過程中,Shannon提出了能夠破壞對密碼系統(tǒng)進行各種統(tǒng)計分析攻擊的兩個基本操作:擴散(diffusion)和混淆(confusion)。安全性設計原則
1.混淆原則
混淆性:所設計的密碼應使得明文、密文、密鑰之間的依賴關系相當復雜,以至于這種依賴關系對密碼分析者來說是無法利用的。密碼分析者利用這種依賴關系的方法非常多,因此混淆性也是一個極為繁雜的概念。2.擴散原則
擴散是指所設計的密碼應使得(1)密鑰的每一個比特影響密文的每一個比特,以防止對密鑰進行逐段破譯;(2)明文的每一個比特影響密文的每一個比特,以便最充分地隱蔽明文的統(tǒng)計特性。這一準則強調微小輸入改變能夠導致輸出的多位變化。安全性設計原則明文(2L)密文(2L)R0(L)R1(L)Rn(L)L0(L)L1(L)Ln(L)ff++…K1KnLn-1(L)Rn-1(L)+f…Kn-1Feistel型的分組密碼的安全性取決于以下幾個方面:(1)明文消息和密文消息的分組大?。?)子密鑰的大?。?)循環(huán)次數(shù)(4)子密鑰產生算法(5)輪函數(shù)在其它條件相同的情況下,每一輪加密的分組長度越大,加密算法的安全性就越高,而相應的加密速度也越慢,效率越低。目前常用的分組加密算法的分組長度取64位。
算法的安全性隨著子密鑰長度的增加而提高,但是相應的加密速度會降低,所以設計分組密碼時需要在安全性和加密效率之間進行平衡。在實際應用中,一般認為,要保證分組加密算法滿足計算安全性,子密鑰的長度至少要大于128位。循環(huán)越多安全性越高,相應的加密效率也就越低。在初始密鑰給定的情況下,產生子密鑰的算法越復雜,加密算法的安全性越高。對于輪函數(shù)的討論相對較復雜,一般認為,輪函數(shù)越復雜,對應的加密算法的安全性越高。輪函數(shù)FS盒:非線性部件,規(guī)模較小,局部混淆非線性關系:實現(xiàn)混淆。規(guī)模:較小。例如:說8進8出。128比特需要分成16組,分別用16個S盒來處理。局部:多個S盒之間沒有關聯(lián),混淆是在各個S盒之內進行,是局部的。置換P:線性部件,整體擴散2.1.2函數(shù)的設計準則
Feistel分組密碼的核心是輪函數(shù)。設計的函數(shù)應該滿足嚴格的雪崩準則SAC(StrictAvalancheCriterion)位獨立準則BIG(BitIndependenceCriterion)保證的雪崩準則GAC(GuaranteedAvalancheCriterion)對于任意的
,當任何一個輸入位
發(fā)生改變時,S-盒的任何輸出位
的值發(fā)生改變的概率為
對于任意的
,當任何一個輸入位
發(fā)生改變時,輸出位
和
的值應該獨立地發(fā)生改變。對于輸入序列中1位的值發(fā)生改變,輸出序列中至少有
位的值發(fā)生改變。一般要求
的值介于2到5之間。2.2數(shù)據(jù)加密標準----DES
DES是DataEncryptionStandard(數(shù)據(jù)加密標準)的縮寫。它是由IBM公司研制的一種加密算法,二十年來,它一直活躍在國際保密通信的舞臺上,扮演了十分重要的角色。DES算法的歷史過程20世紀70年代中期,美國政府認為需要一個強大的標準加密系統(tǒng),美國國家標準局提出了開發(fā)這種加密算法的請求,最終IBM的Lucifer加密系統(tǒng)勝出。1972年美國商業(yè)部所屬的美國國家標準局NBS(NationalBureauofStandards)開始實施計算機數(shù)據(jù)保護標準的開發(fā)計劃。
1973年5月13日,美國國家標準局NBS發(fā)布文告征集在傳輸和存貯數(shù)據(jù)中保護計算機數(shù)據(jù)的密碼算法。
1975年3月17日,首次公布DES算法描述,認真地進行公開討論。
1977年1月15日,正式批準為無密級應用的加密標準(FIPS—46),當年7月1日正式生效。以后每隔5年美國國家安全局對其安全性進行一次評估,以便確定是否繼續(xù)使用它作為加密標準。在1994年1月的評估后決定1998年12月以后不再將DES作為數(shù)據(jù)加密標準。DES是一個分組加密算法,它以64位為分組對數(shù)據(jù)加密。同時DES也是一個對稱算法:加密和解密用的是同一個算法。它的密鑰長度是56位(因為每個第8位都用作奇偶校驗),密鑰可以是任意的56位的數(shù),其中極少量的56位數(shù)被認為是弱密鑰,為了保證加密的安全性,在加密過程中應該盡量避開使用這些弱密鑰。2.2.1DES的描述
DES是一個包含16個階段的“替換--置換”的分組加密算法,64位的分組明文序列作為加密算法的輸入,經過16輪加密得到64位的密文序列。盡管DES密鑰的長度有64位,但用戶只提供56位,其余的8位由算法提供,分別放在8、16、24、32、40、48、56、64位上,結果是每8位的密鑰包含了用戶提供的7位和DES算法確定的1位。添加的位是有選擇的,使得每個8位的塊都含有奇數(shù)個奇偶校驗位(即1的個數(shù)為奇數(shù))。DES加密流程64比特明文64比特密文迭代16輪
初始置換初始逆置換第16輪加密:::第1輪加密:第i輪加密K1(48比特)Ki(48比特)K16(48比特)明文(64bits)IP置換(64bits)L0(32bits)R0(32bits)L1=R0R1=L0f(R0,k1)fki+16輪同樣運算…L16+R16=L15f(R15,ki)+IP-1置換(64bits)DES算法結構密文(64bits)DES加密過程中包含的基本操作:初始置換初始置換(InitialPermutation,簡稱置換)在第一輪運算之前執(zhí)行。
IP置換表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157(1)58表示:結果中位于第1個位置的值,等于原文中第58個位置的值(2)圖中的一格代表1bit,共有64bit,即8字節(jié)DES:IP置換初始逆置換(InverseInitialPermutation)40818165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725初始置換和對應的逆初始置換操作并不會增強DES算法的安全性,它的主要目的是為了更容易地將明文和密文數(shù)據(jù)以字節(jié)大小放入DES芯片中。DES加密流程LiRiLi-1Ri-1FKiR16L16L15R15FK1664比特明文64比特密文迭代16輪
初始置換初始逆置換第16輪加密:::第一輪加密:第i輪加密Li-1Ri-1密鑰
Li密鑰RiE盒擴展S盒替代P盒置換移位移位壓縮變換++一輪DES加密過程DES算法的第
i
(i=1,2,…,15)輪加密結構圖缺點:擴散速度慢:輪變換的輸入有一半沒有改變;左右塊的處理不能并行實施。優(yōu)點:單輪變換的數(shù)學描述:
Li=Ri-1Ri=Li-1F(Ri-1,Ki)
設計容易:輪函數(shù)F不要求可逆。FKiLi-1(32位)Ri-1(32位)LiRiFeistel結構
擴展置換E輪密鑰加S盒置換P輪函數(shù)FDES:f
的結構(即黑盒變換)R(32bit)EE(R)(48bit)K(48bit)B1
B2
B3
B4
B5
B6
B7
B8S1S2S3S4S5S6S7S8C1C2C3C4C5C6C7C8P+(48bit)(32bit)123456789101112131415161718192021222324252627282930313232123
454567898
91011121312131415161716171819202120212223242524252627282928293031321擴展置換E擴展置換E將64位輸入序列的右半部分從32位擴展到48位。S-盒替換(S-boxesSubstitution)S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S-盒21518146113497213120510313471528141201106911501441110413158126932151381013154211671205149S-盒31009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S-盒47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S-盒52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S-盒61211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S-盒74112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S-盒81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S—盒的輸出表示設對應S-盒1的輸入序列為:101111行號:11即3列號:0111即70123
012345689101112131415結果為7即01117
迄今為止,有關方面未曾完全公開有關DES的S盒的設計準則。1976年,NSA披露過下述準則:1:S盒的輸出都不是其輸入的線性或仿射函數(shù)。2:改變S盒的一個輸入比特,其輸出至少有兩比特產生變化,即近一半產生變化。3:當S盒的任一輸入位保持不變,其它5位輸入變化時(共有25=32種情況),輸出數(shù)字中的0和1的總數(shù)近于相等。這三點使DES的S盒能夠實現(xiàn)較好的混淆。S盒的設計準則置換PP盒置換是對32比特數(shù)據(jù)進行比特置換。置換P的輸入/輸出關系可以用表來表示,變換規(guī)則和前面介紹的初始置換相同作用:置換P與S盒互相配合,起到了擴散作用,共同確保DES的安全。置換P(續(xù))(1)P盒的各輸入組的4個比特都分配到不同的輸出組之中;比如:輸入第一組1,2,3,4比特在輸出中分別位于第3,5,6,8組。P盒的設計特點(2)P盒的各輸出組的4個比特都來自不同的輸入組。比如:輸出第一組的四個比特分別來自輸入的第4組,第2組,第5組,第6組。輪子密鑰的生成初始密鑰(64比特)D0(28比特)循環(huán)移位循環(huán)移位密鑰置換C0(28比特)壓縮置換循環(huán)移位循環(huán)移位子密鑰K1…………57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124
密鑰置換輪數(shù)12345678910111213141516位數(shù)1122222212222221
循環(huán)左移位數(shù)
壓縮置換1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932DES解密:加密和解密可使用相同的算法,即解密過程是將密文作為輸入序列進行相應的DES加密,與加密過程惟一不同之處是解密過程使用的輪密鑰與加密過程使用的次序相反。解密過程產生各輪子密鑰的算法與加密過程生成輪密鑰的算法相同,與加密過程不同的是解密過程產生子密鑰時,初始密鑰進行循環(huán)右移操作,每產生一個子密鑰對應的初始密鑰移動位數(shù)分別為0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。f1K0R1L=16K)bit密文(
64IP逆置換IP置換…明文(64bit)0R(32bit)0L1R?=),(0Rf1K15L16R?=),(15Rf16Kf…f的擴展變換0R循環(huán)左移壓縮置換密鑰置換fS—盒1Kp—盒0L1R?=),(0Rf1K0L(32bit)15R16L=實例演示
取明文M為M=0123456789ABCDEF0000000100100011010001010110011110001001101010111100110111101111寫成二進制:1100110000000000110011001111111111110000101010101111000010101010初始置換:L0=11001100000000001100110011111111R0=11110000101010101111000010101010分為左右兩部分:L1=R0=11110000101010101111000010101010第一輪迭代:R1=L0+f(R0,K1)f(R0,K1):E-盒、S-盒、P-盒E-盒:E(R0)=011110100001010101010101011110100001010101010101K1=000110110000001011101111111111000111000001110010K1+E(R0)=011000010001011110111010100001100110010100100111S-盒:S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)=01011100100000101011010110010111P-盒:f=P(S1(B1)S2(B2)…S8(B8))=00100011010010101010100110111011R1=L0+f(R0,K1)=11001100000000001100110011111111+00100011010010101010100110111011=1110111101001010011001010100010016輪迭代之后:L16=01000011010000100011001000110100R16=00001010010011001101100110010101IP-1=1000010111101000000100110101010000001111000010101011010000000101初始逆置換:左右合一起:R16L16=000010100100110011011001100101010100001101000010001100100011010085E813540F0AB40516進制:明文M=0123456789ABCDEF密文C=85E813540F0AB405輪子密鑰的生成:K=133457799BBCDFF1K=0001001100110100010101110111100110011011101111001101111111110001寫成二進制:密鑰置換:56位密鑰:K+=11110000110011001010101011110101010101100110011110001111拆分為左右兩部分:C0=1111000011001100101010101111D0=0101010101100110011110001111C0=1111000011001100101010101111D0=0101010101100110011110001111C1=1110000110011001010101011111D1=1010101011001100111100011110C2=1100001100110010101010111111D2=0101010110011001111000111101C3=0000110011001010101011111111D3=0101011001100111100011110101C4=0011001100101010101111111100D4=0101100110011110001111010101C5=1100110010101010111111110000D5=0110011001111000111101010101C6=0011001010101011111111000011D6=1001100111100011110101010101C7=1100101010101111111100001100D7=0110011110001111010101010110C8=0010101010111111110000110011D8=1001111000111101010101011001循環(huán)移位:C9=0101010101111111100001100110D9=0011110001111010101010110011C10=0101010111111110000110011001D10=1111000111101010101011001100C11=0101011111111000011001100101D11=1100011110101010101100110011C12=0101111111100001100110010101D12=0001111010101010110011001111C13=0111111110000110011001010101D13=0111101010101011001100111100C14=1111111000011001100101010101D14=1110101010101100110011110001C15=1111100001100110010101010111D15=1010101010110011001111000111C16=1111000011001100101010101111D16=0101010101100110011110001111循環(huán)移位:K1=000110110000001011101111111111000111000001110010壓縮置換:K2=011110011010111011011001110110111100100111100101K3=010101011111110010001010010000101100111110011001K4=011100101010110111010110110110110011010100011101K5=011111001110110000000111111010110101001110101000K6=011000111010010100111110010100000111101100101111K7=111011001000010010110111111101100001100010111100K8=111101111000101000111010110000010011101111111011K9=111000001101101111101011111011011110011110000001K10=101100011111001101000111101110100100011001001111K11=001000010101111111010011110111101101001110000110K12=011101010111000111110101100101000110011111101001K13=100101111100010111010001111110101011101001000001K14=010111110100001110110111111100101110011100111010K15=101111111001000110001101001111010011111100001010K16=110010110011110110001011000011100001011111110101壓縮置換:DES的分析
自從DES被采用作為聯(lián)邦數(shù)據(jù)加密標準以來,DES遭到了猛烈的批評和懷疑。首先是DES的密鑰長度是56位,很多人擔心這樣的密鑰長度不足以抵御窮舉式搜索攻擊;其次是DES的內部結構即S-盒的設計標準是保密的,這樣使用者無法確信DES的內部結構不存在任何潛在的弱點。DES的弱密鑰和半弱密鑰
如果DES的秘密產生的子密鑰滿足:則有:這樣的密鑰稱為DES算法的弱密鑰。DES的弱密鑰有以下4種:如果DES的密鑰和滿足:則稱密鑰和是DES算法的一對半弱密鑰。半弱密鑰只交替的生成兩種密鑰。DES的半弱密鑰有以下6對:針對DES的攻擊方法對于DES的攻擊,最有意義的方法是差分分析方法(DifferenceAnalysisMethod)。差分分析方法是一種選擇明文攻擊法,最初是由IBM的設計小組在1974年發(fā)現(xiàn)的,所以IBM在設計DES算法的S-盒和換位變換時有意識的避免差分分析攻擊,對S-盒在設計階段進行了優(yōu)化,使得DES能夠抵抗差分分析攻擊。對DES攻擊的另一種方式是線性分析方法(LinearAnalysisMethod)線性分析方法是一種已知明文攻擊法,由MitsuruMatsui在1993年提出的。這種攻擊需要大量的已知“明文----密文”對,但比差分分析方法的要少。當將DES用于諸如智能卡等硬件裝置時,通過觀察硬件的性能特征,可以發(fā)現(xiàn)一些加密操作的信息,這種攻擊方法叫做旁路攻擊法(Side-ChannelAttack)。例如,當處理密鑰的“1”位時,要消耗更多的能量,通過監(jiān)控能量的消耗,可以知道密鑰的每個位;還有一種攻擊是監(jiān)控完成一個算法所耗時間的微秒數(shù),所耗時間數(shù)也可以反映部分密鑰的位。DES加密的輪數(shù)對安全性也有較大的影響。如果DES只進行8輪加密過程,則在普通的個人電腦上只需要幾分鐘就可以破譯密碼。如果DES加密過程進行16輪,應用差分分析攻擊比窮盡搜索攻擊稍微有效一些。然而如果DES加密過程進行18輪,則差分分析攻擊和窮盡搜索攻擊的效率基本一樣。如果DES加密過程進行19輪,則窮盡搜索攻擊的效率還要優(yōu)于差分分析攻擊的效率。DES算法的幾種改進:在以上加密過程中,當明文序列的結構有一定的固定格式時,相應的密文序列也會表現(xiàn)出一定的規(guī)律性,從而導致加密算法不安全。對該問題可以采用分組反饋的方法進行改進。密鑰DESKDESKDESK++x1x2xny1y2yn……密鑰DESK-1DESK-1DESK-1++x1x2xny1y2yn……加密解密改進方法二:由于DES算法的密鑰長度只有56位,安全性較差。最簡單的改進算法安全性的方法是應用不同的密鑰對同一個分組消息進行多次加密,由此產生了多重DES加密算法。2.2.3多重DES
相應的解密過程為:對雙重DES加密方法的安全性分析1992年人們證明了由二個不同的密鑰組成的二重DES對應的映射不會出現(xiàn)在單重DES定義的映射中,這意味著二重DES不會等價于單重DES。這說明雙重DES加密算法的密鑰空間要大于DES算法,所以其安全性優(yōu)于DES算法。雙重DES加密算法不能抵抗中間點匹配攻擊法(Meet-in-the-MiddleAttack)。加密解密內存明文密鑰1密文密鑰2用Ki加密的結果用Kj解密匹配查找圖2-12三重DES加密流程解密過程首先使用第一個密鑰進行DES解密,然后使用第二個密鑰對第一次的結果進行DES加密,最后再使用第一個密鑰對第二次的結果進行DES解密。圖2-13三重DES解密流程以上這種加密模式稱為“加密-解密-加密(EDE)模式”。DES算法的密鑰長度是56位,所以三重DES算法的密鑰長度是112位。使用兩個密鑰的三重DES是一種較受歡迎的改進算法,目前三重DES已經被用于密鑰管理標準ANSX9.17和ISO8732中。2.3高級數(shù)據(jù)加密標準----AES
1997年7月,借助于互聯(lián)網上的14000多臺計算機,花費了90天時間破解了DES密鑰。6個月后,用這種方法破解DES所花費的時間減少了39天。1998年7月,一臺特殊構造的計算機(名為DeepCrack)只用了56個小時就破解了一個DES密鑰。顯然,DES不再是一個可靠的加密系統(tǒng)。為此,美國國家標準局提出了一項取代DES的投標計劃,這就是高級加密標準AES(AdvancedEncryptionStandard)。對于DES算法的改進工作從1997年開始公開進行。1997年4月15日,美國國家標準技術研究所(NIST)發(fā)起了征集DES的替代算法AES(AdvancedEncryptionStandard)算法的活動,希望能夠找到一種非保密的、可以公開和免費使用的新的分組密碼算法,使其成為21世紀秘密和公開部門的數(shù)據(jù)加密標準。1997年9月12日,發(fā)布了征集算法的正式公告和具體細節(jié),其要求如下:(1)應是對稱分組加密,具有可變長度的的密鑰(128、192或256位),具有128位的分組長度;(2)應比三重DES快、至少與三重DES一樣安全;(3)應可應用于公共領域并能夠在全世界范圍內免費使用;(4)應至少在30年內是安全的。1998年8月20日,NIST在“第一次AES候選大會”上公布了滿足條件的來自10個不同國家的15個AES的候選算法。在確定最終算法之前,這些算法先經受了一個很長的公開分析過程。在第二次會議之后,NIST從這15個候選算法中選出了5個AES的候選算法,分別是:IBM提交的MARS;RSA實驗室提交的RC6;Daemen和Rijmen提交的Rijndael;Anderson、Biham和Knudsen提交的Serpent;Schneier、Whiting、Wagner、Hall和Ferguson提交的Twofish。這五個候選的算法都經受了6個月的考驗,又經過6個月的測試后,到2000年10月2日,NIST正式宣布Rijndael勝出,被選擇為高級數(shù)據(jù)加密標準,該算法是由兩位比利時人Daemen和Rijmen提出的。Rijndael能夠勝出,除了在軟件實現(xiàn)時速度和子密鑰生成時間上的優(yōu)勢外,另一部分原因是它能用硬件有效的實現(xiàn)。加密速度和硬件實現(xiàn)的特性也是評估加密算法優(yōu)劣的重要因素。AES的描述
AES也是一個典型的迭代型分組密碼,分組長度:128比特,密鑰長度:128位、192位、256位,分別記為AES-128、AES-192、
AES-256。加密輪數(shù)依賴于所選擇的子密鑰長度。對于128位的密鑰長度,加密的輪數(shù)為10;對于192位的密鑰長度,加密的輪數(shù)為12;對于256位的密鑰長度,加密的輪數(shù)為14。Rijndael實際上有三個版本:AES-128、AES-192、AES-256。Rijndael不像DES那樣在每個循環(huán)上使用“替換和置換”操作,而是進行多重循環(huán)的“替換、列混合密鑰加”操作。明文M
第1輪加密第i輪加密第10輪加密密文CAES加密流程字節(jié)代替行移位列混合密鑰加字節(jié)代替行移位密鑰加狀態(tài)矩陣將128比特狀態(tài)數(shù)據(jù)依次分為16個字節(jié)數(shù)據(jù)單元:比特,字節(jié)和字高級加密標準(AES)
數(shù)學基礎字節(jié)的運算加法乘法字的運算加法乘法AES數(shù)學基礎f(x)為系數(shù)在GF(2)上任意次數(shù)的多項式m(x)為系數(shù)在GF(2)上的8次不可約多項式其中m(x)=x8
x4
x3
x
1AES中的字節(jié)運算定義在如下構造的GF(28)中字的表示字節(jié)b7b6b5b4b3b2b1b0?
b7x7
b6x6
b5x5
b4x4
b3x3
b2x2
b1x
b0bi
GF(2)字a3a2a1a0?a3x3
a2x2
a1x
a0=a(x)
ai
GF(28)例:D3640F00+E32381AB=?(16進制表示)
11010011001000110000111100000000←D3640F00+11100011011001001000000110101011←E32381AB=00110000010001111000111010101011←30478EAB字的乘法乘法:兩個字對應字多項式的乘積,規(guī)定該乘法必須要取模多項式x41多項式形式AES算法加密過程中用到的相關操作AES中的操作都是以字節(jié)為對象的,操作所用到的變量是由一定數(shù)量的字節(jié)構成。輸入的明文消息長度是128位,將其表示為16個字節(jié),初始化消息矩陣State如下:函數(shù)ByteSubs(State)對消息矩陣State中的每個元素(每個元素對應每一個字節(jié))進行一個非線性替換,任一個非零元素(即由不可約的8次多項式生成的伽羅瓦域)被下面的變換所代替:其中:b0b7AESS-盒算法設x=00001001轉換為16進制09行列查詢S盒AES算法的“S-盒”
16BB54B00F2D99416842E6BF0D89A18CFDF2855CEE9871E9B948ED9691198F8E1E9E1DC186B95735610EF6034866B53E70D8A8BBD481F74DDE8C6B4A61C2E2578BAC08AE7A65EAF4566CA94ED58D6D37C8E7B79E4959162ACD3C25C2406490A3A32E0ADB0B5EDE14B8EE4688902A22DC4F8160973195D643D7EA7C41744975FEC130CCD8D2F3FF1021DAB6BCF5389D928F40A3517A89F3C507F02F94585334D43FBAAEFD06CF584C4A39BECB6A5BB1FC20ED00D1535842FE329B3D63B52A05A6E1B1A2C8309475B227EBE28012079A059618C323C70431531D871F1E5A534CCF73F362693FDB72C072A49CAFA2D4ADF04759FA7DC982CA176ABD7FE2B670130C56F6BF27B777C630FEDCBA9876543210y返回AESS-盒算法設x=00001001轉換為16進制09所以y=01。這個對應關系如果按書中公式(2-1)計算可得出同樣結果。行列查詢S盒函數(shù)ShiftRows(State)在消息矩陣State的每行上進行操作S00S01S02S03不移位S10S11S12S13左移一位S20S21S22S23左移兩位S30S31S32S33左移三位函數(shù)MixColumns(State)對State的每一列進行操作。首先取當前的消息矩陣State中的一列,定義為:把這一列表示成一個三次多項式:其中的系數(shù)是字節(jié),所以多項式定義在上。矩陣形式函數(shù)AddRoundkey(State,Roundkey)將Roundkey和State中的元素逐字節(jié)、逐位地進行異或運算。其中Roundkey使用一個固定的密鑰編排方案產生,每一輪的Roundkey是不同的。AES一輪操作示例假設第i輪消息表示成十六進制:426f62206c6f6f6b
20617420
74686973寫成消息矩陣形式為:42
6c
20
746f
6f
61
68626f74
6920
6b
20
73在“S-盒”中查找出與每個輸入元素對應的元素,從而生成如下的輸出矩陣:2c50b792a8a8ef45aaa892f9b77fb78f42
6c
20
746f
6f
61
68626f74
6920
6b
20
73S盒替代接下來的一個階段是旋轉各行:2c50b792a8ef45a892f9aaa88fb77fb72c50b792
a8a8ef45
aaa892f9
b77fb78f行移位接下來的一個階段進行乘法操作。對于第一列進行如下的轉換:根據(jù)以上運算過程,可以計算出消息矩陣與固定矩陣相乘的結果矩陣為:a619664b45d1be919cd0d0074b462374接下來要用到子密鑰,將上式和子密鑰
01a39012e1442011cc7304a9590630b4進行異或運算,得到a7baf359a4959e8050a0d4a6124013c0將得到的第一輪輸出與初始輸入進行比較,轉換成二進制,可以發(fā)現(xiàn)在全部的128位中有76位發(fā)生了改變,而這僅僅是一輪。經過循環(huán)迭代加密過程的運算,將得到最終的加密消息。2.3.2AES的密鑰生成
(1)初始化函數(shù):w0w1w2w3w4w5w6w7……
w40w41w42w43
K0K1K11圖2-15AES的子密鑰生成過程w(i+1)w(i+2)w(i+3)w(i+4)w(i+5)w(i+6)w(i+7)S-盒RotWordRCon[i/4]++++w(i)+與DES算法相同的是,AES算法的解密也是加密的逆過程,由于AES算法的內部函數(shù)都是可逆的,所以解密過程僅僅是將密文作為初始輸入,按照輪子密鑰相反的方向對輸入的密文再進行加密的過程,該過程加密的最終結果就可以恢復出相應的明文。AES算法加密動畫演示2.3.3AES的分析
在AES算法中,每一輪加密常數(shù)的不同可以消除可能產生的輪密鑰的對稱性,同時,輪密鑰生成算法的非線性特性消除了產生相同輪密鑰的可能性。加/解密過程中使用不同的變換可以避免出現(xiàn)類似DES算法中出現(xiàn)的弱密鑰和半弱密鑰的可能。經過驗證,目前采用的AES加/解密算法能夠有效抵御已知的針對DES的所有攻擊方法。如部分差分攻擊、相關密鑰攻擊等。到目前為止,公開報道中對于AES算法所能采取的最有效的攻擊方法只能是窮盡密鑰搜索攻擊,所以AES算法是安全的。盡管如此,已經出現(xiàn)了一些攻擊方法能夠破解輪數(shù)較少的AES。這些攻擊法是差分分析法和現(xiàn)行分析法的變體。不可能差分(ImpossibleDifferential)攻擊法已經成功破解了6輪的AES-128,平方(Square)攻擊法已成功破解了7輪的AES-128和AES-192,沖突(Collision)攻擊法也已成功破解了7輪的AES-128和AES-192。所有這些攻擊方法對于全部10輪的AES-128都失敗了,但這表明AES可能存在有待發(fā)現(xiàn)的弱點。2.4IDEA算法
IDEA(InternationalDataEncryptionAlgorithm:國際數(shù)據(jù)加密標準)是由瑞士聯(lián)邦技術學院的中國學者來學嘉博士和著名密碼學家JamesMassey于1990年提出的一種對稱分組密碼,后經修改于1992年最后完成。這是近年來提出的各種分組密碼中一個很成功的方案,目前它的主要用途是作為內置于PGP(PrettyGoodPrivacy)中的一種加密算法。IDEA的優(yōu)點是解密和加密相同,只是密鑰各異,加/解密速度都非???,能夠方便的用軟件和硬件實現(xiàn)。IDEA算法的強度主要是由有效的混淆和擴散特性保證的,算法中的擴散是由乘加結構(MA盒)的基本單元實現(xiàn)的。圖2-16MA盒基本結構+⊙+⊙輸入輸入子密鑰子密鑰輸出輸出該結構的輸入是兩個16位的子段和兩個16位的子密鑰,輸出也是兩個16比特的子段。這一結構在算法中重復使用了8次,獲得了非常有效的擴散效果。這使得IDEA可以抵抗差分分析法和線性分析法的攻擊。IDEA加密流程·+·+·+·+++·+·+++++…………Z1(9)Z1(1)Z2(1)Z3(1)Z4(1)Z2(9)Z3(9)Z4(9)X1X2X3X4Y1Y2Y3Y4Z5(1)Z6(1)·++異或運算模216+1乘模216加IDEA加密算法中每一輪需要6個子密鑰,最后輸出過程需要4個子密鑰,所以進行加密所需的子密鑰共52個。對于子密鑰的產生,給定加密算法的一個128位的初始密鑰,將其分成8個子密鑰,每一個子密鑰的長度都是16位;將初始密鑰分組產生的這8個子密鑰作為第一輪加密所需的6個子密鑰和第二輪加密的前兩個子密鑰
表2-10 IDEA算法加密子密鑰和相應的解密子密鑰輪數(shù)加密子密鑰解密子密鑰12345678輸出變換2.6分組密碼的安全性及工作模式
2.6.1分組密碼的安全性
隨著密碼分析技術的發(fā)展,安全性成為分組密碼設計必須考慮的重要因素。前面在介紹分組密碼體制DES、AES和IDEA時,對其安全性已經作了初步的分析。目前,對于分組密碼的分析技術主要有以下幾種:窮盡搜索攻擊;差分密碼分析攻擊;線性密碼分析攻擊;相關的密鑰密碼分析攻擊。在以上4種攻擊方法中,線性密碼分析攻擊和差分密碼分析攻擊是兩個被人們所熟的分組密碼分析方法。線性密碼分析是對迭代密碼的一種已知明文攻擊,最早由MitsuruMatsui在1993年提出,這種攻擊方法使用線性近似值來描述分組密碼。鑒于分組密碼的非線性結構是加密安全的主要源泉,線性分析方法試圖發(fā)現(xiàn)這些結構中的一些弱點,其實現(xiàn)途徑是通過查找非線性的線性近似來實現(xiàn)。差分密碼分析是對迭代密碼的一種選擇明文攻擊,由EliBiham和AdiShamir于1990年提出,可以攻擊很多分組密碼。這種攻擊方法通過對那些明文有特殊差值關系的密文對進行比較分析來攻擊相應的分組密碼算法。2.6.2分組密碼的工作模式分組密碼的“工作模式”是指以某個分組密碼算法為基礎,解決對任意長度的明文的加密問題的方法。分組密碼的明文分組長度是固定的,而實際應用中待加密消息的數(shù)據(jù)量是不定的,數(shù)據(jù)格式可能是多種多樣的。為了能在各種應用場合使用DES,1980年12月,美國在FIPS74和81中定義了DES算法的4種工作模式,這些工作模式也適用于任何的分組密碼算法。
4種常用的工作模式為:電碼本模式(Electronic-CodebookMode,ECB模式)密碼反饋模式(Cipher-FeedbackMode,CFB模式)密碼分組鏈接模式(Cipher-Block-Chaining,CBC模式)輸出反饋模式(Output-FeedbackMode,OFB模式)除了上面的4種工作模式外,一種比較新的工作模式為:計數(shù)器模式(CounterMode,CTR模式)CTR模式已被采納為NIST標準之一。ECB模式
(ElectricCodeBook)DES加密第1次P1C1KDES加密第2次P2C2KDES加密第N次PNCNKDES解密PNCNK…DES解密P2C2KDES解密P1C1K…
典型應用:(1)用于隨機數(shù)的加密保護;(2)用于單分組明文的加密。優(yōu)點:(1)實現(xiàn)簡單;(2)不同明文分組的加密可并行實施,尤其是硬件實現(xiàn)時速度很快.缺點:不同的明文分組之間的加密獨立進行,故保
留了單表代替缺點,造成相同明文分組對應相同密文分組,因而不能隱蔽明文分組的統(tǒng)計規(guī)律和結構規(guī)律,不能抵抗替換攻擊.ECB模式的優(yōu)、缺點和應用CBC模式
(CipherBlockChaining)DES加密+第1次第2次第N次P1KIVC1DES加密+P2KC2DES加密+PN-1KCN-1+PN-1CN-1DES解密KCN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度書畫藝術品市場代理銷售合同
- 2025年度建筑安全風險評估與監(jiān)測委托合同
- 2025年度國際知識產權轉讓合同樣本
- 2024-2025學年福建省福州第十中學高一上學期期中考試歷史試卷
- 2025年公共租賃場地安全協(xié)議
- 2025年合作協(xié)議訂立與實施年
- 2025年醫(yī)院護師職責合同
- 2025年農場土地租賃合同年協(xié)議書
- 2025年TBBS項目申請報告模稿
- 2025年焦化二甲苯項目規(guī)劃申請報告模范
- 酒店長包房租賃協(xié)議書范本
- 2 找春天 公開課一等獎創(chuàng)新教學設計
- 2025年江蘇護理職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年江蘇南京水務集團有限公司招聘筆試參考題庫含答案解析
- 【道法】開學第一課 課件-2024-2025學年統(tǒng)編版道德與法治七年級下冊
- 口腔門診分診流程
- 建筑工程施工安全管理課件
- 2025年春新外研版(三起)英語三年級下冊課件 Unit2第1課時Startup
- 2025年上半年畢節(jié)市威寧自治縣事業(yè)單位招考考試(443名)易考易錯模擬試題(共500題)試卷后附參考答案
- 處方點評知識培訓
- 2025年新合同管理工作計劃
評論
0/150
提交評論