對(duì)稱(chēng)密鑰密碼算法研究應(yīng)用_第1頁(yè)
對(duì)稱(chēng)密鑰密碼算法研究應(yīng)用_第2頁(yè)
對(duì)稱(chēng)密鑰密碼算法研究應(yīng)用_第3頁(yè)
對(duì)稱(chēng)密鑰密碼算法研究應(yīng)用_第4頁(yè)
對(duì)稱(chēng)密鑰密碼算法研究應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

最新文檔

評(píng)論

0/150

提交評(píng)論