版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
河南科技大學(xué)畢業(yè)設(shè)計(論文)題目_________________姓名________院(系)________專業(yè)________指引教師________年月日畢業(yè)設(shè)計(論文)任務(wù)書填表時間:年12月研究所(教研室)主任簽字:年月日對稱密鑰密碼算法研究摘要對稱密碼是當代密碼學(xué)中一種重要分支,其誕生和發(fā)展有著廣泛使用背景和重要理論價值。當前這一領(lǐng)域尚有許多理論和實際問題有待繼續(xù)研究和完善。這些問題涉及:如何設(shè)計可證明安全密碼算法;如何加強既有算法及其工作模式安全性;如何測試密碼算法安全性;如何設(shè)計安全密碼組件,例如S-盒、擴散層及密鑰擴展算法等。當前分組密碼所采用整體構(gòu)造可分為Feistel構(gòu)造(如CAST-256、DEAL、DFC、E2等)、SP網(wǎng)絡(luò)(如Safer+、Serpent等)及其她密碼構(gòu)造(例如Frog和HPC)。Feistel構(gòu)造最大長處是容易保證加解密相似性;SP網(wǎng)絡(luò)則是擴散性能比較好。AES沿襲了SQUARE特點采用了SP網(wǎng)絡(luò)構(gòu)造,并在加解密過程大量使用矩陣運算,這樣做使得加密和解密過程略有不同,但大幅提高了算法實現(xiàn)效率。雖然AES設(shè)計在分組密碼系統(tǒng)發(fā)展上有了一種質(zhì)奔騰,然而當前仍有研究和改進空間。AES在各種平臺上實現(xiàn)效率有待進一步提高,同步新加解密工作模式也有待研究。本論文簡樸簡介了對稱密碼學(xué)某些基本知識和AES算法工作過程,依照AES算法大量矩陣運算特點,改進了老式加解密速度,給出了其在時間上優(yōu)化:該算法時間優(yōu)化可以提高AES算法加解密速度。核心詞:對稱加密算法,DES,Rijndael,有限域TheResearchOfSymmetricKeyCipherAlgorithmABSTRACTSymmetricalcryptosystemisanimportantbranchofmoderncryptography,withitsappearanceanddevelopmenttherearewideapplicantbackgroundandtheorialvalue.Therearelottheorialandapplicantproblemsneedtobestudiedandoptimized,suchas:howtodesignaprovablesafecryptosystem,howtostrengthenthesaftyofalgorithmsandworkingmoduleswhicharealreadyavailable,howtotestthesaftyofacipheralgorithm,howtodesignsafecomponentsofacryptosystem,asS-boxes,diffusinglayers,andkey-expandingprocesses,etc.ThegeneralarchitectureofsymmetricalcryptosystematpresentcanbesortedasFeistel(CAST-256,DEAL,DFCE2,etc.),SPnetwork(Safer+,Serpent,etc.)andotherarchitectures(Frog,HPC).SymmetryisthemostdistinctcharacterofFeistel,whileSPnetworkhasagooddeffusecapability.AESinheritedSQUAREindesignation,andaddedinalotofmatrixoperations.Thiscausesabitdifferentbetweenencryptionanddecryption,butitoptimizestheefficiencyofthealgorism.AESisarapidprogressincryptosystemdevelopment,however,itneedstobeamelioratedyet.TheefficiencyofAESmaybeboosted,andnewworkingmoduleisalsonecessarytobedeveloped.ThispaperintrouducesthetheoryofsemmetricalcryptographyandtheworkingprocessofAESalgorithm,improvesaconventionalmeansofincreasingtheencryptingspeed,proposesitsoptimizedalgorism,whichcangreatelyincreasetheencryptingspeed。KEYWORDS:symmetricalcryptography,DES,Rijndael,finitefield目錄TOC\o"1-4"\h\z\u摘要 IABSTRACT II第1章引言 1§1.1概述 1§1.2課題研究現(xiàn)狀及發(fā)展趨勢 2§1.3分組密碼定義 4第2章DES加密辦法 6§2.1DES算法基本原理 7§2.2DES算法f函數(shù)解決 9§2.3子密鑰生成 12§2.4DES安全性問題 14§2.5IDEA分組密碼 15第3章AES加密算法 16§3.1AES發(fā)展史 16§3.1.1高加密原則制定過程 16§3.1.2AES評估及中選 17§3.2AES算法數(shù)學(xué)基本 18§3.3AES算法設(shè)計原理 21§3.3.1安全性原則 22§3.3.2實現(xiàn)性原則 23§3.4AES算法整體構(gòu)造 23§3.4.1迭代密碼算法構(gòu)造分類 24§Feistel網(wǎng)絡(luò)構(gòu)造 24§替代/置換(SP)網(wǎng)絡(luò)構(gòu)造 25§AES算法構(gòu)造 25§3.4.2加、解密輸入輸出 26§3.4.3AES算法環(huán)節(jié) 28§3.4.4AES算法描述 30§字節(jié)代換(SubBytes) 30§行移變換(ShiftRows) 31§列混合變換(MixColumns) 32§密鑰擴展(ExpandedKey) 34第4章AES迅速實現(xiàn) 37§4.1Rijndael算法實現(xiàn)方案 37§4.1.1實現(xiàn)考慮 37§4.1.2實現(xiàn)方案及其分析 38§4.2各模塊算法描述及其分析 39§4.2.1計算輪函數(shù)T表 39§4.2.2輪函數(shù)C語言實現(xiàn) 40§4.3加密性能測試 42§4.3.1測試環(huán)境及開發(fā)平臺 42§4.3.2測試辦法 43§4.3.3測試成果 44總結(jié) 45參照文獻 46致謝 50引言§1.1概述密碼學(xué)是保密學(xué)一某些,保密學(xué)是研究密碼系統(tǒng)或通信安全科學(xué)。密碼學(xué)重要任務(wù)是解決信息保密性和可認證性,即保證信息在生成、傳遞、解決和保存過程中不被未授權(quán)者非法提取、篡改、刪除、重放和偽造。它包括兩個分支,即密碼學(xué)(cryptology)和密碼分析學(xué)(cryptanalytic)。密碼學(xué)是對信息進行編碼實現(xiàn)隱蔽信息一門學(xué)問,密碼分析學(xué)是研究分析破譯密碼學(xué)問。兩者互相對立又互相增進。密碼學(xué)使用與研究已有幾千年歷史,但是直到Shannon于1949年刊登了“保密通信信息理論”[1]之后,它才真正成為一門科學(xué)。而“密碼學(xué)新方向”[2]刊登和美國數(shù)據(jù)加密原則DES頒布實行標志著當代密碼學(xué)誕生,并從此揭開了商用民用密碼研究序幕。此后,實用密碼體制研究基本上沿著兩個方向進行,即以RSA為代表公開密鑰密碼體制和以DES為代表秘密密鑰分組密碼體制。分組密碼具備速度快、易于原則化和便于軟硬件實現(xiàn)等特點,普通是信息與網(wǎng)絡(luò)安全中實現(xiàn)數(shù)據(jù)加密、數(shù)字簽名、認證及密鑰管理核心體制,它在計算機通信和信息系統(tǒng)安全領(lǐng)域有著最廣泛應(yīng)用。對稱算法(symmetricalgorithm),有時又稱老式密碼算法,就是加密密鑰可以從解密密鑰中推算出來,同步解密密鑰也可以從加密密鑰中推算出來。而在大多數(shù)對稱算法中,加密密鑰和解密密鑰是相似。因此也稱這種加密算法為秘密密鑰算法或單密鑰算法。它規(guī)定發(fā)送方和接受方在安全通信之前,商定一種密鑰。對稱算法安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對她們發(fā)送或接受消息解密,因此密鑰保密性對通信性至關(guān)重要。對稱加密長處在于算法實現(xiàn)效率高、速度快。對稱加密缺陷在于:第一,密鑰量問題。在單鑰密碼系統(tǒng)中,每一對通信者就需要一對密鑰,當顧客增長時,必然會帶來密鑰量成倍增長,因而在網(wǎng)絡(luò)通信中,大量密鑰產(chǎn)生、存儲和分派將是一種難以解決問題。第二,密鑰分發(fā)問題。單鑰密碼系統(tǒng)中,加密安全性完全依賴于對密鑰保護,但是由于通信雙方使用是相似密鑰,人們又不得不互相交流密鑰,所覺得了保證安全,人們必要使用某些此外安全信道來分發(fā)密鑰,例如用專門信使來傳送密鑰。這種做法代價是相稱大,甚至可以說是非常不現(xiàn)實,特別在計算機網(wǎng)絡(luò)環(huán)境下,人們使用網(wǎng)絡(luò)傳送加密文獻,卻需要此外安全信道來分發(fā)密鑰,顯而易見,這需要新解決辦法?!?.2課題研究現(xiàn)狀及發(fā)展趨勢分組密碼[3-12]研究始于20世紀70年代中期,至今已有近30年歷史,這期間人們在這一研究領(lǐng)域已經(jīng)獲得了豐碩成果。分組密碼研究大體上涉及三個方面:分組密碼設(shè)計原理、分組密碼安全性分析和分組密碼記錄性能測試。分組密碼設(shè)計與分析是兩個既互相對立又互相依存研究方向,正是由于這種對立增進了分組密碼飛速發(fā)展。初期研究基本上環(huán)繞DES(DataEncryptionStandard)進行,進入20世紀90年代后,人們對DES類密碼研究更加進一步,特別是差分密碼分析[13-14]和線性密碼分析[15-16]提出,迫使人們不得不研究新密碼構(gòu)造。IDEA密碼浮現(xiàn)打破了DES類密碼壟斷局面,IDEA密碼設(shè)計思想是混合使用來自不同代數(shù)群中運算。隨后浮現(xiàn)Sqare、Shark和Rijndael[17-18]都采用了構(gòu)造非常清晰代替-置換(SP)網(wǎng)絡(luò)[19-24],每一輪由混淆層和擴散層構(gòu)成。這種構(gòu)造最大長處是可以從理論上給出最大差分特性概率和最佳線性逼近優(yōu)勢界,也就是說密碼對差分密碼分析和線性密碼分析是可證明安全。1997年4月,AES征集掀起了分組密碼研究新高潮,15個AES候選算法[25-29]反映了當時分組密碼設(shè)計水平,可以說是近幾年研究成果一種匯總。當前分組密碼所采用整體構(gòu)造可分為Feistel構(gòu)造、SPN構(gòu)造及其他密碼構(gòu)造。Feistel構(gòu)造由于DES發(fā)布而廣為人知,已被許多分組密碼所采用。Feistel構(gòu)造最大長處是容易保證加解密相似,這一點在實現(xiàn)中特別重要。而SPN構(gòu)造比較難做到這一點,但是SPN構(gòu)造擴散特性比較好。在既有分組密碼中,所用基本運算有異或、加、減、查表、乘及數(shù)據(jù)依賴循環(huán)等。S盒是分組密碼中唯一非線性部件,由于S盒需要某些存儲器,因此其規(guī)模不能太大。15個AES候選算法所采用S盒規(guī)模有6種,分別是4×4、8×8、8×32、11×8、13×8及8×32。S盒又稱黑盒子,它常給人們導(dǎo)致故意設(shè)立陷門嫌疑,因而,Rijndeal、Safer+等選用公開數(shù)學(xué)函數(shù)來避免嫌疑。S盒設(shè)計與分析是分組密碼設(shè)計中重要環(huán)節(jié),它好壞直接影響密碼體制安全性。當前,對S盒設(shè)計并沒有一種完備原則,但總但愿是增強S盒非線性度、差分均勻度及其分量函數(shù)代多次數(shù)和項數(shù)。2月27日,歐洲簽名、完整性和加密新原則籌劃NESSIE[30](NewEuropeanSchemesforSignatures,IntegrityandEncryption)宣布了第二階段終選算法。自此,密碼學(xué)界繼AES之后又一場為期三年旨在面向全球范疇進行公開征集,通過透明、公開測試評估,制定一整套高效密碼原則(涉及分組密碼、流密碼、哈希函數(shù)、消息認證碼函數(shù)、數(shù)據(jù)簽名方案和公鑰加密方案等)具備深遠意義活動籌劃塵埃落定。NESSIE通過四次國際會議熱烈討論、分析和評估,最,從48個算法中選出了24個原則算法。其中,分組密碼加密原則共有四個算法——MISTY1(64比特)、AES(128比特)、Camellia(128比特)[31]和SHACAL-2(256比特)算法。當前對分組密碼安全性討論重要涉及強力襲擊、差分密碼分析和線性密碼分析等。從理論上講,差分密碼分析和線性密碼分析是當前襲擊分組密碼最有效辦法,而事實上,強力襲擊是襲擊分組密碼最可靠辦法。到當前為止,已有大量文獻討論各種分組密碼安全性,同步推出了譬如差分-非線性密碼分析[32]、截斷差分-線性分析[33]、高階差分密碼分析[34]及插值襲擊[35]等各種分析辦法。自從AES候選算法發(fā)布后來,國內(nèi)外許多專家學(xué)者都致力于候選算法安全性分析,推出了某些新襲擊辦法,這無疑將進一步推動分組密碼發(fā)展。當前在分組密碼設(shè)計與分析方面尚有許多理論和實際問題亟待繼續(xù)研究和完善,這些問題重要涉及[10]:(1)算法部件方面,對多輸出布爾函數(shù)各種性質(zhì)進行摸索,如何對各種性質(zhì)進行折衷而增強S盒實質(zhì)安全性等。(2)算法構(gòu)造方面,設(shè)計出算法如果能證明能抵抗某種襲擊,算法則不會太復(fù)雜,有也許存在別分析辦法;但是算法過于復(fù)雜又不利于設(shè)計者自身分析其密碼性質(zhì)。如何折衷也是值得考慮問題。(3)算法分析方面,除了從差分分析和線性分析發(fā)展起來各種分析辦法外,針對算法整體構(gòu)造,密鑰擴展算法等方面分析辦法也不斷浮現(xiàn),因而各個某些設(shè)計準則也相應(yīng)在不斷更新?!?.3分組密碼定義依照被加密明文解決方式不同,單鑰密碼體制普通可分為秘密密鑰分組密碼體制(簡稱分組密碼)和秘密密鑰流密碼體制(簡稱流密碼)。分組密碼(Blockcipher)是將明文消息編碼表達后數(shù)字序列劃提成長為n組x=(x0,x1,...,xn-1),各組長為n矢量分別在密鑰k=(k0,k1,...,kn-1)控制下變換成輸出數(shù)字序列y=(y0,y1,...,ym-1)(長為m矢量),如圖1所示。圖2.1-1分組密碼簡化框圖普通分組密碼算法明文與密文長度相等,這表白加密和解密構(gòu)造同樣,便于簡樸實現(xiàn)。若n>m,則為有數(shù)據(jù)擴展分組密碼,易增長密文解密難度;若n<m,則為有數(shù)據(jù)壓縮分組密碼;若n=m,則為無數(shù)據(jù)壓縮和擴展分組密碼。密鑰長度r在加密過程往往是一種變數(shù),目是為了增長混亂和擴展性。普通地,相應(yīng)密鑰長度r,則有密鑰量為2r??紤]GF(2)上共有2n、個不同置換,必要保證2r2n!。固然,r還不能太大,否則密鑰難管理;但也不能太小,由于難以抵抗窮舉搜索襲擊。DES加密辦法美國國標局年開始研究除國防部外其他部門計算機系統(tǒng)數(shù)據(jù)加密原則,于1973年先后兩次向公眾發(fā)出了征求加密算法公示。加密算法要達到目,重要為如下四點:提供高質(zhì)量數(shù)據(jù)保護,防止數(shù)據(jù)未經(jīng)授權(quán)泄露和未被察覺修改;具備相稱高復(fù)雜性,使得破譯開銷超過也許獲得利益,同步又要便于理解和掌握;DES密碼體制安全性應(yīng)當不依賴于算法保密,其安全性僅以加密密鑰保密為基本;實現(xiàn)經(jīng)濟,運營有效,并且合用于各種完全不同應(yīng)用。1977年1月,美國政府頒布:采納IBM公司設(shè)計方案作為非機密數(shù)據(jù)正式數(shù)據(jù)加密原則即(DES即DataEncryptionStandard)。它是由IBM公司研制一種對稱加密算法,屬于分組加密算法。美國國標局于1977年發(fā)布把它作為非機要部門使用數(shù)據(jù)加密原則,三十年來,它始終活躍在國際保密通信舞臺上,扮演了十分重要角色。DES是一種分組加密算法(即將數(shù)據(jù)分塊),它用56位密鑰以64位分組對數(shù)據(jù)加密。同步DES也是一種對稱加密算法,它密匙長度是56位(添加個奇偶校驗位后成64位,但有效位依然是56位),密匙可以是任意56位數(shù),并且可以任意時候變化。其中有很少量數(shù)被以為是弱密匙(即很容易破解),但是很容易避開她們"因此保密性依賴于密鑰。DES壽命還不屆時,就已被多次攻破而被以為不安全了,其中最知名兩個襲擊是差分密碼分析和線性密碼分析。但DES設(shè)計至今仍閃爍著人類設(shè)計思想精華,其構(gòu)造和部件仍在被后人效仿。DES輪函數(shù)采用Feistel網(wǎng)絡(luò),8個s盒,擴充-壓縮置換,塊置換。其算法簡潔迅速且加解密相似,但一種明顯缺陷是s盒設(shè)計原則始終沒有公開,因而公眾長期地抱怨并懷疑它設(shè)有陷門。初期迭代分組密碼設(shè)計重要環(huán)繞DES進行,日后在此基本上有很大發(fā)展,浮現(xiàn)了眾多Feistel型密碼,如:LOKI,F(xiàn)EAL,GOST,Lucifer等。§2.1DES算法基本原理DES是分組長度為64比特,密鑰長56比特分組密碼算法。明文長度與加密得出密碼長度同樣,沒有數(shù)據(jù)壓縮和擴展。DES算法完全公開,保密完全依賴于密鑰。圖2.1-1[36]是DES算法所有16輪構(gòu)造圖,輸入(input)可以是明文也可以是密文,視使用者進行是加密或是解密操作。加密和解密唯一不同在于圖右邊16個輪子密鑰Ki,1i16使用順序正好相反,加密為K1,K2,...,K16,解密為K16,K15,...,K1。子密鑰由密鑰擴展算法生成。圖2.1-1DES加密算法16輪迭代過程DES算法對輸入64位明文進行一種初始置換IP(INITIALPERMUTATION,如圖2.1-2),以打亂本來比特順序。把置換后數(shù)據(jù)提成各32位左右兩某些,左邊記為L0,右邊記為R0。對R0進行輪密鑰控制下變換f,其成果記為f(Ro,K1),得到成果再與L0進行逐位異或(XOR)運算,成果作為下一輪數(shù)據(jù)右半部32比特R1。而R0作為下一輪數(shù)據(jù)左半部32比特L1。對L1和R1實行同樣過程得L2和R2。這樣一種過程稱為輪加密,或輪迭代。如此進行16次輪迭代,最后得到L16和R16。最后再對(R16L16)實行初始置換逆置換IP-1輪運算可以簡潔地表達如下:Ri=Li-1⊕f(Ri-1,Kl)Li=Ri-1,i=1,2,...16初始置換及其逆置換是擬定,因此其在密碼學(xué)上并沒故意義。在DES之后某些密碼就改進了這一點。圖2.1-2初始換位IP圖2.1-2逆初始換位IP-1§2.2DES算法f函數(shù)解決DES迭代過程核心問題是非線性f函數(shù)功能,它是每輪實現(xiàn)加密混亂和擴散重要途徑。其基本思想如圖2.2-1所示。圖2.2-1第i次f函數(shù)解決示意圖每一輪迭代過程密碼函數(shù)f(Ri-1,ki)(1i16)都必要通過三個子過程(擴展置換、S盒替代(壓縮)、P盒排列)解決得到。函數(shù)f是將32bit輸入轉(zhuǎn)化為32bit輸出,中間參加運算成果為48為,加密函數(shù)f計算如圖2.2-2所示。圖2.2-2加密函數(shù)f計算過程擴展置換擴展置換簡稱E函數(shù)(Expand),功能是把32位擴展成48位,是一種與密鑰無關(guān)純移位變換,構(gòu)造示意圖如圖2.2-3所示。擴展置換按32bit輸入,分8組,每組4位,經(jīng)E函數(shù)擴展后變成每組6位輸出。若令ai(l)(1i4,18)為選取組相應(yīng)每位輸入,bj()(1i4,18)為選取組擴展每位輸入,則有擴展公式為:其中組排列具備循環(huán)性,即當=1時,b1(1)=a4(8);=8時,b6(8)=a1(1)。擴展置換所有形式如表2.2-1所示。擴展成果與子密鑰Ki(1i16)進行異或運算,成果作為S盒輸入。表2.2-1擴展置換E函數(shù)圖2.2-3擴展置換示意圖(2)壓縮替代(S盒選取)壓縮替代是通過8個S盒(替代盒SubstitutionBox)對的選用將48位屬入變換為32輸出。第i個S盒是一種6比特輸入4比特輸出變換,變換規(guī)則是取{0,1,…,15}上4個置換,即它4個排列排成4行,得到4*16矩陣。設(shè)S盒輸入是b0b1b2b3b4b5,輸出相應(yīng)矩陣中b0b5行b1b2b3b4列中元素。8個S盒構(gòu)造可由表2.2-2表達。表2.2-2S盒選取表0123456789101112131415S10123140415121511213714814821214134152691113218111731015510612116129312117145931095100035678013S201231530131131488471014711161510311241538134414129125117086211271310612126900935511214105159S301231013131076109041314990638634159156385100712114138115125214714123111251141110521514281712S401237131031386151411903506061210615111907131031381415927148235512141111151212102741482159414S501232144111211284211211211774101107131411137261813851565091531512015105913361009341480596143S6012312109411514310415215251297292128569121585310067111310143134141410714016711130531181181613S701234131611041121111131471381541210934817101310147314109123155956071281552014101552689316212S801231317221511181341448176109415312101171481421310120159561236109141113050153014351295672811P盒排列P盒排列也是一種置換(Permutation),將壓縮替代得到32位成果重新按圖2.2-4順序排列,得到變換后32位,即為密碼函數(shù)f(Ri-1,Ki)輸出。圖2.2-4P排列§2.3子密鑰生成在DES算法中,每一輪迭代運算都是用一種子密鑰,子密鑰自身是從顧客輸入密鑰來產(chǎn)生,圖2.3-1給出了子密鑰產(chǎn)生流程圖。K是長度為64位比特串,其中56位是密鑰,8位是奇偶校驗位,分布在8,16,24,32,40,48,56,64,比特位置上,目是用來檢錯,可在8位組中檢查單個錯誤,事實上,在密鑰編排計算中用56位,不涉及這8位。子密鑰生成大體過程分為:置換選取1(pc-1)、循環(huán)左移、置換選取2等變換,分別產(chǎn)生16個子密鑰。置換選取1(pc-1)對56位密鑰輸入按表2.3-1進行重新編排。將前28位作為C,后28位作為D。即C0=K57K49K41...K52K44K36D0=K63K55K47...K20K12K4圖2.3-1子密鑰產(chǎn)生流程表2.3-1PC-157494133251791585042342618102595143252719113605244366355473931231576254463830221466153453719211352820124循環(huán)左移計算對16輪計算模型描述如下:LSi表達循環(huán)左移一種或兩個位置,它取決于i值變化次數(shù),當i=1,2,9,16時,則左移一種位置,別的左移兩個位置,如表2.3-2所示。表5-3迭代次數(shù)12345678910111213141516左移位數(shù)1122222212222221例如,相應(yīng)不同次數(shù),左移變化狀況如下:i=1,C1=c1c2...c27c28,D1=d1d2i=2,C2=c2c3...c28c1,D1=d2d3...d28i=3,C3=c4c5...c28c1c2c3,D1=d4d5...d28以此類推。(3)選取置換2(pc-2)其作用是刪除每次移位后C中第9、18、22、25位和D中第7、9、15、26比特位,別的比特按表2.3-3置換后從出48位比特,作為第i次迭代子密鑰ki使用。表2.3-3PC-21417112415328156211023191242681672720132415231374755304051453348444939563453464250362932§2.4DES安全性問題DES密鑰空間為256,使用硬件解碼速度相稱快。在1997年,人們預(yù)計建成一臺每秒鐘檢測一百萬個密鑰專用機用于DES解密要耗資兩千萬美元,并且需要12個小時破解才干得到成果,因此當時被以為是一種十分強健加密辦法。其問世年來,成為密碼界研究重點,經(jīng)受住了許多科學(xué)家研究和破譯,是一種世界公認較好加密算法,在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收費站等民用密碼領(lǐng)域有著廣泛應(yīng)用。應(yīng)用范疇涉及:計算機網(wǎng)絡(luò)通信中數(shù)據(jù)保護、電子資金傳送系統(tǒng)中信息加密、保護顧客文獻、顧客辨認等,為全球貿(mào)易、金融等非官方部門提供了可靠通信安全保障。但是,當今計算機速度越來越快,1997年,制造一臺用于DES解密專用機費用降到十萬美元左右,破解時間為6小時。而在21世紀今天破譯成本更低,DES已經(jīng)不再安全。因而,56位密鑰顯然影響了它保密強度。針對DES算法密鑰短問題,密碼學(xué)家又研制了80位密鑰,以及在DES基本上采用三重DES和雙密鑰加密辦法。雙密鑰辦法用兩個56位密鑰k1、k2對明文進行三次加密,發(fā)送方用k1加密,k2解密,再使用k1加密。接受方則使用k1解密,k2加密,再使用k1解密,其效果相稱于將密鑰長度加倍,缺陷是要耗費本來三倍時間[37]。當前,三重DES112位密鑰長度被以為是很“強健”加密方式。此外,由于DES算法完全公開,其安全性完全依賴于對密鑰保護,必要有可靠信道來分發(fā)密鑰(如采用信使遞送密鑰等),不適合在網(wǎng)絡(luò)環(huán)境下單獨使用。§2.5IDEA分組密碼對DES成功破譯迫使人們重新設(shè)計密碼算法。IDEA[38]是第一種不采用Feistel網(wǎng)絡(luò)密碼。IDEA安全性設(shè)計思想是:采用同一明文空間上三個不同群運算,使掩蔽,混淆和擴散溶為一體。IDEA是分組密碼杰出代表,開創(chuàng)了新一類設(shè)計風格。AES加密算法§3.1AES發(fā)展史§3.1.1高加密原則制定過程最初階段,1997年1月,美國國標和技術(shù)研究所(NIST)發(fā)布公示征集新加密原則,即AES。新加密原則將取代舊數(shù)據(jù)加密原則(DES)和三重DES而成為一種(美國)聯(lián)邦信息解決原則(FIPS)。與DES、安全散列算法(SHA-1)和數(shù)字簽名算法(DSA)選取過程不同。NIST宣布AES選取過程將是公開,任何人都可以提交候選密碼算法,任何符合規(guī)定提案都將被仔細考慮,NIST自身不進行任何安全或效率評估,而是邀請密碼學(xué)界襲擊候選算法并進行密碼分析,并且任何感興趣人都可以評估候選算法實當代價。所有成果都可以作為公開評論發(fā)給NIST,并在NISTAES網(wǎng)站發(fā)布,或者也可以提交AES會議進行陳述。NIST只是收集這些評淪。將其作為評比AES根據(jù),并在評估報告中增進它們被選取。FIPS原則官方范疇非常有限,它只合用于美國聯(lián)邦行政部門。然而新AES將僅僅用于保護包括敏感但非機密信息文檔,然而AES預(yù)期影響將遠遠不止這些:由丁AES是DES繼承者,它自從被接納為原則之日起就已經(jīng)被銀行業(yè)、行政部門和工業(yè)界作為事實上密碼原則。Rijndael被正式批準為政府原則事實賦予了它一種官方“質(zhì)量證書”。當前,AES己經(jīng)提交國際原則化組織(ISO)和因特網(wǎng)工程任務(wù)組(IETF),同步電子和電氣工程師協(xié)會(IEEE)也正在考慮接納其作為原則。甚至在Rijndael成為AES之前,己經(jīng)有多家組織和公司聲明接納Rijndael。歐洲電信原則協(xié)會(ETSI)在其MILENAGE算法集中集成了Rijndael模塊,并且有多家密碼庫提供商也早已在它們產(chǎn)品中包括了Rijndael。Rijndael被迅速接受因素重要在于其可免費獲得,并且可以在不明顯減少帶寬前提下易于在大量平臺上實現(xiàn)?!?.1.2AES評估及中選DES因其密鑰僅有56位等因素而存在被破譯也許,日后浮現(xiàn)了三重DES,但三重DES又因加密速度太慢而不能滿足人們需要,這就規(guī)定提出安全性更好、加密速度較快新數(shù)據(jù)加密原則。1997年1月2日,美國國標技術(shù)研究所(NIST)發(fā)起了征集AES(AdvancedEncryptionStandard)算法活動,并專門成立了工作組。目就是開發(fā)一種聯(lián)邦信息解決原則(FIPS)來提出一種能保護下一世紀政府敏感信息算法。1997年9月12日正式提出了征集AES公示。并指出:AES候選算法必要是一種非保護、公開、全球免費使用安全算法,并且也是一種能支持分組長為對稱密鑰分組算法,其密鑰長可以是128/192/256bit。1998年8月20日,NIST召開第一次AES候選會議,宣布了滿足候選規(guī)定15個候選算法,并在會議上和出版FederalRegister雜志上對這些算法進行公開評論。1999年3月22日召開了第二次AES候選會議,公開了對第一階段15個候選算法分析和測試成果,并從中選取5個候選算法,分別是IBM公司提出MARS算法,RSA公司提出RC6算法,JoanDaemen和VincentRinmen提出Rijndael助算法,RossAnderson、EliBiham和LarsKnudsen提出Serpent算法以及由BruceSchneier、JohnKelsey、DougWhiting、DavidWagner、ChrisHall和NielsFerguson提出Twofish算法。11月從中選用Rijndael算法作為下一代密碼算法AES[39-40]在AES候選算法評估過程中,AES工作組考慮所有評論、論文、NIST研究和報告,提出了如下評判準則[41].安全性。這是評估中最重要因素,涉及:算法抗密碼分析強度,穩(wěn)定數(shù)學(xué)基本,算法輸出隨機性以及與其她候選算法比較相對安全性。(2)代價。這是評估中第二重要因素[42],重要涉及:應(yīng)具備高執(zhí)行效率和低存儲需求有點;并且各運算部件具備良好記錄特性,并行執(zhí)行度高;加、解密速度快,不需要繁瑣乘法運算。(3)算法實現(xiàn)特性[43]。它涉及:靈活性,硬件和軟件適應(yīng)性,算法簡樸性。其中靈活性應(yīng)涉及:解決密鑰和分組長度必要超過最小支持范疇;在許多不同類型環(huán)境中可以安全和有效地實現(xiàn);可以作為序列密碼、雜湊算法實現(xiàn),并且提供附加密碼服務(wù)。2月28日,NIST發(fā)布FIPS草案供公眾討論。11月2日NIST發(fā)布正式文本FIPS1971,3月26日FIPS197正式生效。至此,AES征集工作結(jié)束,21世紀高檔加密原則宣布誕生了?!?.2AES算法數(shù)學(xué)基本在有限域[44]GF(28)上元素可以用幾種辦法來表達,Rijndael算法中,為了以便執(zhí)行,選取老式多項式表達法,而其中許多運算都是按字節(jié)定義,用字節(jié)表達有限域GF(28)中元素,其她運算是按4字節(jié)方式定義。有限域GF(28)假設(shè)一種字節(jié)b由b7b6b5b4b3b2b1b0構(gòu)成,咱們可以把這些bi想象成一種7次多項式系數(shù),而這些系數(shù)不是0就是1:b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0例如,(57)16二進制表達法為(01010111)2表達到多項式,則為:x6+x4+x2+x+1(1)加法運算兩個多項式加法,則定義為相似指數(shù)項系數(shù)和再模余2,簡樸說就是作異或運算。例如:(57)16+(83)16=(01010111)2+(10000011)2=(11010100)2=(D4)16如果以多項式表達,則為:(x6+x4+x2+x+1)+(x7+x+1)=x7+x6+x4+x2顯而易見,在這種加法運算上多項式集合構(gòu)成一種互換群,它們滿足封閉性,結(jié)合性,零元(00),逆元(每一種元素逆元是其自身)和互換性,由于元素逆元是其自身,因而加法和減法運算是相似。(2)乘法運算在乘法里而,多項式相乘之后成果很容易導(dǎo)致溢位問題,解決溢位方式是把相乘成果,再模余一種可解多項式m(x)。在Rijndael中,定義這樣多項式為:m(x)=x8+x4+x3+x+1或是(11B)16例如:(57)16×(83)16=(x6+x4+x2+x+1)×(x7+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1=(x13+x11+x9+x8+x6+x5+x4+x3+x+1)mod(x8+x4+x3+x+1)=x7+x6+1=(C1)16顯而易見,模成果是一種低于8價多項式,與加法不同是,乘法并不是在字節(jié)上簡樸運算。按照上述方式定義乘法運算具備封閉性、結(jié)合性、零元(01)。此外,對于任何低于8階二進制多項式b(x)(00除外),存在多項式a(x)和c(x),使得下式成立:B(x)a(x)+m(x)c(x)=1(3.2-1)由歐幾里德擴展算法可計算得到a(x)和c(x),因而有b(x)a(x)modm(x)=1(3.2-2)b-1(x)=a(x)modm(x)(3.2-3)由此,咱們可以獲得b(x)逆元。(3)乘數(shù)為x相乘運算若把b(x)乘以x,得到:b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x相乘成果再與m(x)相模后成果有如下規(guī)律:若b7=0,則(b(x)·x)modm(x)=b(x)·x若b7=1,則(b(x)·x)modm(x)=(b(x)·x)⊕m(x)因而,(b(x)·x)modm(x)可以被以為是先進行字節(jié)左移操作,依照移位成果對該字節(jié)與“1B”(m(x))進行條件異或運算。這種類型操作表達為:b=xtime(a)例如:'57'·'13'='FE''57'·'02'=xtime(57)='AE''57'·'04'=xtime(AE)='47''57'·'08'=xtime(47)='8E''57'·'10'=xtime(8E)='07''57'·'10''='57'·('01'⊕'02'⊕'10')='57'⊕'AE'⊕'07'='FE'這樣,通過度解可將復(fù)雜相乘操作轉(zhuǎn)化為簡樸移位和異或操作。2.域GF(28)上帶有系數(shù)多項式在域GF(28)上可以定義帶有系數(shù)多項式,在該方式定義下,一種4字節(jié)向量相應(yīng)一種階數(shù)不大于4多項式。(1)加法運算兩個帶有系數(shù)多項式之和等于相應(yīng)系數(shù)之和多項式,在GF(28)上和運算等于異或運算。(2)乘法運算帶有系數(shù)多項式相乘與不帶系數(shù)多項式相乘相比,稍為復(fù)雜某些,設(shè)在GF(28)上有兩個多項式:a(x)=a3x3+a2x2+a1x+a0b(x)=b3x3+b2x2+b1x+b0c(x)=a(x)b(x)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0將a(x)b(x)成果展開,再與c(x)多項式相對照,可得:c0=a0b0c1=a1b0⊕a0b1c2=a2b0⊕a1b1⊕a0b2c3=a3b0⊕a2b1⊕a1b2⊕a0b3(3.2-4)c4=a3b1⊕a2b2⊕a0b3c5=a3b2⊕a2b3c6=a3b3再將c(x)模上一種4階多項式m(x),得到了一種低于4階多項式,在Rijndael算法中,m(x)=x4+1,則d(x)=c(x)modm(x)=d3x3+d2x2+d1x+d0(3.2-5)由ximod(x4+1)和(3.2-5)式可得c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0c4x4mod(x4+1)=(a3b1⊕a2b2⊕a0b3)x4mod(x4+1)=a3b1⊕a2b2⊕a0b3c5x5mod(x4+1)=(a3b2⊕a2b3)x5mod(x4+1)=(a3b2⊕a2b3)xc6x6mod(x4+1)=a3b3x2(3.2-6)由(3.2-4)、(3.2-5)、(3.2-6)式得d0=a0b0⊕a3b1⊕a2b2⊕a1b3d1=a1b1⊕a0b1⊕a3b2⊕a2b3(3.2-7)d2=a2b0⊕a1b1⊕a0b2⊕a3b3d3=a3b0⊕a2b1⊕a1b2⊕a0b3用矩陣表達為:(3.2-8)(3)乘數(shù)為x相乘運算如果b(x)與x相乘,得:b3x4+b2x3+b1x2+b0x將成果與x4+1相乘后,得:c(x)=b2x3+b1x2+b0x+b3如果將c(x)再與x相乘后模上x4+1得d(x)=b1x3+b0x2+b3x+b2將b(x)、c(x)、d(x)系數(shù)相比較,容易得到如下結(jié)論,即每乘上一次x運算成果,相稱于多項式系數(shù)一次左移操作?!?.3AES算法設(shè)計原理AES算法是當前密碼算法設(shè)計最高水平反映,設(shè)計者在進行算法設(shè)計時重要考慮了如下三點:(1)要能抵抗所有已知襲擊方式。(2)在各平臺上具備良好性能,如較迅速度、編碼要緊湊等。(3)設(shè)計要簡樸。第一點強調(diào)是安全性原則,而后兩點強調(diào)是實現(xiàn)性原則,這是AES算法所遵循兩個重要原則。AES算法在整體構(gòu)造上采用是代替/置換(SP)網(wǎng)絡(luò)迭代構(gòu)造方式,在安全性方面能抵抗各種襲擊。下面就分別從這兩個方面對AES算法設(shè)計原理進行闡明。§3.3.1安全性原則針對某一特定分組密碼算法,其襲擊辦法可分為通用襲擊辦法和專用襲擊辦法。所謂通用襲擊辦法就是對所有分組加密算法襲擊均有效辦法,而專用襲擊辦法只針對某特定算法有效,普通與詳細密碼算法某種特定構(gòu)造關(guān)于。設(shè)計當代實用密碼算法時,為了能有效地抵抗通用襲擊,普通遵循仙農(nóng)(Shannon)提出混淆(Confusion)原則和擴散(Diffusion)原則。同步,混淆和擴散也是分組密碼算法設(shè)計理論中保證明文可以可靠、隱蔽最基本技術(shù)[45]。所謂混淆性原則是指所設(shè)計密碼應(yīng)使密文對密鑰和明文依賴關(guān)系相稱復(fù)雜,以至于這種依賴性對于密碼分析者來說是無法運用?;煜糜谘谏w明文、密文和密鑰之間關(guān)系。這可以挫敗通過研究密文以獲取冗余度和記錄模式企圖。做到這一點最容易辦法是通過代替,一,簡樸代替密碼,如單字母密碼,其中每一種擬定明文字符被一種密文字符所代替。當代代替密碼更復(fù)雜:一種長明文分組被代替成一種不同密文分組,并且代替機制隨明文或者密鑰中每一位發(fā)生變化。好混淆可以使這種記錄關(guān)系變得復(fù)雜以致強有力密碼分析工具都不能有效。所謂擴散性原則是指所設(shè)計密碼應(yīng)使得密鑰每一位數(shù)字能影響密文許多位數(shù)字,以防止對密鑰進行逐段破譯,同步明文每一位數(shù)字也能影響密文許多位數(shù)字,以便隱藏明文數(shù)字記錄特性。擴散通過將明文冗余度分擔到密文中使之分散開來,把單個明文位和密鑰位影響盡量擴大到更多密文中去。密碼分析者謀求這些冗余度將會更難。產(chǎn)生擴散最簡樸辦法是換位(也稱為置換)。為了能抵抗專用襲擊,則需要對算法自身構(gòu)造進行分析,消除其中不安全因素。AES算法在設(shè)計時,設(shè)計者通過輪函數(shù)多輪迭代,為抵抗通用襲擊提供了必要混淆和擴散,同步這種多輪迭代辦法也消除了AES算法面向字節(jié)解決不安全因素,有效地抵抗了對算法專用襲擊。§3.3.2實現(xiàn)性原則一種好密碼算法規(guī)定設(shè)計簡樸,構(gòu)造合理,易于用軟件或硬件實現(xiàn),也就是說密碼具備良好實現(xiàn)性[45]。一種密碼算法若要用軟件實現(xiàn),則盡量使密碼算法針對某一特定長度進行,子塊長度應(yīng)盡量地適應(yīng)軟件編程,如采用8位、16位、32位子塊,這是由于在軟件實現(xiàn)中,單個比特之間置換是難于實現(xiàn),除了使用子塊外,密碼算法應(yīng)采用某些易于軟件實現(xiàn)運算,如原則解決器能直接解決加、減、乘、移位運算等。密碼算法若要用硬件實現(xiàn),那么規(guī)定密碼算法構(gòu)造盡量地緊湊,輪變換盡量地一致,這樣就便于用ASIC或FPGA實現(xiàn);同步在設(shè)計時,使加密和解密過程盡量地相似,這樣就可以用一種功能模塊同步實現(xiàn)加密和解密?!?.4AES算法整體構(gòu)造分組加密算法是由一種叫做輪變換函數(shù)通過多次迭代構(gòu)成,輪變換構(gòu)成涉及非線性層,擴散層和密鑰調(diào)度等元素。這些設(shè)計是基于仙農(nóng)提出設(shè)計原則:非線性代替與線性混合函數(shù)交替進行。這樣結(jié)合成果導(dǎo)致來自密碼重要記錄特性是高度有關(guān)和敏感類型,即通過混合變換擴散和混淆產(chǎn)生充分混合,使加密后分組記錄特性分布更均勻?!?.4.1迭代密碼算法構(gòu)造分類為了符合安全性和實現(xiàn)性原則,當代實用分組密碼算法普通采用了輪函數(shù)多次迭代構(gòu)造,也稱為迭代密碼算法。盡管所有迭代密碼算法在采用迭代方式上是一致,但詳細密碼算法整體構(gòu)造卻不盡相似。分組迭代密碼整體構(gòu)造大體有三類:Feistel網(wǎng)絡(luò)構(gòu)造,如DES,CAST-256,DEAL等;代替/置換(SP)網(wǎng)絡(luò)構(gòu)造,如square,safer+,serpent等;除了這兩種構(gòu)造以外算法歸為第三類[45]。近來幾年SP構(gòu)造應(yīng)用比較廣泛。其中Feistel網(wǎng)絡(luò)構(gòu)造和SP網(wǎng)絡(luò)構(gòu)造如圖2-1所示:(a)Feistel網(wǎng)絡(luò)構(gòu)造(b)SP網(wǎng)絡(luò)構(gòu)造圖3.4.1-1分組迭代密碼兩種構(gòu)造§Feistel網(wǎng)絡(luò)構(gòu)造Feistel網(wǎng)絡(luò)構(gòu)造是HorstFeistel在設(shè)計Lucifer分組密碼時創(chuàng)造,并由于IED廣泛使用而流行,對一種分組密碼長度為2nr輪Feistel型密碼,其中一輪加密過程如圖2-1(a)所示[45]。圖中⊕表達兩個長度為n比特串異或,F表達迭代密碼輪函數(shù),Ki表達第i輪子密鑰,Li、Ri表達第i輪輸入同步也是第i-1輪輸出前n位和后n位,其中1ir。對圖2-1(a)中每一輪變換有:Li=Ri-1Ri=Li-1⊕F(Ri-1,ki)由此可知,Feistel型算法必要通過兩輪變換才干變化輸入每一位,這就闡明了采用這種網(wǎng)絡(luò)構(gòu)造密碼算法擴散似乎就有點慢,但Feistel型密碼算法加密和解密相似,因此具備良好實現(xiàn)性能。圖2-1(a)網(wǎng)絡(luò)構(gòu)造左邊和右邊比特串長度是相似,因此稱這種網(wǎng)絡(luò)構(gòu)造為平衡Feistel網(wǎng)絡(luò)構(gòu)造,近年又浮現(xiàn)了左右兩邊比特串長度不等Feistel網(wǎng)絡(luò)構(gòu)造,稱為非平衡Feistel網(wǎng)絡(luò)構(gòu)造?!焯娲?置換(SP)網(wǎng)絡(luò)構(gòu)造SP網(wǎng)絡(luò)構(gòu)造是近幾年來應(yīng)用比較廣泛一種構(gòu)造,這種網(wǎng)絡(luò)構(gòu)造非常清晰,每一輪由非線性層S層和線性層P層構(gòu)成,SP型密碼一輪加密過程如圖2-1(P)所示[45]。SP型密碼每一輪變換中,一方面將S層作用于輪輸入使其混淆,然后通過P層作用使之得到擴散,圖2-1(b)中子密鑰放在S層,在實際實現(xiàn)中子密鑰可放在其她位置。SP型密碼具備一種很大長處,就是當給定S層和P層密碼指標后,可以從理論上給出抵抗差分密碼襲擊和線性襲擊能力,除此之外,經(jīng)一輪變換后,輪輸入每一位均得到了擴散,從這個角度來看,SP型密碼比Feistel型密碼能更快擴散?!霢ES算法構(gòu)造AES算法構(gòu)造緊湊、規(guī)整,加密和解密過程相似,算法構(gòu)造屬于SP構(gòu)造,構(gòu)成其每一輪輪變換4個函數(shù)分別屬于S層、P層和密鑰加層[46]。S層是由字節(jié)代換函數(shù)(SubBytes)構(gòu)成,該函數(shù)作用重要是保證多輪迭代后成果高度混淆,因此也稱為非線性層。P層由行移函數(shù)(ShiftRows)和列混合函數(shù)(MixColoumns)構(gòu)成,這兩個函數(shù)重要作用是保證多輪迭代后高度擴散,因此又稱為線性層。密鑰加層由密鑰加法函數(shù)(AddRoundkey)構(gòu)成,該層重要起到子密鑰控制作用,即實現(xiàn)了密鑰與明文結(jié)合。許多密碼分析辦法對迭代密碼第一輪和最后一輪與中間輪分析辦法不同,普通依照假定密鑰值和明文、密文進行運算來剝?nèi)サ艽a首輪和末輪,為此,AES算法對第一輪和最后一輪進行了特殊解決:第一輪之前加了一種密鑰控制下前期變換;而最后一輪則去掉了其中列混合運算。因而,AES算法在總體構(gòu)造上采用了第一輪和最后一輪特殊對待SP構(gòu)造?!?.4.2加、解密輸入輸出AES算法輸入輸出可以看作是以字節(jié)為單位一維數(shù)組[46]。對加密來說,其輸入是一種明文分組和一種初始密鑰,輸出是一種密文分組。對解密而言,輸入是一種密文分組和一種初始密鑰,而輸出是一種明文分組。AES算法輪變換及其每一步均作用在中間成果上,咱們將中間成果稱為狀態(tài)。狀態(tài)是可以形象地表達為一種矩陣字節(jié)數(shù)組,該狀態(tài)矩陣共有4行。狀態(tài)矩陣中列數(shù)記為Nb,它等于數(shù)據(jù)分組長度比特數(shù)除以32。將明文分組記為p0p1p2p3…p4Nb-1其中,p0表達明文分組第一種字節(jié),p4Nb-1表達明文分組最后一種字節(jié)。類似地,將密文分組記為c0c1c2將狀態(tài)記為si,j,0i<4,0j<Nb這里,si,j表達位于狀態(tài)矩陣第i行第j列字節(jié)。輸入字節(jié)依次映射到狀態(tài)字節(jié)s0,0,s1,0,s2,0,s3,0,s0,1,s1,1,s2,1,s3,1,……上。當加密時,輸入是一種明文分組,映射是si,j=pi+4j,0i<4,0j<Nb當Nb=4時,明文-狀態(tài)矩陣映射如表3.4.2-1所示:表3.4.2-1明文-狀態(tài)矩陣映射狀態(tài)矩陣-SP0P4P0P12P1P5P9P13P2P6P10P14P3P7P11P15類似地,當解密時,輸入是一種密文分組,映射是si,j=ci+4j,0i<4,0j<Nb當加密結(jié)束時,密文分組以相似順序從狀態(tài)矩陣中取出,即ci=simod4,i/4,0i<4Nb當解密結(jié)束時,明文分組以相似順序從狀態(tài)矩陣中取出,即pi=simod4,i/4,0i<4Nb類似地,初始密鑰被映射到兩維密鑰矩陣上。密鑰矩陣可以形象地表達為一種與狀態(tài)矩陣類似矩陣,該矩陣數(shù)組也有4行。密鑰矩陣列數(shù)記為Nk,它等于初始密鑰長度比特數(shù)除以32。當Nk=6時,初始密鑰-密鑰矩陣映射如表3.4.2-1所示:表3.4.2-1初始密鑰-密鑰矩陣映射密鑰矩陣K0K4K8K12K16K20K1K5K9K13K17K21KK6K10K14K18K22K3K7K11K15K19K23AES加密解密時數(shù)據(jù)塊操作解決過程:現(xiàn)將a0,a1,a2,a3,a4,...,a15復(fù)制到狀態(tài)數(shù)組;加密解密過程都對這個狀態(tài)進行技術(shù)解決;等加密解密過程解決結(jié)束,再將狀態(tài)組復(fù)制到b0,b1,b2,b3,b4,...,b15。最后得到ASE加密解密輸出成果。操作映射過程如圖3.4.2-1所示:輸入數(shù)據(jù)中間成果(狀態(tài))輸入數(shù)據(jù)圖3.4.2-1操作映射過程§3.4.3AES算法環(huán)節(jié)AES算法是一種迭代分組密碼,采用是代替/置換網(wǎng)絡(luò)(SP)。它是對一種128比特數(shù)據(jù)塊進行加、解密操作。作為高檔加密原則Rijndael算法,其數(shù)據(jù)分組長度和初始密鑰長度都是可變,但為了滿足AES規(guī)定,將分組長度固定為128比特,密鑰長度為128/192/256比特,相應(yīng)輪數(shù)為10/12/14輪。進行AES加、解密運算時,一方面將輸入128比特數(shù)據(jù)排成4×4字節(jié)矩陣,然后依照不同密鑰長度,進行10(128比特密鑰),12(192比特密鑰)或14(256比特密鑰)輪運算。輪數(shù)目由密鑰長度決定,其關(guān)系如表3.4.3-1所示:表3.4.3-1加密輪數(shù)-密鑰長度關(guān)系表AES密鑰長度(Nk)分組大小(Nb)輪數(shù)目(Nr)AES-1284(128/32)4(128/32)10AES-1926(192/32)4(128/32)12AES-2568(256/32)4(128/32)14AES加密算法實現(xiàn)涉及密鑰擴展過程和加密過程。以密鑰長度為128比特為例,加密過程涉及一種作為初始輪初始密鑰加法(AddRoundKey),接著進行9次輪變換(Round),最后再使用一種輪變換(FinalRound),如圖3.4.3-1所示:圖3.4.3-1加密全過程(密鑰長度為128比特)其中,每個輪變換(Round)由4層構(gòu)成:第一層(字節(jié)代換-SubBytes)為非線性層,是將一種輸入為8比特輸出也為8比特S盒作用于狀態(tài)矩陣中每一種字節(jié);第二層(行移變換-ShiftRows)和第三層(列混合變換-MixColumns)是線性層,是將4×4狀態(tài)矩陣按行移位,按列混合;第四層(密鑰加法-AddRoundKey)為密鑰加層,是將輪密鑰每個字節(jié)和狀態(tài)矩陣中相應(yīng)位置字節(jié)進行異或。每一輪流程如圖3.4.3-2所示:圖3.4.3-2每一輪構(gòu)造圖3.4.3-3AES算法加、解密過程(128比特密鑰)其中,F(xiàn)inalRound包括除MixColumns這一步以外其她3個環(huán)節(jié)。AES解密算法實現(xiàn)涉及密鑰擴展過程和解密過程。解密過程與加密過程類似,是加密過程逆運算。以數(shù)據(jù)分組大小為128比特,初始密鑰長度為128比特為例AES算法加、解密過程如圖3.4.3-3所示:§3.4.4AES算法描述§字節(jié)代換(SubBytes)每個字節(jié)都可以表達到一種8×1列向量,SubBytes就是通過S-盒獨立地作用在每個字節(jié)上非線性變換[46]。該變換由兩個子變換構(gòu)成:a.對每個字節(jié)求其在有限域G(28)上乘法逆。注意,元素{00}映射為其自身。b.對每個字節(jié)做有限域G(28)上仿射變換。仿射變換f定義如表達式(3.4-1)所示(注意:a0,a1,a2,a3,a4,a5,a6,a7就是狀態(tài)中每個字節(jié)乘法逆元比特表達):假設(shè)該步輸入字節(jié)為a,輸出字節(jié)為b,通過字節(jié)代換變換后成果可表達為b=SRD(a)=f(g(a))。其中,g(a)表達字節(jié)在有限域G(28)上求乘法逆變換;f(a)表達字節(jié)在有限域G(28)上仿射變換。狀態(tài)矩陣通過SubBytes變換作用后,其效果如圖3.4.4-1所示:圖3.4.4-1字節(jié)代換示意圖SubBytes變換是可逆,在AES解密過程中所用到字節(jié)代換逆變換InvSubBytes運算如下:對狀態(tài)矩陣每一字節(jié)元素,先進行有限域G(28)上逆仿射變換,然后計算其在有限域G(28)上乘法逆?!煨幸谱儞Q(ShiftRows)ShiftRows是線性變換,它和列混合運算互相影響,在多輪變換后,使密碼信息達到充分擴散。行移變換是在狀態(tài)矩陣每個行間進行,是狀態(tài)矩陣中行按照不同偏移量進行循環(huán)左移運算,第0行循環(huán)左移C0字節(jié),第1行循環(huán)左移C1字節(jié),第2行循環(huán)左移C2字節(jié),第3行循環(huán)左移C3字節(jié),從而使第i行第j列字節(jié)移到位置第i行第(j-Ci)modNb列[46]。移動偏移量C0,C1,C2,C3依賴于Nb取值,如表3.4.4-1所示:表3.4.4-1偏移量-分組大小關(guān)系表分組大?。∟b)C0C1C2C34012350123601237012480134ShiftRows變換對狀態(tài)矩陣影響如圖3.4.4-2所示:圖3.4.4-2行移變換示意圖在AES解密過程中所用到ShiftRows逆變換稱為InvShiftRows,是狀態(tài)矩陣中行按照不同偏移量進行循環(huán)右移運算,第0行循環(huán)右移C0字節(jié),第1行循環(huán)右移C1字節(jié),第2行循環(huán)右移C2字節(jié),第3行循環(huán)右移C3字節(jié),從而使第i行第j列字節(jié)移到位置第i行第(j+Ci)modNb列。移動偏移量C0,C1,C2,C3依賴于Nb取值(同ShiftRows中C0,C1,C2,C3)?!炝谢旌献儞Q(MixColumns)MixColumns是對狀態(tài)矩陣中列做線性變換,進行四字節(jié)乘運算。詳細定義如下:將狀態(tài)矩陣列看作有限域G(28)上多項式,并在模x4+1下與一種給定多項式c(x)相乘,其中c(x)=03x3+01x2+01x+02。假設(shè)該步變換狀態(tài)一列輸入為a,輸出為b,即b(x)=c(x)a(x)mod(x4+1),運用在有限域G(28)上算術(shù)特性代換,其表達式如表達式(3.4-2)所示[46]:MixColumns變換對狀態(tài)矩陣影響如圖3.4.4-3所示:圖3.4.4-3列混合變換示意圖在AES解密過程中所用到MixColumns逆變換稱為InvMixColumns,它與MixColumns類似,是狀態(tài)矩陣中每一列在模x4+1下與多項d(x)=0Bx3+0Dx2+09x+0E相乘。假設(shè)該步變換狀態(tài)一列輸入位a,輸出為b,如表達式(3.4-3)所示:§密鑰加法(AddRoundKey)AddRoundKey是將輪密鑰各字節(jié)和狀態(tài)矩陣中相應(yīng)位置字節(jié)分別模2加,實現(xiàn)狀態(tài)和密鑰混合[3]。輪密鑰長度和狀態(tài)長度是同樣。該環(huán)節(jié)逆變換是其自身。AddRoundKey變換對狀態(tài)矩陣影響如圖3.4.4-4所示(W表達通過密鑰擴展后密鑰矩陣):圖3.4.4-4密鑰加法示意圖輪密鑰是由初始密鑰通過密鑰擴展產(chǎn)生和選用?!烀荑€擴展(ExpandedKey)密鑰擴展可以描述為:初始密鑰通過一種密鑰擴展函數(shù)擴展后,為每一輪加、解密所使用輪密鑰產(chǎn)生恰當比特數(shù)。由于AES算法規(guī)定一種輪密鑰用于初始密鑰加法,并且每一輪都需要一種輪密鑰。這樣,所需要輪密鑰比特總數(shù)等于32×Nb×(Nr+1),其中Nb為數(shù)據(jù)分組大小,Nr為輪數(shù)。因而,如果使用分組長度為128比特(即Nb=4),輪數(shù)為10(即Nr=10),那么就需要1408比特輪密鑰。通過密鑰擴展后,最高位128比特分組就用作初始密鑰加法輪密鑰,擴展密鑰下一種128比特分組作為第一輪輪密鑰,依次類推。最后,最低位128比特用作最后一輪輪密鑰。下面簡介密鑰擴展函數(shù)。對于不同初始密鑰長度,密鑰擴展函數(shù)略有不同,但都使用了如下幾種重要函數(shù):字節(jié)代換(S-盒)、以密鑰矩陣列為單位列內(nèi)循環(huán)位移以及與輪常數(shù)異或運算。將初始密鑰(初始密鑰可以形象排列成一種4×Nk字節(jié)矩陣)作為初始密鑰加法密鑰,運用初始Nk列密鑰,通過遞歸方式擬定背面各列。遞歸函數(shù)依賴于列位置:當時始密鑰列數(shù)Nk6時,如果第i列不是Nk整數(shù)倍,則第i列是第i-Nk列與第i-1列逐位異或;否則,第i列是第i-Nk列與第i-1列一種非線性函數(shù)逐位異或。對于初始密鑰列數(shù)Nk>6時,如果第i列不是Nk整數(shù)倍,則第i列是第i-Nk列與第i-1列逐位異或;如果imodNk=4,則第i列是第i-Nk列與通過字節(jié)代換后第i-1列逐位異或;如果第i列是Nk整數(shù)倍,則第i列是第i-Nk列與第i-1列一種非線性函數(shù)逐位異或。這個非線性函數(shù)是通過如下方式來實現(xiàn):將SRD分別作用在列4個字節(jié)上,同步附加一種列內(nèi)字節(jié)循環(huán)位移,增長一種輪常量(用于消除對稱)。輪常量獨立于Nk,并且被GF(28)中一種遞歸規(guī)則所定義[46]:RC[1]=x0(即01)RC[2]=x(即02)RC[j]=xRC[j-1]=xj-1,j>2以數(shù)據(jù)分組長度為128比特,初始密鑰長度為128比特或192比特為例,密鑰擴展函數(shù)表達式如下(K[i][j]表達初始密鑰矩陣第i行第j列,W[i][j]表達擴展后密鑰矩陣第i行第j列,Nk表達初始密鑰分組列數(shù),Nr表達輪數(shù),Nb表達數(shù)據(jù)分組列數(shù),在這里Nk=4或6,Nr=10或12,Nb=4):當Nk≤6時For(j=0;j<Nk;j++)For(i=0;i<4;i++)W[i][j]=K[i][j];For(j=Nk;j<Nb*(Nr+1);j++){If(jmodNk=0){W[0][j]=W[0][j-Nk]⊕SubByte(W[1][j-1])⊕RC(j/Nk);For(i=1;i<4;i++)W[i][j]=W[i][j-Nk]⊕SubByte(W[(i+1)mod4][j-1]);}Else{For(i=0;i<4;i++)W[i][j]=W[i][j-Nk]⊕W[i][j-1];}}其中,SubByte(S)是表達對狀態(tài)S進行字節(jié)代換運算;RC(j/Nk)=(02)(j/Nk)-1,用于消除對稱。加密時密鑰選用:第i輪輪密鑰就是由矩陣W中第Nb×i列到Nb×(i+1)-1列給出。解密時密鑰選用:第i輪輪密鑰就是由矩陣W中第Nb×(Nr-i)列到Nb×(Nr-i+1)-1列給出。擴展:當時始密鑰長度不不大于192比特時,即Nk>6時,各輪輪密鑰是通過下列密鑰擴展函數(shù)得到(K[i][j]表達初始密鑰矩陣第i行第j列,W[i][j]表達擴展后密鑰矩陣第i行第j列,Nk表達密鑰分組列數(shù),Nr表達輪數(shù),Nb表達數(shù)據(jù)分組列數(shù)):當Nk>6時For(j=0;j<Nk;j++)For(i=0;i<4;i++)W[i][j]=K[i][j];For(j=Nk;j<Nb*(Nr+1);j++){If(jmodNk=0){W[0][j]=W[0][j-Nk]⊕SubByte(W[1][j-1])⊕RC(j/Nk);For(i=1;i<4;i++)W[i][j]=W[i][j-Nk]⊕SubByte(W[(i+1)mod4][j-1]);}ElseIf(jmodNk=4){For(i=1;i<4;i++)W[i][j]=W[i][j-Nk]⊕SubByte(W[i][j-1]);}Else{For(i=0;i<4;i++)W[i][j]=W[i][j-Nk]⊕W[i][j-1];}}其中,SubByte(S)是表達對狀態(tài)S進行字節(jié)代替運算;C(j/Nk)=(02)(j/Nk)-1,用于消除對稱。加密時密鑰選用:第i輪輪密鑰就是由矩陣W中第Nb×i列到Nb×(i+1)-1列給出。解密時密鑰選用:第i輪輪密鑰就是由矩陣W中第Nb×(Nr-i)列到Nb×(Nr-i+1)-1列給出。AES迅速實現(xiàn)隨著網(wǎng)絡(luò)通信發(fā)展,傳送數(shù)據(jù)量不斷增大,每天都也許要進行數(shù)以億次加密時,一種高效加密算法將大大減少網(wǎng)絡(luò)延時。因而,在某些應(yīng)用場合中,對加解密速度需求成為對AES算法核心規(guī)定。本章研究了Rijndael算法迅速實現(xiàn),并給出了算法在32位平臺上軟件實現(xiàn)方案?!?.1Rijndael算法實現(xiàn)方案當前AES算法實現(xiàn)研究重要分為軟件實現(xiàn)、DSP實現(xiàn)和硬件實現(xiàn)三個方向。軟件實現(xiàn)是基于通用PC編程實現(xiàn),它具備實現(xiàn)簡樸、可移植性強、成本相對低廉、易于升級等長處;它缺陷是龐大操作系統(tǒng)和大量硬件資源支持。由于通用CPU主頻不斷提高,軟件實現(xiàn)也能達到相稱高速度?!?.1.1實現(xiàn)考慮為了使設(shè)計算法能在32位平臺上高效地執(zhí)行,在進行算法設(shè)計時候做了如下考慮:(1)算法要支持三種密鑰長度,即128bits、192bits和256bits密鑰長度。(2)為了提高算法執(zhí)行速度,在存儲空間容許狀況下,盡量多地采用表查找辦法。(3)采用32位設(shè)計思路。以4字節(jié)為運算基本單位,算法重要計算部件設(shè)計成32位查表操作,這樣算法更易于在32位解決器上迅速執(zhí)行。(4)輪變換模塊實現(xiàn)用宏而不用函數(shù),以減少函數(shù)調(diào)用時間開銷。(5)展開所有可以進行預(yù)運算操作,展開所有輪輪函數(shù),避免多次內(nèi)存復(fù)制?!?.1.2實現(xiàn)方案及其分析AES算法重要有三個大模塊,即密鑰擴展模塊、加密模塊和解密模塊。密鑰擴展模塊由產(chǎn)生加密密鑰模塊和解密密鑰模塊構(gòu)成;加解密模塊均由AddRoundKey模塊、輪函數(shù)模塊、FinalRound變換模塊構(gòu)成,其中最重要是輪函數(shù)模塊,它是AES算法核心模塊。輪函數(shù)改進。輪函數(shù)是AES核心,其效率高低對整個算法實現(xiàn)速度影響極大,可以通過如下辦法改造輪函數(shù),通過查表方式達到迅速實現(xiàn)輪函數(shù)目。當前假設(shè)輪變換輸入為a,SubBytes輸出為b,則又設(shè)ShiftRows輸出為c,輪密鑰為k,通過MixColumns和AddRoundKey后輸出為d,則有:將上面三個表達式合并,并將矩陣乘法用線性向量組合來表達,得到:這樣,咱們可以定義如下四個T表:使用這些四個表,輪函數(shù)變換可以改寫為:以上四個T表都包括了256個4字節(jié)條目,從而需要4KB存儲空間,有了這四張表,對每一列輪變換只需要進行4次查表和4次異或操作,這樣極大提高了算法效率。此外,不難發(fā)現(xiàn),對于任意a,T0[a]、T1[a]、T2[a]和T3[a]可以通過互相循環(huán)移位來生成。如果對于每一輪每一列都額外增長3次循環(huán)移位,則只需構(gòu)造其中一張表,查表只需要在一張大小為1KB表上實現(xiàn)即可,這種辦法合用于存儲空間十分緊張應(yīng)用環(huán)境中?!?.2各模塊算法描述及其分析§4.2.1計算輪函數(shù)T表由3.1.2可知,咱們只需規(guī)定出T0[a],運用字節(jié)循環(huán)移位便可以求出別的3個表,從而實現(xiàn)輪函數(shù)。運用S盒表盒字節(jié)乘法(即GF(28)上多項式乘法),可以實現(xiàn)輪函數(shù)T0[a]表,T0[a]表中每一種元數(shù)均為四個字節(jié)。下面將分別給出T0[a]表達式(4.2.1-1)及生成輪函數(shù)T表算法(算法4-1[47])。算法4-1輪函數(shù)T0[a]生成typedefunsignedlongintu32;typedefunsignedcharu8;CreatTbox(u32T[256]){u8n1,n2,n3;for(inti=0;i<256;i++){n1=S[i];n2=mul(0x02,S[i]);//mul()是GF(28)多項式乘法n3=mul(0x03,S[i]);T[i]=[(u32)n3<<24]|[(u32)n1<<16]|[(u32)n1<<8]|(u32)n2;}}依照算法4-1,咱們將T0[a]計算成果存儲在T[256]數(shù)組中,得到了如下T0表,別的3個表可以由該表循環(huán)移位得到?!?.2.2輪函數(shù)C語言實現(xiàn)咱們采用4.1.2辦法用C語言實現(xiàn)輪變換,為了在32位平臺上得到較高效率,函數(shù)輸出和輸入都采用unsignedlongint類型。算法4-2[47]給出了使用一種表查詢時C代碼。算法4-2輪函數(shù)實現(xiàn)(一種T表)typedefunsignedcharuint8;typedefunsignedlongintuint32;inlinevoidRound(uint8*ptext,uint8*roundkey,uint32*ctext){uint32rk[4];uint32t0=0,t1=0,t2=0,t3=0;t0=T[ptext[0]];t1=(T[ptext[5]]>>8)|(T[ptext[5]]<<24);t2=(T[ptext[10]]>>16)|(T[ptext[10]]<<16);t3=(T[ptext[15]]>>24)|(T[ptext[15]]<<8);ctext[0]=t0^t1^t2^t3;rk[0]=((uint32)roundkey[0]<<24)|((u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度廣州租賃房屋合同終止條件規(guī)范范本6篇
- 二零二五年度保健品健康知識培訓(xùn)與講座合同3篇
- 2025版摩托車租賃與保養(yǎng)一體化服務(wù)合同3篇
- 二零二五年度房地產(chǎn)項目權(quán)益轉(zhuǎn)讓合同3篇
- 2025版綠色環(huán)保彩鋼活動房租賃管理合同3篇
- 二零二五年度按揭貸款服務(wù)與信用修復(fù)合同3篇
- 二零二五年度創(chuàng)意產(chǎn)業(yè)合伙企業(yè)散伙協(xié)議書示范文本3篇
- 二零二五年度新型輔材施工合同范本6篇
- 二零二五年度房產(chǎn)車輛贈與及子女婚姻生活協(xié)助合同3篇
- 二零二五年度成都市事業(yè)單位勞動合同范本修訂版2篇
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國近代史綱要 教學(xué)課件
- 監(jiān)事會年度工作計劃
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識
- SVG無功補償培訓(xùn)
- 新生兒聽力篩查技術(shù)規(guī)范衛(wèi)生部2010年版
- 大貓英語分級閱讀 六級1 Arthur's Fantastic Party課件
- SCA自動涂膠系統(tǒng)培訓(xùn)講義
- LEC法取值標準對照表
- 華中數(shù)控車床編程及操作
評論
0/150
提交評論