




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、南京郵電大學畢業設計(論文)題目分組加密算法的研究與實現專業信息與計算科學學生姓名 班級學號 指導教師 評閱教師 指導單位畢業設計(論文)原創性聲明本人鄭重聲明:所提交的畢業設計(論文),是本人在導師指導下,獨立進 行研究工作所取得的成果。除文中已注明引用的內容外,本畢業設計(論文)不 包含任何其他個人或集體已經發表或撰寫過的作品成果。對木研究做出過重要貢 獻的個人和集體,均已在文屮以明確方式標明并表示了謝意。論文作者簽名: 日期: 年 月隨著信息化技術的廣泛應用和深入發展,信息安全越來越受到人們的高度 關注,已成為影響國家安全、經濟發展、社會穩定的垂耍因索。作為信息安全 的核心之一的加密技術
2、也越來越重要,加密算法的好壞也決定信息的安全性。 分組密碼是現代密碼學的重要體制z-,具有加密速度快、安全性好、易于標 準化等特點,廣泛地應用于數據的保密傳輸、加密存儲等場合。在研究分組密 碼的基礎上,木文對aes和des兩種算法進行研究。主耍內容如下:1 對分組密碼進行分析。2. 對aes和des兩種加密算法詳細分析。3根據兩種加密算法,用visual c+編寫加密軟件,并對軟件進行測試。關鍵詞:分組密碼;aes; des;abstractwith the wide application and further development of information technology,
3、information security has attracted more and more attention.lt has become an important factor to influence national security, economic development, social stability. as one of the core of information security encryption technology become more and more important, the quality of the encryption algorith
4、m also determines the security of infbrmation.block cipher is one of the important institutional of the modern cryptography, it has a fast encryption speedsecurity, easy standardization and other characteristics widely used in the confidentiality of data transmission, encrypted storage and other occ
5、asions.on the basis of the study of block cipher, this thesis conducts the research to aes and desthe main contents are as follows:1. analysis for the block cipher.2. a detailed analysis for two encryption algorithms of aes and des3. according to two encryption algorithm, using visual c + + to write
6、 encryption software, and testing the software.key words: block cipher; aes; des;第一章分組密碼的原理11.1分組密碼概述11.2分組密碼的設計原則11. 2. 1針對安全性的一般設計原則11.2.2針對實現的設計原則21.3分組密碼常見的設計方法和原理214分組密碼的工作模式31.4. 1電子密碼本ecb31.4.2密文塊鏈接cbc41.4.3密文反饋模式cfb41.4. 4輸出反饋模式ofb51. 5常見的分組加密算法61. 5. 1 des61.5.2 aes61. 5.3 idea 算法61. 5.4 rc
7、6 算法61.5.5 skipjack 算法71. 5. 6 camellia 算法7第二章des加密算法82. 1 des的產生背景82. 2 des的基本結構82. 3 des的初始置換和逆初始置換92.4 des 的 f 函數112.4. 1擴展置換112. 4.2代換盒112.4.3置換運算132. 5 des的密鑰生成14第三章aes加密算法153. 1 aes的產生背景163. 2 aes的基木結構163. 3 aes 加密183. 3. 1字節代換183.3.2行移位193. 3. 3列混合20334輪密鑰加213.3.5密鑰擴展213.4aes的解密22第四章加密軟件設計244
8、. 1des加密軟件設計244. 1. 1開發平臺244. 1.2功能要求244. 1.3主要模塊設計244. 1.4軟件界面284. 2aes加密軟件設計294.2. 1開發平臺294. 2. 2功能耍求294.2.3主要模塊設計294. 2. 4軟件界面34結束語35致謝36參考文獻37第一章分組密碼的原理11分組密碼概述分組密碼是對稱密碼的一種,是密碼系統中最重要的組成部分。分組密碼除 了能夠加密數據,也可以作為核心算法應用在其他密碼技術中,如構造偽隨機數 生成器、流密碼、認證碼和散列函數;分組密碼也是消息認證技術、數據完整性 機制、實體認證協議及數字簽名方案的核心算法。分組密碼是將明文
9、分成固定長度的組,如64位一組,用同一密鑰和算法對每 一塊分組加密,輸出固定長度的密文。分組密碼加密函數實際上是從n位明文塊 到n位密文塊之間的映射。通常記比為密鑰為k時的加密函數,稱比的逆函數為 密鑰為k時的解密函數,記為幾。分組密碼的數學模型如圖11所示。圖1.1分組密碼的數學模型分組密碼具有速度快、易于標準化和便于軟硬件實現等特點。通常是信息與 網絡安全中實現數據加密和認證的核心體制,它在計算機通信和信息系統安全領 域有著最廣泛的應用。12分組密碼的設計原則1.2.1針對安全性的一般設計原則分組長度和密鑰長度:當明文分組長度為n位時,至多需要2“個明文-密文對 就徹底破解了密碼。當密鑰長
10、度為n位時,對一個截獲的密文,至多需要試驗2ri 個密鑰就破解了該密文。因此從安全性角度來考慮,明文分組長度和密鑰長度盡 可能大。擾亂原則:又稱混淆原則,是指人們所設計的密碼應使得密鑰和明文以及密 文z間的信賴關系相當復雜以至于這種依賴性對密碼分析者來說是無法利用的。 擴散原則:人們所設計的密碼應使得密鑰的每一位影響密文的許多位以防止對密 鑰進行逐段破譯,因而明文的每一位也應影響密文的許多位以便隱蔽明文的統計 特性。1.2.2針對實現的設計原則軟件實現的設計原則:使用子塊和簡單的運算。密碼運算在子塊上進行,要 求子塊的長度能自然地適應軟件編程。在軟件實現中,移位置換,是難于實現的, 因此應盡量
11、避免使用它,子塊所進行的密碼運算應該是一些易于軟件實現的。硬件實現的設計原則:加密和解密的相似性,即加密和解密過程應該僅僅在 密鑰的使用方式不同,以便同樣的器件既可以加密乂可以解密。1.3分組密碼常見的設計方法和原理設計分組密碼算法的一個基本思想是:復雜函數可以通過簡單函數進行若干 輪迭代而實現,充分利用簡單輪函數和非線性運算。最有效地實現分組密碼算法 基本設計思想的方法是乘積組合,即用簡單的子密碼系統通過乘積組合的方法構 造復朵的密碼系統。主流的分組密碼都采用迭代加密的方式,整個加密過程曲初始置換ip(k, x), r輪的輪加密函數f (k, x)和末置換fp (k, x)組成。每一輪加密過
12、程和置換過 程由不同的子密鑰控制。一般的迭代加密算法結構如圖2. 2所示。在圖1. 2中,當子密鑰k固定時,ip (k, x) , f (k, x)和fp (k, x)為置換。ip, f,和fp的逆函數分別記作:ip",廠和fps滿足ip-1 (k, ip(k, x) ) =1 fp1 (k, fp(k, x)二i f_, (k, f(k, x) ) =1 式中,i為恒等變換。由密鑰擴展算法生成的子密鑰記作s(k) (k0,k.,,咕), 則k()為初始置換的子密鑰,h (0<i<r+l)為第i輪的子密鑰,匕叩為末置換的子密 鑰。初始置換和末置換可以是依賴于子密鑰的置換,
13、也可以是不依賴于子密鑰的 置換。圖1.2 般的迭代分組密碼算法的結構14分組密碼的工作模式分組密碼是實現加密數據的一個基本構件。它有固定的分組長度,而實際應 用屮需要加密的明文都長于這個分組長度。為了將分組密碼算法應用于實際,人 們定義了很多工作模式。其中主要有四種常用的模式:電子密碼本、密文塊鏈接、 密文反饋和輸岀反饋。1.4. 1電子密碼本ecb電子密碼本是最簡單的操作模式,將輸入明文消息分成64位塊,然后單獨加 密每個塊。消息中的所有塊用相同密鑰加密。解密時將接收到的數據分成64位塊, 利用與加密相同的密鑰解密每個塊,得到相應的明文塊。電子密碼木適合加密較短的數據,對于長數據,重復相同的
14、明文塊范帀大,密碼分析者可以用相同的明 文產生相同的密文的特點對數據結構進行分析,找到規律。1.4.2密文塊鏈接cbc密文塊鏈接模式保證即使輸入中的明文塊重復,這些明文塊也會在輸出中得 到不同的密文。在密文塊鏈接模式中,前面塊的加密結果反饋到當前塊的加密中, 用每一個塊修改下一個塊的加密。每塊密文不僅與相應的當前輸入明文塊相關, 而月與前面的所有明文塊相關。解密是加密的逆過程。密文塊鏈接模式的加密過 程如圖13如示。初始化向量明文塊1xor密鑰>1加密xor加密明文塊mxor 加密密鑰 密文改2密文塊1圖13密文塊鏈接模式加密1.4.3密文反饋模式cfb密文反饋模式通過改變初始向量使相同
15、的明文加密得到不同的密文。設對明 文進行s位分組的cfb中,加密函數的輸入是一個b位的移位寄存器,這個移位 寄存器被初始化為一個初始化向量iv。加密兩數處理結果的最左邊的s位與明文 的第一個分組mi進行異或產生密文分組g。同時,移位寄存器的值向左移s位, 且用g替換寄存器的最右邊的s位。重復這個過程,直到完成加密。cfb的加/解 密過程如圖1. 4和圖1. 5所示。m2移位寄存器 1移位寄存器|左移s位)左移s位選擇s位xor圖1.4 cfb加密模式1.4.4輸出反饋模式ofb輸出反饋模式把分組加密算法作為密鑰流生成器使用,加密算法的輸出直接 放入反饋寄存器的同時與明文按位加產生密文。其加密模
16、式如圖1.6所示。15常見的分組加密算法1.5.1 desdes (數據加密算法,data encryption standard)算法是由tbm公司研制的, 并于1977年定為美國聯邦信息加密標準,以64位為分組對數據加密,他的密鑰 長度是56位,每個第8位為奇偶校驗,加密解密用同一種算法。1.5.2 aes密碼學中的高級加密標準(advanced encryption standard, aes) , 乂稱 ri jndael加密法,為比利時密碼學家joan daemen和vincent ri jmen所設計,結 合兩位作考的名字,以rijndael命名。該算法采用對稱分組密碼體制,密鑰長
17、度 的最少支持為128, 192,256,分組長度128位,算法應易于齊種硬件和軟件實現。 這種算法是美國聯邦政府采用的區塊加密標準,這個標準用來替代原先的des,己 經被多方分析且廣為全世界所使用。1.5.3 idea 算法國際數據加密算法(idea, international data encryption algorithm)是 最強大的加密算法之一,出現在1990年,最初的版本出瑞士的來學嘉(xuejialai) 和james massey公布,成為推薦加密標準(pes)。1991年,為抗擊差分密碼攻 擊,他們對算法進行了改進,增強了算法的強度,稱為改進推薦加密標準(1pes), 并
18、于1992年改名為國際數據加密算法。1.5.4 rc6 算法rc6算法所示rsa公司提交給nist競選aes的一個候選算法,它是在rc5的 基礎上設計的。眾所周知,rc5是一個非常簡潔的算法,它的特點是大量使用數據 循環。rc6繼承trc5的優點,為了滿足nist的要求,即分組長度為128bit, rc6 使用了 4個寄存器,并使用32bit的整數模乘運算,用于加強擴散特性。rc6更精 確的表示是rc6-w/r/7, jt屮字長為vvbit,廠為加密輪數,b為加密密鑰用字節 表示的長度。一般情況下令w二32, r=20, h=l(5 (24,32)。1.5.5 skipjack 算法1993年
19、4月16 h ,美國政府倡導聯邦政府和工業界使用心得具有密鑰托管功 能的聯邦加密標準,該建議稱為托管加密標準,又稱clipper建議。其忖的是為 用戶提供更好的安全通信方式,同時允許政府為了國家安全監聽某些通信。這個 建議的核心是一個新的稱為clipper的防竄擾芯片,它是由美國國家安全局(nsa, national security agency)主持開發的硬件實現的密碼設備,clipper采用了稱 為skipjack的分組密碼算法。skipjack是一個蜜月長度為80bit,分組長度為64bit, 32輪的分組密碼。 該算法從1985年開始設計,于1990年完成。1.5. 6 came i
20、lia 算法2000年ntt和mitsubi shi電子攻速聯合向nesste提交了 camel 1 ia算法,其 設計目標類似aes的要求,即分組長度是128bit,并支持128bit、192bit及256bit3 種規模的密鑰長度;比三重des快而且至少和三重des 一樣安全。camellia是 nessie推薦的普通型分組密碼之一。在本論文屮,我們主要研究的是des算法和aes算法。第二章des加密算法2.1 des的產生背景數據加密標準(des, data encryption standard)的出現是現代密碼發展史 上的一個非常重要的事件,它是密碼學歷史上第一個廣泛應用于商用數據保
21、密的 密碼算法,并開創了公開密碼算法的先例,極大地促進了密碼學的發展。20世紀60年代后期,ibm成立了一個由horst feistel負責的計算機密碼學 研究項h組,并于1971年設計出lucifer算法。lucifer的分組長度為64位,密 鑰長度為128位。因為lucifer算法非常成功,由walter tuchman和carl meyer 負責,在ibm公司的研究人員和nsa的技術顧問支持下,給出了 lucifer的一個 修訂版,他抗密碼分析能力更強而其密鑰長度減小為56位,更適合單片機環境使 用。1972年,美國國家標準局(nbs)擬定了一個旨在保護計算機和通信數據的計 劃。作為該計
22、劃的一部分,決定開發一個單獨的標準密碼算法。1973年開始,nbs 開始在全世界征求國家密碼標準方案。tbm將tuchman-meyer方案提交給nbs,它 是所有的應征方案屮最好的一個,于是道1977年,mbs將它采納為數據加密標準, 即 deso2. 2 des的基本結構des是一個對稱密碼體制,加密和解密使用同一密鑰,有效密鑰長度為56位。 des是一個分組密碼算法,分組長度為64位,即對數據進行加解密的單位是64 位,明文和密文的長度相同。另外,des加密與解密使用同一算法(在硬件與軟件 實現上,有利于加密單元的重用)。對于任何分組密碼算法,總有兩個輸入:明文和密鑰。des的明文分組長
23、度為 64位,而初始密鑰長度也為64位,但有效的密鑰為56位,因為第& 16, 24, 40, 4& 56 和64位是奇偶校驗位。如表2. 1所示,藍色字體部分表示奇偶校驗位。表2. 1放芥密鑰的每個第八位(藍色字體)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364圖2. 1顯示了 des的基本結構,其屮右半部分給出了使用56位密鑰的過程, 64位初始密鑰經過置換選擇1后變成56位,經過循環
24、左移和置換選擇2后分別得 到16個,48位子密鑰ki (i二1,2, .,16)用作每一輪的迭代運算。圖2. 1左半部分16次迭代運算為des的加密過程,具主要有3個階段:(1)64位的明文經過初始置換(ip)而被重新排列,并將其分成左右対個分 組l。和r。,各32位;(2)在密鑰的參與下,對左右兩個分組進行16輪相同輪函數的迭代,每輪 迭代都有置換和代換,最后一輪迭代的輸出為64位,是左半部分和右半部分互換 產生的預輸出;(3)最后的預輸出再通過與初始置換(ip)互逆的逆初始置換(ip")產生 64位的密文。加密過程可簡化描述為:loro-ip (64 位明文)li-ri-ii=l
25、,2,,16ri-lih ef (rg, kj i=l,2,,16<64 位密文>-ip" (r16l16)des解密過程與加密過程類似,其實就是其逆過程:r4-ip (64 位密文)ri-i-li1=1,2,,16li-ri ©f (l, ki) i=l,2,,16<64 位明文>-ll (rolo)2. 3 des的初始置換和逆初始置換初始置換(ip)是在第一輪迭代z前進行的,冃的是將原明文塊的位進行換 位,其置換表是固定的,如圖2. 2所表示。逆初始置換(ipt是初始置換的逆置 換,如圖2. 4所示。數據塊的位經過初始置換和逆初始置換后恢復到原
26、有的位置。初始置換(ip)表中的位序號表現出這樣的特征:整個64位按8行8列排列, 最右邊一列按2, 4, 6, & 1, 3, 5, 7的次序排列,往左邊各列的位序號依次為緊鄰其 右邊一列齊位序號加8。逆初始置換(ipj是初始置換的逆過程。相應的,表中位序號表現出這樣的特 征:整個64位按8行8列排列,左邊第二列按8, 7,6, 5, 4, 3, 2, 1的次序排列,往 右邊隔一列的位序號依次為當前列各位序號加8,認為最右邊一列的隔列為最左邊 一列。64bit明文64bit密鑰64bit密文圖2. 1 des的基木結構585042342618102605244362820124625
27、4463830221466456484032241685749413325179159514335271911361534537292113563554739312315740848165624643239747155523633138646145422623037545135321612936444125220603835343115119592734242105018582633141949175725圖2. 2初始置換ip圖2. 3逆初始置換11戶注意到初始置換是固定的,公開的函數,因此這個初始置換以及逆初始置換 都沒有密碼意義。初始置換完成后,將得到的64位序列分成兩半,各32位,然
28、后,對這兩塊進行16輪的迭代操作。2.4 des的f函數des的一輪迭代過程如圖2. 5所示。des的輪函數f由3個部分組成:擴展置 換(又稱e盒)、非線性代換(又稱s盒)和線性置換(又稱p盒)。2. 4. 1擴展置換擴展置換又稱e盒,它將32位輸入擴展為48位輸出。其擴展方法為:將48 位輸出按8行6列的次序排列,排列時,將輸入位序號按32、1、2、31的次 序依次排列,但上一行的后兩位依次在下一行的起始位置得到重用,如第一行的 最后兩位的4、5同時出現在第二行的頭兩位(最后一行的下一行是第一行)。其 處理過程如圖2. 4所示。由于這個指環改變了位的次序,重復了某些位,故稱為擴展置換。e盒產
29、生與 子密鑰相同長度的數據使得能進行異或運算,同時,擴展后的數據在s盒的作用 下能進行壓縮,實現了非線性變換。但是,e盒在des算法上的冃的不僅如此,由 于e盒輸入的1位影響2個s盒的輸入,所以輸出隊輸入的依賴性將傳播更快, 從而快速實現雪崩效應。2. 4. 2代換盒代換盒乂稱作s盒,其功能是進行非線性的代換。s盒是des屮唯一的非線性 部分,des的安全強度主要取決于s盒的安全強度。des的s盒是一個查表運算,8個s盒分別對應8個非線性的代換表,每個s 盒的輸入均為6位,輸岀為4位。這樣,經過s盒的代換之后,e盒擴展生成的 48位數據又重新被壓縮成32位數據。在查表前,將輸入的48微數據分成
30、8組, 每組6位,然后分別進入8個s盒進行運算。8個s盒的代換表如表2. 2-2. 9所示。3212345456789891011121312131415161716171819202120212223242524252627282928293031321圖2.5 des的一輪迭代過程表2.2 s】盒m4131215h10 612 5 9 0 70157414213110612119 538411481362111512 97310501512 824917511314100613表2.3 s2盒1518146113 49721312051031347152814120110691150147
31、1110413 15812 69321513 8101315 4 2116 7120 514 910 0 91463155113127114281370934610285 14121115113649815301112 1251014711013 06 98741514 3115212表2. 5 st盒71314306 910128511124151381156150347212110149106901211713151314528 4315061011389 4 51112 7 214表2. 6 s5盒2124i7101168 5 3""1513014 91411 212
32、 4 71315 0 151039 8 64 21111013 7815 912 5 6301411 81271142163150 910453表2. 7 s&盒12 1 10159268013341475111015 427129561131401138914 155281237041011311643 212 9 51510111417 6 0 813表2. 8 s7盒4h21415 0 813 312 9 7 510 6113 011749110143 512 215 8 61 4 11 13 12 3 7 14 10 15 6 8 0 5 9 26111381410795015
33、142312表2. 9 s*盒132846151111093145012711513810 37412561101492711419121420610131535821147410813151290 356112. 4. 3置換運算置換運算(p盒)只是進行簡單位置置換,即按圖2. 6所示的列表制定把-位 換成另一位,而不進行擴展和壓縮。p盒設計有如下特點:(1)每個s盒的4位輸出影響下一輪6個不同的s盒,但是沒有2位影響同 一 s盒;(2)在第i輪s盒的4位輸出小,2位將影響i + 1輪屮間位,其余兩位將影 響兩端位;(3)如果一個s盒的4位輸出影響另一個s盒中間的1位,則后一個的輸出 位不會
34、影響前面一個s盒屮間位。1672021291228171152326518311028241432273919123062211425圖2. 6 p盒置換表2. 5 des的密鑰生成des最初的64位密鑰通過置換選擇pc-1 (表3. 0)得到有效的56位密鑰。這 56位密鑰分別為2個28位數據c。和doo每輪迭代屮,5和分別經過一個由 表3. 2確定的1位或2位的循環左移,這些移位后的值作為下一輪的輸入,同時 也作為置換選擇pc-2 (表3.1)的輸入,通過pc-2產生一個48位的輸出,即為 一個子密鑰。表3.0置換選擇pc-114171124153281562110231912426816
35、7220132415231374755304051453348444939563453464250362932141711241532815621102319124268167220132415231374755304051453348444939563453464250362932表3. 2左移調度循環序號12 34 5 6 78 91011 1213 1415 16轉動比特數11 22 2 2 22 122 22 22 1其中,每一輪唯一的密鑰位數不同,若輪數為1、2、9、16,只移一位,否則 移兩位。置換pc-2是一個壓縮置換,它將56位密鑰數據壓縮成48位的子密鑰。 壓縮方法是將c中的
36、第9、18、22、25位和i)中的7、9、15、26位刪去,同時, 將其余位置換位置次序,從而得到48位子密鑰。第三章aes加密算法3.1 aes的產生背景隨著計算能力的突飛猛進,已經超期“服役”若干年的des算法終于顯得力 不從心,1999年,美國國家標準與技術研究所(nist)對des的安全強度進行重 新評估并指出,des已經不足以保證信息安全,因此決定撤銷相關標準。1997年, nist發起公開征集高級加密標準(aes)算法的活動,目的是為了確定一個安全性 能更好的分組密碼算法用于取代desoaes的基木要求是安全性能不低于三重des, 執行性能比三重des塊。除此之外,nist特別提出
37、了高級加密標準必須是分組長 度為128位的對稱分組密碼,并能支持長度128位,192位,256位的密鑰。此外, 如果算法被選屮的話,在世界范圍內它必須是可以免費獲得的。經過一輪海選之 后,1998年8月20 h, n1st公布了滿足耍求的15個aes算法草案。1999年3 月22日,nist公布了第一階段的分析和測試結果,并從15個算法屮選出了 5個 作為aes候選算法。2000年10月2日,nist宣布aes的最終評選結果,比利時 密碼學家joan daemen和vincent ri jmen提出的“ri jndael數據加密算法"最終 獲勝,修改的rijndael算法最終成為高級
38、加密標準aes°2001年11刀26 h,nist 正式公布高級加密標準aes,并于2002年5月26日正式生效。3. 2 aes的基本結構在原始的rijndael算法中,分組長度和密鑰長度均能被獨立指定為128位, 192位或者256位。在高級加密標準規范中,分組長度只能是128位,密鑰的長度 可以使用三者中的任意一種。密鑰長度不同,則加密輪數不同,如表3.1所示。表3. 1 aes密鑰長度和加密輪數列表密鑰長度(32比特字)分組長度(32比特字)加密輪數aes-1284410aes-1926412aes-2568414本文中,所討論的密鑰長度為128位,aes的迭代輪數為10輪。
39、aes的處理單位是字節,128位的輸入明文分組p和輸入密鑰k都被分成16 個字節,分別記為p=poh-p15和k二kokykz 般的,明文分組用以字節為單位的 正方形矩陣描述,稱為狀態(state)舉證。在算法的每一輪中,狀態矩陣的內容 不斷發生變化,最后的結果作為密文輸hi。該矩陣中字節的排序順序為從上到f, 從左到右依次排列。類似的,128位密鑰也是用以字節為單位的矩陣表示,矩陣的每一列被稱為1 個32bit的字。通過密鑰編排程序該密鑰矩陣被擴展成一個44個字組成的序列w 0, w 1 ,.w43,該序列的前四個元素w0, wl, w2, w3是原始密鑰,用于加 密運算中的初始密鑰加;后4
40、0個字分別為10組,每組4個字(128bit)分別用 于10輪加密運算中的輪密鑰加;aes結構如圖3. 1所示,其加密的第一輪到第九輪的輪函數一樣,包括4個操 作:字節代換,行位移,列混合和輪密鑰加密。最后一輪迭代不執行列混合。另 外,在第一輪迭代z前,先將明文和原始密鑰進行一次加密操作。圖3. 1 aes的加密解密輸入128位數據/128位密文數據與擴展密鑰的異或運算與擴展密鑰的異或運算王s盒變換逆行變換行變換逆s盒變換*列變換與擴展密鑰的異或運算與擴展密鑰的異或運算逆列變換+ + >1s盒變換逆行變換行變換逆列變換與擴展密鑰的異或與擴展密鑰的異或與des不同的是,aes的解密過程和加
41、密過程并不一致。這是因為aes并未使 用feistel結構,在每一輪操作時,對整個分組進行處理,而不是只對一般分組 進行處理。解密過程仍然為10輪,每一輪的操作都是加密操作的逆操作。由taes 的四個輪操作(字節代換,行位移,列混合和輪密鑰加)都是可逆的,因而,解 密操作的一輪就是順序執行逆行位移,逆字節代換、輪密鑰加和列混合。同加密 操作類似,最后一輪不執行逆列混合,在第1輪解密之前,要執行1次輪密鑰加 操作。之所以加密和解密分別由輪密鑰開始和結束,是因為只有輪密鑰加階段使用 了密鑰。如果將其他操作用于算法的開始或者結束階段,在不知道密鑰的情況下 就能計算其逆,這不能增加算法的安全性。3.
42、3 aes加密3. 3.1字節代換字節代換操作:aes的字節代換可以簡化成一個簡單地查表操作。aes定義了 一個s盒(表3. 2)和一個逆s盒(表3.3) , s盒用于加密查表,逆s盒用于解 密查表,他們都是由16*16字節組成的矩陣,即矩陣共有256個元素,侮元素的 內容是一個1個字節(8bit)的值,且每元素各不相同。表3. 2 aes的s盒0123456789abcdef0637c777bf26b6fc53001672bfed7ab761ca82c97dfa5947f0add4a2af9ca472co2b7fd9326363ff7cc34a5e5fl71d83115304c723c318
43、96059a071280e2eb27b275409832c1aib6e5aa0523bd6b329e32f84553di00ed20fcbl5b6acbbe394a4c58cf6doefaafb434d338545f9027f503c9fa8751a3408f929d38f5bcb6da2110fff3d28cdoc13ec5f974417c4a77e3d645d1973960814fdc222a908846eeb814de5e0bdbae0323a0a4906245cc2d3ac629195e479be7c8376d8dd54ea96c56f4ea657aae08cba78252e1ca6b
44、4c6e8dd74if4bbd8b8ad703eb5664803f60e613557b986clid9eeelf8981169d98e949bie87e9ce5528dff8cal890dbfe6426841992dofb054bb16狀態矩陣中的元素按照下面的方式映射成為一個新的字節:把該字節的髙四 位作為行值,低四位作為列值。去除s盒或者逆s盒中對應行列的元素作為輸出。字節代換逆操作:逆s盒的構造如下:(1)初始化逆s盒,將第h1行n列的元素初始化為oxmn.(2)將逆s盒中的一個元素按位記為(如他儂角色色®。)。(3)將逆s盒屮的每個字節映射為它在有限域gf(28)中的逆。s盒
45、的設計非常精巧,能夠防止已有的各種密碼分析攻擊。rijndael的開發 者特別尋求在輸入為和輸出位z間兒乎沒有相關性的設計,且輸出值不能通過利 用一個簡單地數學函數變換輸入值所得到的。表3. 3 aes的逆s盒0123456789abcdef052096ad53036a538bf40a39e81f3d7fb17ce339829b3fff87348e4344c4dee9cb2547b9432a6c2233dee4c950b42fac34e3082eal6628d924b2765ba2496d8bdi25472f8f66486689816d4a45ccc5d65b69256c704850fdedb
46、9da5e154657a78d9d84690d8ab008cbcd30af7e45805b8b345067do2cie8fca3fof02clafbd0301138a6b83a9111114f67dcea97f2cfcef0b4e673996ac7422e7ad3585e2f937e81c75df6ea47fl1a71id29c5896fb7620eaa18beibbfc563e4bc6d279209adbcofe78cd5af4cifdda8338807c731bl1210592780ec5fd60517fa919b54a01)2de57a9f93c99cefeaoe03b4dae2af5b
47、0c8ebbb3c83539961f172b047eba77d626el6914635521oc7d3. 3. 2行移位行移位操作:這是一個簡單地做循環移位操作。當密鑰長度為128bit時,狀 態矩陣的第0行左移0字節,第一行左移1字節,第二行左移2字節,第三行左 移3字節,這種操作使得列完全進行了重排,即在移位后的每列屮,都包含有未 移位前每列的一個字節。行移位逆變換:行移位逆變換是將狀態矩陣的每一行執行相反的位移操作, 例如aes-128中,狀態矩陣的第0行右移0字節,第一行右移1字節,第二行右 移2字節,第三行右移3字節。行位移雖然簡單,但是相當有用。由于s矩陣和算法的輸入輸出數據一樣,
48、 也是由4列所組成的矩陣,在加密過程屮,明文逐列被復制到s炬陣上,月.后面 的輪密鑰也是逐列應用到s矩陣上的,因此,行位移將某個字節從一列移動到另 一列中,這個圖變換確保了某列中的4字節被擴展到4個不同的列。輪密鑰也是 逐列應用到s矩陣上的,因此,行移位就是將某個字節從一列移動到另一列中, 它的線性距離是4字節(1個字)的倍數,同時這個轉換確保了某列屮的4字節被 擴展到了4個不同的列。3. 3. 3列混合列混合變換時通過矩陣相乘實現的,經行位移后的狀態矩陣與固定的矩陣相乘,得到混淆后的狀態矩陣,如式(1)所示。02()1()1030302()1010103020103(1)原來的 sq c,
49、si c, s2 c, s3 c 分別變成 $ 0 c, s c, s 2,c,s 3,c,其中$ 0,c =( 02 x)(03 j© 52c $3 c=孤(02x仏)(03x®丿仏$ 2,廣 仏昭(02 x %)(03 x s)s3.c 二(03 x)幾仏(02 x s3c)這里為按位異或運算,其屮的乘法x按照下而介紹的模乘同余規則進行計 算。列變換中要用到的模乘同余規則和我們一般用到的乘法有些不同,由丁每一 個元素都是一個字節,于是可把這個字節看成一個形式上的七次多項式,即將 b-jb6b5b4b3b3bb(視 為z?7x7 + h6x6 + b5x5 + b4x4 + b3x3 + b2x2 +, 10110012=f/9i6可以被看成是x7+x6+x4+? + l o列變換希望把一個字節變換 為一個新的字節,所以需要把兩個形式上的七次多項式的乘法結果變為一個新的 形式上的七次多項式,然后才能將其恢復為一個字節的長度。這里采用模一個八次
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高二入學考試數學試卷
- 阜寧縣初三一模數學試卷
- 定州七年級月考數學試卷
- 榮耀60的培訓課件
- 院感物業培訓課件
- 2025至2030刺繡行業市場深度研究及發展前景投資可行性分析報告
- 西咸新區公共衛生管理中心考試真題2024
- 2024年上海工藝美術職業學院招聘筆試真題
- 更難做的高三數學試卷
- 佛山六年級初中數學試卷
- 殯葬禮儀策劃方案
- 行政效能提升路徑研究
- 2021部編版語文必修下冊理解性默寫匯編 (打印)
- (完整版)無菌醫療器械耗材生產企業體系文件-質量手冊模板
- JBT 3300-2024 平衡重式叉車 整機試驗方法(正式版)
- 鉆井及井下作業井噴事故典型案例
- 城軌行車組織實訓總結報告
- 宣傳視頻拍攝服務投標技術方案技術標
- 2023-2024屆高考語文復習小說訓練-沈從文《邊城》(含答案)
- CSR法律法規及其他要求清單(RBA)2024.3
- 二年級100以內加減法混合運算題庫
評論
0/150
提交評論