




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2.1分組密碼的設(shè)計(jì)準(zhǔn)則分組密碼也叫做塊密碼(BlockCipher),是指對(duì)固定長(zhǎng)度的一組明文進(jìn)行加密的一種加密算法,這一固定長(zhǎng)度稱之為分組長(zhǎng)度。2/149分組密碼是對(duì)稱密碼體制分組密碼的作用消息加密消息認(rèn)證和數(shù)據(jù)完整性保護(hù)通過(guò)用于構(gòu)造消息認(rèn)證碼(MAC)來(lái)實(shí)現(xiàn)構(gòu)造偽隨機(jī)數(shù)生成器。用于產(chǎn)生性能良好的隨機(jī)數(shù)構(gòu)造流密碼。構(gòu)成其它密碼協(xié)議的基本模塊如密鑰管理協(xié)議,身份認(rèn)證協(xié)議等在分組密碼中,必須處理一個(gè)問(wèn)題——填充。在分組加密中,要求填充是可逆的假定塊長(zhǎng)度為8字節(jié),要加密的明文數(shù)據(jù)長(zhǎng)度為9字節(jié)。那么消息被切成兩個(gè)塊,第二塊只有1個(gè)字節(jié),需要填充7個(gè)字節(jié)。如果把9字節(jié)的明文數(shù)據(jù)記為:F1F2F3F4F5F6F7F8F9(1)Zeros填充算法:需要填充的7個(gè)字節(jié)全部填充為0,分組結(jié)果為:第一個(gè)消息分組:F1F2F3F4F5F6F7F8第二個(gè)消息分組:F900000000000000Zeros填充算法無(wú)法區(qū)分第二個(gè)消息分組中F9后的0序列是否是明文中的原始序列,因此該填充算法不可逆。(2)X923填充算法:需要填充的7個(gè)字節(jié)中前6個(gè)字節(jié)填充0,最后一個(gè)字節(jié)記錄填充的總字節(jié)數(shù),分組結(jié)果為:第一個(gè)消息分組:F1F2F3F4F5F6F7F8第二個(gè)消息分組:F900000000000007(3)PKCS7填充算法:需要填充的7個(gè)字節(jié)中的每一個(gè)字節(jié)填充需要填充的總字節(jié)數(shù),分組結(jié)果為:第一個(gè)消息分組:F1F2F3F4F5F6F7F8第二個(gè)消息分組:F907070707070707
(4)ISO10126填充算法:需要填充的7個(gè)字節(jié)中前6個(gè)字節(jié)填充隨機(jī)字節(jié)序列,最后一個(gè)字節(jié)記錄填充的總字節(jié)數(shù),分組結(jié)果為:第一個(gè)消息分組:F1F2F3F4F5F6F7F8第二個(gè)消息分組:F97D2A75EFF8EF072.1.1Feistel分組密碼的基本結(jié)構(gòu)
Feistel密碼結(jié)構(gòu)是基于1949年Shannon提出的交替使用代換和置換方式構(gòu)造密碼體制的設(shè)想提出的。在設(shè)計(jì)密碼體制的過(guò)程中,Shannon提出了能夠破壞對(duì)密碼系統(tǒng)進(jìn)行各種統(tǒng)計(jì)分析攻擊的兩個(gè)基本操作:擴(kuò)散(diffusion)和混淆(confusion)。安全性設(shè)計(jì)原則
1.混淆原則
混淆性:所設(shè)計(jì)的密碼應(yīng)使得明文、密文、密鑰之間的依賴關(guān)系相當(dāng)復(fù)雜,以至于這種依賴關(guān)系對(duì)密碼分析者來(lái)說(shuō)是無(wú)法利用的。密碼分析者利用這種依賴關(guān)系的方法非常多,因此混淆性也是一個(gè)極為繁雜的概念。2.擴(kuò)散原則
擴(kuò)散是指所設(shè)計(jì)的密碼應(yīng)使得(1)密鑰的每一個(gè)比特影響密文的每一個(gè)比特,以防止對(duì)密鑰進(jìn)行逐段破譯;(2)明文的每一個(gè)比特影響密文的每一個(gè)比特,以便最充分地隱蔽明文的統(tǒng)計(jì)特性。這一準(zhǔn)則強(qiáng)調(diào)微小輸入改變能夠?qū)е螺敵龅亩辔蛔兓?。安全性設(shè)計(jì)原則明文(2L)密文(2L)R0(L)R1(L)Rn(L)L0(L)L1(L)Ln(L)ff++…K1KnLn-1(L)Rn-1(L)+f…Kn-1Feistel型的分組密碼的安全性取決于以下幾個(gè)方面:(1)明文消息和密文消息的分組大?。?)子密鑰的大?。?)循環(huán)次數(shù)(4)子密鑰產(chǎn)生算法(5)輪函數(shù)在其它條件相同的情況下,每一輪加密的分組長(zhǎng)度越大,加密算法的安全性就越高,而相應(yīng)的加密速度也越慢,效率越低。目前常用的分組加密算法的分組長(zhǎng)度取64位。
算法的安全性隨著子密鑰長(zhǎng)度的增加而提高,但是相應(yīng)的加密速度會(huì)降低,所以設(shè)計(jì)分組密碼時(shí)需要在安全性和加密效率之間進(jìn)行平衡。在實(shí)際應(yīng)用中,一般認(rèn)為,要保證分組加密算法滿足計(jì)算安全性,子密鑰的長(zhǎng)度至少要大于128位。循環(huán)越多安全性越高,相應(yīng)的加密效率也就越低。在初始密鑰給定的情況下,產(chǎn)生子密鑰的算法越復(fù)雜,加密算法的安全性越高。對(duì)于輪函數(shù)的討論相對(duì)較復(fù)雜,一般認(rèn)為,輪函數(shù)越復(fù)雜,對(duì)應(yīng)的加密算法的安全性越高。輪函數(shù)FS盒:非線性部件,規(guī)模較小,局部混淆非線性關(guān)系:實(shí)現(xiàn)混淆。規(guī)模:較小。例如:說(shuō)8進(jìn)8出。128比特需要分成16組,分別用16個(gè)S盒來(lái)處理。局部:多個(gè)S盒之間沒(méi)有關(guān)聯(lián),混淆是在各個(gè)S盒之內(nèi)進(jìn)行,是局部的。置換P:線性部件,整體擴(kuò)散2.1.2函數(shù)的設(shè)計(jì)準(zhǔn)則
Feistel分組密碼的核心是輪函數(shù)。設(shè)計(jì)的函數(shù)應(yīng)該滿足嚴(yán)格的雪崩準(zhǔn)則SAC(StrictAvalancheCriterion)位獨(dú)立準(zhǔn)則BIG(BitIndependenceCriterion)保證的雪崩準(zhǔn)則GAC(GuaranteedAvalancheCriterion)對(duì)于任意的
,當(dāng)任何一個(gè)輸入位
發(fā)生改變時(shí),S-盒的任何輸出位
的值發(fā)生改變的概率為
對(duì)于任意的
,當(dāng)任何一個(gè)輸入位
發(fā)生改變時(shí),輸出位
和
的值應(yīng)該獨(dú)立地發(fā)生改變。對(duì)于輸入序列中1位的值發(fā)生改變,輸出序列中至少有
位的值發(fā)生改變。一般要求
的值介于2到5之間。2.2數(shù)據(jù)加密標(biāo)準(zhǔn)----DES
DES是DataEncryptionStandard(數(shù)據(jù)加密標(biāo)準(zhǔn))的縮寫(xiě)。它是由IBM公司研制的一種加密算法,二十年來(lái),它一直活躍在國(guó)際保密通信的舞臺(tái)上,扮演了十分重要的角色。DES算法的歷史過(guò)程20世紀(jì)70年代中期,美國(guó)政府認(rèn)為需要一個(gè)強(qiáng)大的標(biāo)準(zhǔn)加密系統(tǒng),美國(guó)國(guó)家標(biāo)準(zhǔn)局提出了開(kāi)發(fā)這種加密算法的請(qǐng)求,最終IBM的Lucifer加密系統(tǒng)勝出。1972年美國(guó)商業(yè)部所屬的美國(guó)國(guó)家標(biāo)準(zhǔn)局NBS(NationalBureauofStandards)開(kāi)始實(shí)施計(jì)算機(jī)數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)的開(kāi)發(fā)計(jì)劃。
1973年5月13日,美國(guó)國(guó)家標(biāo)準(zhǔn)局NBS發(fā)布文告征集在傳輸和存貯數(shù)據(jù)中保護(hù)計(jì)算機(jī)數(shù)據(jù)的密碼算法。
1975年3月17日,首次公布DES算法描述,認(rèn)真地進(jìn)行公開(kāi)討論。
1977年1月15日,正式批準(zhǔn)為無(wú)密級(jí)應(yīng)用的加密標(biāo)準(zhǔn)(FIPS—46),當(dāng)年7月1日正式生效。以后每隔5年美國(guó)國(guó)家安全局對(duì)其安全性進(jìn)行一次評(píng)估,以便確定是否繼續(xù)使用它作為加密標(biāo)準(zhǔn)。在1994年1月的評(píng)估后決定1998年12月以后不再將DES作為數(shù)據(jù)加密標(biāo)準(zhǔn)。DES是一個(gè)分組加密算法,它以64位為分組對(duì)數(shù)據(jù)加密。同時(shí)DES也是一個(gè)對(duì)稱算法:加密和解密用的是同一個(gè)算法。它的密鑰長(zhǎng)度是56位(因?yàn)槊總€(gè)第8位都用作奇偶校驗(yàn)),密鑰可以是任意的56位的數(shù),其中極少量的56位數(shù)被認(rèn)為是弱密鑰,為了保證加密的安全性,在加密過(guò)程中應(yīng)該盡量避開(kāi)使用這些弱密鑰。2.2.1DES的描述
DES是一個(gè)包含16個(gè)階段的“替換--置換”的分組加密算法,64位的分組明文序列作為加密算法的輸入,經(jīng)過(guò)16輪加密得到64位的密文序列。盡管DES密鑰的長(zhǎng)度有64位,但用戶只提供56位,其余的8位由算法提供,分別放在8、16、24、32、40、48、56、64位上,結(jié)果是每8位的密鑰包含了用戶提供的7位和DES算法確定的1位。添加的位是有選擇的,使得每個(gè)8位的塊都含有奇數(shù)個(gè)奇偶校驗(yàn)位(即1的個(gè)數(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輪同樣運(yùn)算…L16+R16=L15f(R15,ki)+IP-1置換(64bits)DES算法結(jié)構(gòu)密文(64bits)DES加密過(guò)程中包含的基本操作:初始置換初始置換(InitialPermutation,簡(jiǎn)稱置換)在第一輪運(yùn)算之前執(zhí)行。
IP置換表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157(1)58表示:結(jié)果中位于第1個(gè)位置的值,等于原文中第58個(gè)位置的值(2)圖中的一格代表1bit,共有64bit,即8字節(jié)DES:IP置換初始逆置換(InverseInitialPermutation)40818165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725初始置換和對(duì)應(yīng)的逆初始置換操作并不會(huì)增強(qiáng)DES算法的安全性,它的主要目的是為了更容易地將明文和密文數(shù)據(jù)以字節(jié)大小放入DES芯片中。DES加密流程LiRiLi-1Ri-1FKiR16L16L15R15FK1664比特明文64比特密文迭代16輪
初始置換初始逆置換第16輪加密:::第一輪加密:第i輪加密Li-1Ri-1密鑰
Li密鑰RiE盒擴(kuò)展S盒替代P盒置換移位移位壓縮變換++一輪DES加密過(guò)程DES算法的第
i
(i=1,2,…,15)輪加密結(jié)構(gòu)圖缺點(diǎn):擴(kuò)散速度慢:輪變換的輸入有一半沒(méi)有改變;左右塊的處理不能并行實(shí)施。優(yōu)點(diǎn):單輪變換的數(shù)學(xué)描述:
Li=Ri-1Ri=Li-1F(Ri-1,Ki)
設(shè)計(jì)容易:輪函數(shù)F不要求可逆。FKiLi-1(32位)Ri-1(32位)LiRiFeistel結(jié)構(gòu)
擴(kuò)展置換E輪密鑰加S盒置換P輪函數(shù)FDES:f
的結(jié)構(gòu)(即黑盒變換)R(32bit)EE(R)(48bit)K(48bit)B1
B2
B3
B4
B5
B6
B7
B8S1S2S3S4S5S6S7S8C1C2C3C4C5C6C7C8P+(48bit)(32bit)123456789101112131415161718192021222324252627282930313232123
454567898
91011121312131415161716171819202120212223242524252627282928293031321擴(kuò)展置換E擴(kuò)展置換E將64位輸入序列的右半部分從32位擴(kuò)展到48位。S-盒替換(S-boxesSubstitution)S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S-盒21518146113497213120510313471528141201106911501441110413158126932151381013154211671205149S-盒31009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S-盒47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S-盒52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S-盒61211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S-盒74112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S-盒81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S—盒的輸出表示設(shè)對(duì)應(yīng)S-盒1的輸入序列為:101111行號(hào):11即3列號(hào):0111即70123
012345689101112131415結(jié)果為7即01117
迄今為止,有關(guān)方面未曾完全公開(kāi)有關(guān)DES的S盒的設(shè)計(jì)準(zhǔn)則。1976年,NSA披露過(guò)下述準(zhǔn)則:1:S盒的輸出都不是其輸入的線性或仿射函數(shù)。2:改變S盒的一個(gè)輸入比特,其輸出至少有兩比特產(chǎn)生變化,即近一半產(chǎn)生變化。3:當(dāng)S盒的任一輸入位保持不變,其它5位輸入變化時(shí)(共有25=32種情況),輸出數(shù)字中的0和1的總數(shù)近于相等。這三點(diǎn)使DES的S盒能夠?qū)崿F(xiàn)較好的混淆。S盒的設(shè)計(jì)準(zhǔn)則置換PP盒置換是對(duì)32比特?cái)?shù)據(jù)進(jìn)行比特置換。置換P的輸入/輸出關(guān)系可以用表來(lái)表示,變換規(guī)則和前面介紹的初始置換相同作用:置換P與S盒互相配合,起到了擴(kuò)散作用,共同確保DES的安全。置換P(續(xù))(1)P盒的各輸入組的4個(gè)比特都分配到不同的輸出組之中;比如:輸入第一組1,2,3,4比特在輸出中分別位于第3,5,6,8組。P盒的設(shè)計(jì)特點(diǎn)(2)P盒的各輸出組的4個(gè)比特都來(lái)自不同的輸入組。比如:輸出第一組的四個(gè)比特分別來(lái)自輸入的第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解密:加密和解密可使用相同的算法,即解密過(guò)程是將密文作為輸入序列進(jìn)行相應(yīng)的DES加密,與加密過(guò)程惟一不同之處是解密過(guò)程使用的輪密鑰與加密過(guò)程使用的次序相反。解密過(guò)程產(chǎn)生各輪子密鑰的算法與加密過(guò)程生成輪密鑰的算法相同,與加密過(guò)程不同的是解密過(guò)程產(chǎn)生子密鑰時(shí),初始密鑰進(jìn)行循環(huán)右移操作,每產(chǎn)生一個(gè)子密鑰對(duì)應(yīng)的初始密鑰移動(dòng)位數(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的擴(kuò)展變換0R循環(huán)左移壓縮置換密鑰置換fS—盒1Kp—盒0L1R?=),(0Rf1K0L(32bit)15R16L=實(shí)例演示
取明文M為M=0123456789ABCDEF0000000100100011010001010110011110001001101010111100110111101111寫(xiě)成二進(jìn)制: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進(jìn)制:明文M=0123456789ABCDEF密文C=85E813540F0AB405輪子密鑰的生成:K=133457799BBCDFF1K=0001001100110100010101110111100110011011101111001101111111110001寫(xiě)成二進(jìn)制:密鑰置換: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ù)加密標(biāo)準(zhǔn)以來(lái),DES遭到了猛烈的批評(píng)和懷疑。首先是DES的密鑰長(zhǎng)度是56位,很多人擔(dān)心這樣的密鑰長(zhǎng)度不足以抵御窮舉式搜索攻擊;其次是DES的內(nèi)部結(jié)構(gòu)即S-盒的設(shè)計(jì)標(biāo)準(zhǔn)是保密的,這樣使用者無(wú)法確信DES的內(nèi)部結(jié)構(gòu)不存在任何潛在的弱點(diǎn)。DES的弱密鑰和半弱密鑰
如果DES的秘密產(chǎn)生的子密鑰滿足:則有:這樣的密鑰稱為DES算法的弱密鑰。DES的弱密鑰有以下4種:如果DES的密鑰和滿足:則稱密鑰和是DES算法的一對(duì)半弱密鑰。半弱密鑰只交替的生成兩種密鑰。DES的半弱密鑰有以下6對(duì):針對(duì)DES的攻擊方法對(duì)于DES的攻擊,最有意義的方法是差分分析方法(DifferenceAnalysisMethod)。差分分析方法是一種選擇明文攻擊法,最初是由IBM的設(shè)計(jì)小組在1974年發(fā)現(xiàn)的,所以IBM在設(shè)計(jì)DES算法的S-盒和換位變換時(shí)有意識(shí)的避免差分分析攻擊,對(duì)S-盒在設(shè)計(jì)階段進(jìn)行了優(yōu)化,使得DES能夠抵抗差分分析攻擊。對(duì)DES攻擊的另一種方式是線性分析方法(LinearAnalysisMethod)線性分析方法是一種已知明文攻擊法,由MitsuruMatsui在1993年提出的。這種攻擊需要大量的已知“明文----密文”對(duì),但比差分分析方法的要少。當(dāng)將DES用于諸如智能卡等硬件裝置時(shí),通過(guò)觀察硬件的性能特征,可以發(fā)現(xiàn)一些加密操作的信息,這種攻擊方法叫做旁路攻擊法(Side-ChannelAttack)。例如,當(dāng)處理密鑰的“1”位時(shí),要消耗更多的能量,通過(guò)監(jiān)控能量的消耗,可以知道密鑰的每個(gè)位;還有一種攻擊是監(jiān)控完成一個(gè)算法所耗時(shí)間的微秒數(shù),所耗時(shí)間數(shù)也可以反映部分密鑰的位。DES加密的輪數(shù)對(duì)安全性也有較大的影響。如果DES只進(jìn)行8輪加密過(guò)程,則在普通的個(gè)人電腦上只需要幾分鐘就可以破譯密碼。如果DES加密過(guò)程進(jìn)行16輪,應(yīng)用差分分析攻擊比窮盡搜索攻擊稍微有效一些。然而如果DES加密過(guò)程進(jìn)行18輪,則差分分析攻擊和窮盡搜索攻擊的效率基本一樣。如果DES加密過(guò)程進(jìn)行19輪,則窮盡搜索攻擊的效率還要優(yōu)于差分分析攻擊的效率。DES算法的幾種改進(jìn):在以上加密過(guò)程中,當(dāng)明文序列的結(jié)構(gòu)有一定的固定格式時(shí),相應(yīng)的密文序列也會(huì)表現(xiàn)出一定的規(guī)律性,從而導(dǎo)致加密算法不安全。對(duì)該問(wèn)題可以采用分組反饋的方法進(jìn)行改進(jìn)。密鑰DESKDESKDESK++x1x2xny1y2yn……密鑰DESK-1DESK-1DESK-1++x1x2xny1y2yn……加密解密改進(jìn)方法二:由于DES算法的密鑰長(zhǎng)度只有56位,安全性較差。最簡(jiǎn)單的改進(jìn)算法安全性的方法是應(yīng)用不同的密鑰對(duì)同一個(gè)分組消息進(jìn)行多次加密,由此產(chǎn)生了多重DES加密算法。2.2.3多重DES
相應(yīng)的解密過(guò)程為:對(duì)雙重DES加密方法的安全性分析1992年人們證明了由二個(gè)不同的密鑰組成的二重DES對(duì)應(yīng)的映射不會(huì)出現(xiàn)在單重DES定義的映射中,這意味著二重DES不會(huì)等價(jià)于單重DES。這說(shuō)明雙重DES加密算法的密鑰空間要大于DES算法,所以其安全性優(yōu)于DES算法。雙重DES加密算法不能抵抗中間點(diǎn)匹配攻擊法(Meet-in-the-MiddleAttack)。加密解密內(nèi)存明文密鑰1密文密鑰2用Ki加密的結(jié)果用Kj解密匹配查找圖2-12三重DES加密流程解密過(guò)程首先使用第一個(gè)密鑰進(jìn)行DES解密,然后使用第二個(gè)密鑰對(duì)第一次的結(jié)果進(jìn)行DES加密,最后再使用第一個(gè)密鑰對(duì)第二次的結(jié)果進(jìn)行DES解密。圖2-13三重DES解密流程以上這種加密模式稱為“加密-解密-加密(EDE)模式”。DES算法的密鑰長(zhǎng)度是56位,所以三重DES算法的密鑰長(zhǎng)度是112位。使用兩個(gè)密鑰的三重DES是一種較受歡迎的改進(jìn)算法,目前三重DES已經(jīng)被用于密鑰管理標(biāo)準(zhǔn)ANSX9.17和ISO8732中。2.3高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)----AES
1997年7月,借助于互聯(lián)網(wǎng)上的14000多臺(tái)計(jì)算機(jī),花費(fèi)了90天時(shí)間破解了DES密鑰。6個(gè)月后,用這種方法破解DES所花費(fèi)的時(shí)間減少了39天。1998年7月,一臺(tái)特殊構(gòu)造的計(jì)算機(jī)(名為DeepCrack)只用了56個(gè)小時(shí)就破解了一個(gè)DES密鑰。顯然,DES不再是一個(gè)可靠的加密系統(tǒng)。為此,美國(guó)國(guó)家標(biāo)準(zhǔn)局提出了一項(xiàng)取代DES的投標(biāo)計(jì)劃,這就是高級(jí)加密標(biāo)準(zhǔn)AES(AdvancedEncryptionStandard)。對(duì)于DES算法的改進(jìn)工作從1997年開(kāi)始公開(kāi)進(jìn)行。1997年4月15日,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)發(fā)起了征集DES的替代算法AES(AdvancedEncryptionStandard)算法的活動(dòng),希望能夠找到一種非保密的、可以公開(kāi)和免費(fèi)使用的新的分組密碼算法,使其成為21世紀(jì)秘密和公開(kāi)部門(mén)的數(shù)據(jù)加密標(biāo)準(zhǔn)。1997年9月12日,發(fā)布了征集算法的正式公告和具體細(xì)節(jié),其要求如下:(1)應(yīng)是對(duì)稱分組加密,具有可變長(zhǎng)度的的密鑰(128、192或256位),具有128位的分組長(zhǎng)度;(2)應(yīng)比三重DES快、至少與三重DES一樣安全;(3)應(yīng)可應(yīng)用于公共領(lǐng)域并能夠在全世界范圍內(nèi)免費(fèi)使用;(4)應(yīng)至少在30年內(nèi)是安全的。1998年8月20日,NIST在“第一次AES候選大會(huì)”上公布了滿足條件的來(lái)自10個(gè)不同國(guó)家的15個(gè)AES的候選算法。在確定最終算法之前,這些算法先經(jīng)受了一個(gè)很長(zhǎng)的公開(kāi)分析過(guò)程。在第二次會(huì)議之后,NIST從這15個(gè)候選算法中選出了5個(gè)AES的候選算法,分別是:IBM提交的MARS;RSA實(shí)驗(yàn)室提交的RC6;Daemen和Rijmen提交的Rijndael;Anderson、Biham和Knudsen提交的Serpent;Schneier、Whiting、Wagner、Hall和Ferguson提交的Twofish。這五個(gè)候選的算法都經(jīng)受了6個(gè)月的考驗(yàn),又經(jīng)過(guò)6個(gè)月的測(cè)試后,到2000年10月2日,NIST正式宣布Rijndael勝出,被選擇為高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn),該算法是由兩位比利時(shí)人Daemen和Rijmen提出的。Rijndael能夠勝出,除了在軟件實(shí)現(xiàn)時(shí)速度和子密鑰生成時(shí)間上的優(yōu)勢(shì)外,另一部分原因是它能用硬件有效的實(shí)現(xiàn)。加密速度和硬件實(shí)現(xiàn)的特性也是評(píng)估加密算法優(yōu)劣的重要因素。AES的描述
AES也是一個(gè)典型的迭代型分組密碼,分組長(zhǎng)度:128比特,密鑰長(zhǎng)度:128位、192位、256位,分別記為AES-128、AES-192、
AES-256。加密輪數(shù)依賴于所選擇的子密鑰長(zhǎng)度。對(duì)于128位的密鑰長(zhǎng)度,加密的輪數(shù)為10;對(duì)于192位的密鑰長(zhǎng)度,加密的輪數(shù)為12;對(duì)于256位的密鑰長(zhǎng)度,加密的輪數(shù)為14。Rijndael實(shí)際上有三個(gè)版本:AES-128、AES-192、AES-256。Rijndael不像DES那樣在每個(gè)循環(huán)上使用“替換和置換”操作,而是進(jìn)行多重循環(huán)的“替換、列混合密鑰加”操作。明文M
第1輪加密第i輪加密第10輪加密密文CAES加密流程字節(jié)代替行移位列混合密鑰加字節(jié)代替行移位密鑰加狀態(tài)矩陣將128比特狀態(tài)數(shù)據(jù)依次分為16個(gè)字節(jié)數(shù)據(jù)單元:比特,字節(jié)和字高級(jí)加密標(biāo)準(zhǔn)(AES)
數(shù)學(xué)基礎(chǔ)字節(jié)的運(yùn)算加法乘法字的運(yùn)算加法乘法AES數(shù)學(xué)基礎(chǔ)f(x)為系數(shù)在GF(2)上任意次數(shù)的多項(xiàng)式m(x)為系數(shù)在GF(2)上的8次不可約多項(xiàng)式其中m(x)=x8
x4
x3
x
1AES中的字節(jié)運(yùn)算定義在如下構(gòu)造的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進(jìn)制表示)
11010011001000110000111100000000←D3640F00+11100011011001001000000110101011←E32381AB=00110000010001111000111010101011←30478EAB字的乘法乘法:兩個(gè)字對(duì)應(yīng)字多項(xiàng)式的乘積,規(guī)定該乘法必須要取模多項(xiàng)式x41多項(xiàng)式形式AES算法加密過(guò)程中用到的相關(guān)操作AES中的操作都是以字節(jié)為對(duì)象的,操作所用到的變量是由一定數(shù)量的字節(jié)構(gòu)成。輸入的明文消息長(zhǎng)度是128位,將其表示為16個(gè)字節(jié),初始化消息矩陣State如下:函數(shù)ByteSubs(State)對(duì)消息矩陣State中的每個(gè)元素(每個(gè)元素對(duì)應(yīng)每一個(gè)字節(jié))進(jìn)行一個(gè)非線性替換,任一個(gè)非零元素(即由不可約的8次多項(xiàng)式生成的伽羅瓦域)被下面的變換所代替:其中:b0b7AESS-盒算法設(shè)x=00001001轉(zhuǎn)換為16進(jìn)制09行列查詢S盒AES算法的“S-盒”
16BB54B00F2D99416842E6BF0D89A18CFDF2855CEE9871E9B948ED9691198F8E1E9E1DC186B95735610EF6034866B53E70D8A8BBD481F74DDE8C6B4A61C2E2578BAC08AE7A65EAF4566CA94ED58D6D37C8E7B79E4959162ACD3C25C2406490A3A32E0ADB0B5EDE14B8EE4688902A22DC4F8160973195D643D7EA7C41744975FEC130CCD8D2F3FF1021DAB6BCF5389D928F40A3517A89F3C507F02F94585334D43FBAAEFD06CF584C4A39BECB6A5BB1FC20ED00D1535842FE329B3D63B52A05A6E1B1A2C8309475B227EBE28012079A059618C323C70431531D871F1E5A534CCF73F362693FDB72C072A49CAFA2D4ADF04759FA7DC982CA176ABD7FE2B670130C56F6BF27B777C630FEDCBA9876543210y返回AESS-盒算法設(shè)x=00001001轉(zhuǎn)換為16進(jìn)制09所以y=01。這個(gè)對(duì)應(yīng)關(guān)系如果按書(shū)中公式(2-1)計(jì)算可得出同樣結(jié)果。行列查詢S盒函數(shù)ShiftRows(State)在消息矩陣State的每行上進(jìn)行操作S00S01S02S03不移位S10S11S12S13左移一位S20S21S22S23左移兩位S30S31S32S33左移三位函數(shù)MixColumns(State)對(duì)State的每一列進(jìn)行操作。首先取當(dāng)前的消息矩陣State中的一列,定義為:把這一列表示成一個(gè)三次多項(xiàng)式:其中的系數(shù)是字節(jié),所以多項(xiàng)式定義在上。矩陣形式函數(shù)AddRoundkey(State,Roundkey)將Roundkey和State中的元素逐字節(jié)、逐位地進(jìn)行異或運(yùn)算。其中Roundkey使用一個(gè)固定的密鑰編排方案產(chǎn)生,每一輪的Roundkey是不同的。AES一輪操作示例假設(shè)第i輪消息表示成十六進(jìn)制:426f62206c6f6f6b
20617420
74686973寫(xiě)成消息矩陣形式為:42
6c
20
746f
6f
61
68626f74
6920
6b
20
73在“S-盒”中查找出與每個(gè)輸入元素對(duì)應(yīng)的元素,從而生成如下的輸出矩陣:2c50b792a8a8ef45aaa892f9b77fb78f42
6c
20
746f
6f
61
68626f74
6920
6b
20
73S盒替代接下來(lái)的一個(gè)階段是旋轉(zhuǎn)各行:2c50b792a8ef45a892f9aaa88fb77fb72c50b792
a8a8ef45
aaa892f9
b77fb78f行移位接下來(lái)的一個(gè)階段進(jìn)行乘法操作。對(duì)于第一列進(jìn)行如下的轉(zhuǎn)換:根據(jù)以上運(yùn)算過(guò)程,可以計(jì)算出消息矩陣與固定矩陣相乘的結(jié)果矩陣為:a619664b45d1be919cd0d0074b462374接下來(lái)要用到子密鑰,將上式和子密鑰
01a39012e1442011cc7304a9590630b4進(jìn)行異或運(yùn)算,得到a7baf359a4959e8050a0d4a6124013c0將得到的第一輪輸出與初始輸入進(jìn)行比較,轉(zhuǎn)換成二進(jìn)制,可以發(fā)現(xiàn)在全部的128位中有76位發(fā)生了改變,而這僅僅是一輪。經(jīng)過(guò)循環(huán)迭代加密過(guò)程的運(yùn)算,將得到最終的加密消息。2.3.2AES的密鑰生成
(1)初始化函數(shù):w0w1w2w3w4w5w6w7……
w40w41w42w43
K0K1K11圖2-15AES的子密鑰生成過(guò)程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算法的解密也是加密的逆過(guò)程,由于AES算法的內(nèi)部函數(shù)都是可逆的,所以解密過(guò)程僅僅是將密文作為初始輸入,按照輪子密鑰相反的方向?qū)斎氲拿芪脑龠M(jìn)行加密的過(guò)程,該過(guò)程加密的最終結(jié)果就可以恢復(fù)出相應(yīng)的明文。AES算法加密動(dòng)畫(huà)演示2.3.3AES的分析
在AES算法中,每一輪加密常數(shù)的不同可以消除可能產(chǎn)生的輪密鑰的對(duì)稱性,同時(shí),輪密鑰生成算法的非線性特性消除了產(chǎn)生相同輪密鑰的可能性。加/解密過(guò)程中使用不同的變換可以避免出現(xiàn)類似DES算法中出現(xiàn)的弱密鑰和半弱密鑰的可能。經(jīng)過(guò)驗(yàn)證,目前采用的AES加/解密算法能夠有效抵御已知的針對(duì)DES的所有攻擊方法。如部分差分攻擊、相關(guān)密鑰攻擊等。到目前為止,公開(kāi)報(bào)道中對(duì)于AES算法所能采取的最有效的攻擊方法只能是窮盡密鑰搜索攻擊,所以AES算法是安全的。盡管如此,已經(jīng)出現(xiàn)了一些攻擊方法能夠破解輪數(shù)較少的AES。這些攻擊法是差分分析法和現(xiàn)行分析法的變體。不可能差分(ImpossibleDifferential)攻擊法已經(jīng)成功破解了6輪的AES-128,平方(Square)攻擊法已成功破解了7輪的AES-128和AES-192,沖突(Collision)攻擊法也已成功破解了7輪的AES-128和AES-192。所有這些攻擊方法對(duì)于全部10輪的AES-128都失敗了,但這表明AES可能存在有待發(fā)現(xiàn)的弱點(diǎn)。2.4IDEA算法
IDEA(InternationalDataEncryptionAlgorithm:國(guó)際數(shù)據(jù)加密標(biāo)準(zhǔn))是由瑞士聯(lián)邦技術(shù)學(xué)院的中國(guó)學(xué)者來(lái)學(xué)嘉博士和著名密碼學(xué)家JamesMassey于1990年提出的一種對(duì)稱分組密碼,后經(jīng)修改于1992年最后完成。這是近年來(lái)提出的各種分組密碼中一個(gè)很成功的方案,目前它的主要用途是作為內(nèi)置于PGP(PrettyGoodPrivacy)中的一種加密算法。IDEA的優(yōu)點(diǎn)是解密和加密相同,只是密鑰各異,加/解密速度都非常快,能夠方便的用軟件和硬件實(shí)現(xiàn)。IDEA算法的強(qiáng)度主要是由有效的混淆和擴(kuò)散特性保證的,算法中的擴(kuò)散是由乘加結(jié)構(gòu)(MA盒)的基本單元實(shí)現(xiàn)的。圖2-16MA盒基本結(jié)構(gòu)+⊙+⊙輸入輸入子密鑰子密鑰輸出輸出該結(jié)構(gòu)的輸入是兩個(gè)16位的子段和兩個(gè)16位的子密鑰,輸出也是兩個(gè)16比特的子段。這一結(jié)構(gòu)在算法中重復(fù)使用了8次,獲得了非常有效的擴(kuò)散效果。這使得IDEA可以抵抗差分分析法和線性分析法的攻擊。IDEA加密流程·+·+·+·+++·+·+++++…………Z1(9)Z1(1)Z2(1)Z3(1)Z4(1)Z2(9)Z3(9)Z4(9)X1X2X3X4Y1Y2Y3Y4Z5(1)Z6(1)·++異或運(yùn)算模216+1乘模216加IDEA加密算法中每一輪需要6個(gè)子密鑰,最后輸出過(guò)程需要4個(gè)子密鑰,所以進(jìn)行加密所需的子密鑰共52個(gè)。對(duì)于子密鑰的產(chǎn)生,給定加密算法的一個(gè)128位的初始密鑰,將其分成8個(gè)子密鑰,每一個(gè)子密鑰的長(zhǎng)度都是16位;將初始密鑰分組產(chǎn)生的這8個(gè)子密鑰作為第一輪加密所需的6個(gè)子密鑰和第二輪加密的前兩個(gè)子密鑰
表2-10 IDEA算法加密子密鑰和相應(yīng)的解密子密鑰輪數(shù)加密子密鑰解密子密鑰12345678輸出變換2.6分組密碼的安全性及工作模式
2.6.1分組密碼的安全性
隨著密碼分析技術(shù)的發(fā)展,安全性成為分組密碼設(shè)計(jì)必須考慮的重要因素。前面在介紹分組密碼體制DES、AES和IDEA時(shí),對(duì)其安全性已經(jīng)作了初步的分析。目前,對(duì)于分組密碼的分析技術(shù)主要有以下幾種:窮盡搜索攻擊;差分密碼分析攻擊;線性密碼分析攻擊;相關(guān)的密鑰密碼分析攻擊。在以上4種攻擊方法中,線性密碼分析攻擊和差分密碼分析攻擊是兩個(gè)被人們所熟的分組密碼分析方法。線性密碼分析是對(duì)迭代密碼的一種已知明文攻擊,最早由MitsuruMatsui在1993年提出,這種攻擊方法使用線性近似值來(lái)描述分組密碼。鑒于分組密碼的非線性結(jié)構(gòu)是加密安全的主要源泉,線性分析方法試圖發(fā)現(xiàn)這些結(jié)構(gòu)中的一些弱點(diǎn),其實(shí)現(xiàn)途徑是通過(guò)查找非線性的線性近似來(lái)實(shí)現(xiàn)。差分密碼分析是對(duì)迭代密碼的一種選擇明文攻擊,由EliBiham和AdiShamir于1990年提出,可以攻擊很多分組密碼。這種攻擊方法通過(guò)對(duì)那些明文有特殊差值關(guān)系的密文對(duì)進(jìn)行比較分析來(lái)攻擊相應(yīng)的分組密碼算法。2.6.2分組密碼的工作模式分組密碼的“工作模式”是指以某個(gè)分組密碼算法為基礎(chǔ),解決對(duì)任意長(zhǎng)度的明文的加密問(wèn)題的方法。分組密碼的明文分組長(zhǎng)度是固定的,而實(shí)際應(yīng)用中待加密消息的數(shù)據(jù)量是不定的,數(shù)據(jù)格式可能是多種多樣的。為了能在各種應(yīng)用場(chǎng)合使用DES,1980年12月,美國(guó)在FIPS74和81中定義了DES算法的4種工作模式,這些工作模式也適用于任何的分組密碼算法。
4種常用的工作模式為:電碼本模式(Electronic-CodebookMode,ECB模式)密碼反饋模式(Cipher-FeedbackMode,CFB模式)密碼分組鏈接模式(Cipher-Block-Chaining,CBC模式)輸出反饋模式(Output-FeedbackMode,OFB模式)除了上面的4種工作模式外,一種比較新的工作模式為:計(jì)數(shù)器模式(CounterMode,CTR模式)CTR模式已被采納為NIST標(biāo)準(zhǔn)之一。ECB模式
(ElectricCodeBook)DES加密第1次P1C1KDES加密第2次P2C2KDES加密第N次PNCNKDES解密PNCNK…DES解密P2C2KDES解密P1C1K…
典型應(yīng)用:(1)用于隨機(jī)數(shù)的加密保護(hù);(2)用于單分組明文的加密。優(yōu)點(diǎn):(1)實(shí)現(xiàn)簡(jiǎn)單;(2)不同明文分組的加密可并行實(shí)施,尤其是硬件實(shí)現(xiàn)時(shí)速度很快.缺點(diǎn):不同的明文分組之間的加密獨(dú)立進(jìn)行,故保
留了單表代替缺點(diǎn),造成相同明文分組對(duì)應(yīng)相同密文分組,因而不能隱蔽明文分組的統(tǒng)計(jì)規(guī)律和結(jié)構(gòu)規(guī)律,不能抵抗替換攻擊.ECB模式的優(yōu)、缺點(diǎn)和應(yīng)用CBC模式
(CipherBlockChaining)DES加密+第1次第2次第N次P1KIVC1DES加密+P2KC2DES加密+PN-1KCN-1+PN-1CN-1DES解密KCN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鎮(zhèn)痛藥培訓(xùn)課件
- 2025年球型網(wǎng)絡(luò)攝像機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年玄武巖纖維布項(xiàng)目可行性研究報(bào)告
- 2025年牛肉丁項(xiàng)目可行性研究報(bào)告
- 2025春新版六年級(jí)科學(xué)下冊(cè) 填空題專項(xiàng)練習(xí)
- 低壓電器 課件 單元三 項(xiàng)目二 任務(wù)三 掌握三相異步電動(dòng)機(jī)單向連續(xù)控制線路
- 呼和浩特民族學(xué)院《內(nèi)蒙古地理》2023-2024學(xué)年第二學(xué)期期末試卷
- 麗水市重點(diǎn)中學(xué)2024-2025學(xué)年初三畢業(yè)班適應(yīng)性練習(xí)卷(化學(xué)試題)含解析
- 2025春新版四年級(jí)下冊(cè)語(yǔ)文 【期末復(fù)習(xí):文言文專項(xiàng)考查】
- 2025春新版【五年級(jí)下冊(cè)語(yǔ)文】 詞語(yǔ)造句訓(xùn)練
- 2025年03月四川成都農(nóng)業(yè)科技中心公開(kāi)招聘筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年03月國(guó)家機(jī)關(guān)事務(wù)管理局所屬事業(yè)單位公開(kāi)招聘應(yīng)屆畢業(yè)生14人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 全過(guò)程工程咨詢投標(biāo)方案(技術(shù)方案)
- 旅拍店合伙人協(xié)議書(shū)范本
- 握筆姿勢(shì)詳解全解課件
- 《三會(huì)一課》培訓(xùn)測(cè)試題
- Seminar_帶SPL的安全集成
- 國(guó)家開(kāi)放大學(xué)《電工電子技術(shù)》章節(jié)自測(cè)題參考答案
- GB∕T 16754-2021 機(jī)械安全 急停功能 設(shè)計(jì)原則
- 中國(guó)美術(shù)學(xué)院學(xué)士學(xué)位論文規(guī)范化要求
- 百科知識(shí)競(jìng)賽PPT(可直接使用)
評(píng)論
0/150
提交評(píng)論