国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AES加密算法的FPGA優(yōu)化設計

2021-02-28 06:49:46湖南工學院電氣與信息工程學院
電子世界 2021年22期
關鍵詞:明文密文解密

湖南工學院電氣與信息工程學院 陳 超

高級加密標準AES(Advanced Encryption Standard)算法由于其安全性高的優(yōu)勢而應用廣泛,再結合FPGA的優(yōu)勢可實現加密速度快,開發(fā)周期短且可通用性強的AES加密算法。多輪加密的每一輪采用復用的方式以節(jié)省資源,且通過狀態(tài)機控制加密過程。最后結合FPGA綜合仿真,資源消耗為9643,最高工作頻率為126.34MHz。

隨著通信技術及計算機的發(fā)展,人們有越來越多的信息需要通過通信設備來傳輸與交換,用戶對于數據傳輸的安全性越來越重視,因此需要對數據進行加密傳輸來保證數據的安全性。而AES以其速度快、設計簡單、安全性高、易維護等優(yōu)點在郵件加密、數字簽名、文檔加密中廣泛應用。

AES算法是2001年由NIST(美國國家標準技術研究所)為取代DES而發(fā)布的新一代數據高級加密標準。AES-128算法的密鑰比DES-56的密鑰在破解的時間花費上強1021倍。如果加解密采用同樣的密鑰會導致降低安全性。為了保證安全性,設計加解密密鑰可采用相關且不同的密鑰,即把加密模式的密鑰擴展模塊的最后一輪子密鑰作為解密模式密鑰的初始密鑰,這樣就可以強化通信安全性,保密性以及出色的抗攻擊性。

1 AES算法原理

1.1 AES的算法描述

AES算法是一種對稱密碼,且是屬于其中的一種分組密碼,其原理采用的是迭代分組密碼算法,它由輪變換函數經過數次迭代變換而成。AES加密可用如下加密公式表示。

其中E表示加密函數,K表示密鑰,P表示明文,C表示密文。

AES的密鑰長度可分為128bit,192bit和256bit,而分組長度固定為128bit。除了輪數,這三種的加密過程相同。每種長度對應的變換輪數的關系如表1所示。

表1 AES算法的分組,密鑰及輪數關系

1.2 AES的加密過程

把加密數據排列成以字節(jié)為單位元素的4×4狀態(tài)矩陣,該矩陣中字節(jié)的排列順序為從上到下,從左至右。加密的第一個步驟是待加密的明文與初始密鑰異或(輪密鑰加),然后根據表1的密鑰長度進行對應的多輪變換。每一輪包含字節(jié)替換,行移位,列混淆,輪密鑰加四個過程。其中最后一輪需跳過列混淆。

AES解密是加密的逆過程,文中不再詳細闡述。圖1所示是AES加解密過程的結構圖。

圖1 AES加解密執(zhí)行過程

2 AES加密算法的硬件設計及模塊分析

2.1 AES實現的整體結構

由于大部分應用采用AES-128,文中采用128bit來設計,其整體實現結構框圖如圖2所示,該設計的加密與解密是同一個模塊,通過mode輸入信號來控制加解密模式。該框架主要由加/解密模塊(Encrypt/Decrypt)、密鑰擴展模塊(key_exp)、字節(jié)替換模塊(s_box)組成。其中加/解密模塊功能主要由狀態(tài)機控制,完成與字節(jié)替換/逆替換模塊的數據交互、行移位、列混淆運算、輪密鑰加以及對密鑰擴展模塊的控制。設計中為了節(jié)省I/O資源,128bit數據和128bit初始密鑰由32bit的data_in依次輸入,并通過k_or_d信號來區(qū)分數據輸入還是密鑰輸入。輸入start信號為高表示輸入有效。同樣,輸出端亦為128bit密文由32bit端口依次輸出。加密數據流向為接收數據后由加/解密模塊配合其他模塊進行10輪迭代變換,最后一輪密鑰異或輸出即為密文。解密過程與其相同,把密文以相同的步驟作為數據輸入,同時設置mode=0,輸出即為明文。

圖2 設計實現框圖

2.2 密鑰擴展模塊

AES采用的是密碼密鑰,不能在每一輪都是中相同的密鑰,需要根據初始密鑰去擴展獲得每一輪需要的密鑰。十輪密鑰擴展得到總長度為W*Nb(Nr+1),其中W為密鑰矩陣每列的位數,Nb分組長度為4,Nr指加密輪數。矩陣的每一列密鑰元素可用Wi表示,其中i的所在范圍為0 ≤i<Nb(Nr+1)。擴展子密鑰可由初始密鑰生成。

當i能被4整除:

當i不能被4整除:

其中:函數g()由三部分組成:字循環(huán)、字節(jié)替換和輪常量異或(函數g()可以增加密鑰拓展中的非線性,并且破壞AES算法的對稱性)。

(1)字循環(huán):密鑰W[i]中的4個字節(jié)循環(huán)左移一個字節(jié)。例如輸入[a0,a1,a2,a3]變換后為[a1,a2,a3,a0]。

(2)字節(jié)替換:將第一步的結果使用S盒進行字節(jié)代換,與加密過程字節(jié)替換步驟相同。

(3)輪常量異或:將第二步的結果與輪常量Rcon[j]異或,j表示輪數。Rcon用查找表實現,輪計數器kcnt作為查找地址。

2.3 字節(jié)替換與行移位模塊

字節(jié)替換是數據4×4狀態(tài)矩陣中,每個字節(jié)元素的高四位為S盒的行地址,低四位為列地址,用尋址后的值替換狀態(tài)矩陣的值。逆字節(jié)替換同理,只是需要查找逆S盒的行列地址即可。設計中采用查找表的方式進行字節(jié)替換與逆字節(jié)替換操作。以下為4×4狀態(tài)矩陣的排列順序。

行移位是4×4狀態(tài)矩陣的行循環(huán)移位,第一行不變,第二行左移一個字節(jié),第二行左移兩個字節(jié),第三行左移三個字節(jié)。逆行移位為行移位反向操作,即向右循環(huán)移位即可。

2.4 列混淆與輪密鑰加模塊

列混淆運算為位元變換,根據GF(28)有限域運算規(guī)則,即將狀態(tài)矩陣左乘混淆矩陣,結果就是列混淆后的值。而逆列混淆運算就是狀態(tài)矩陣左乘逆混淆矩陣。設計中的列混淆與逆列混淆采用函數的方法進行運算,一個時鐘周期出結果。部分代碼如下:

輪密鑰加易于實現,只需狀態(tài)矩陣與密鑰矩陣相同的位置進行異或運算后,得到的就是下一輪迭代變換的起始狀態(tài)矩陣。

3 AES算法的仿真與實現

3.1 AES算法仿真結果及分析

設計采用Verilog HDL對AES算法進行設計以及驗證。在十輪迭代加密、解密運算后,得到的加密與解密結果分別如圖3、圖4所示。

圖3 AES加密數據仿真

圖4 AES解密數據仿真

表2、表3分別對應圖3、圖4的加密和解密實例結果表。由實例數據測試結果可知,文中的AES算法設計在mode=1的加密模式下,輸入表2中的明文以及密鑰,可得到表2中的密文(如圖3所示);然后用密文作為輸入在mode=0的解密模式下,輸入表3中的密文以及密鑰,可得到表3中的明文(如圖4所示)。實驗表明解密后的明文與加密前的明文相同。同時測試也用了多組數據進行了設計驗證,均證明了文中的設計可以對數據進行正確的加密得到密文,密文也可以反過來解密出明文。

表2 AES測試加密數據實例

表3 AES測試解密數據實例

3.2 性能分析

文中設計軟件基于Quartus Ⅱ13.1,仿真軟件為ModelSim 10.1d,芯片為Cyclone Ⅳ系列EP4CE10E22C8進行驗證,最終設計綜合出來可實現工作頻率最高為126.34MHz,邏輯資源消耗為9643。再通過對比占用的邏輯單元數,可將中文設計與其他文獻的方案做比較可得到表4,可說明本方案較其他方案相比,運行速度更快,吞吐量更高;但同時占用邏輯單元數在對比中處于適中位置,不占很大優(yōu)勢,這是用面積換取速度的結果導致。

表4 設計與其他文獻方案對比

文中分析了AES算法的原理以及設計的實現方案,實現的關鍵在于狀態(tài)機的控制;再通過劃分各個模塊來分析每個模塊的實現方法;最后實例測試采用文中的方案而實現的設計模塊以及設計的性能分析。結果表明該設計方案能滿足設計要求。

猜你喜歡
明文密文解密
解密“熱脹冷縮”
一種針對格基后量子密碼的能量側信道分析框架
一種支持動態(tài)更新的可排名密文搜索方案
基于模糊數學的通信網絡密文信息差錯恢復
解密“一包三改”
少先隊活動(2020年9期)2020-12-17 06:17:31
炫詞解密
奇怪的處罰
奇怪的處罰
四部委明文反對垃圾焚燒低價競爭
黄龙县| 县级市| 沙湾县| 襄垣县| 寿阳县| 大荔县| 东源县| 铁岭县| 兰州市| 开鲁县| 鄢陵县| 晋宁县| 麦盖提县| 肥东县| 浙江省| 西平县| 城口县| 南岸区| 龙里县| 仁化县| 永定县| 兴城市| 黄大仙区| 岚皋县| 东源县| 利川市| 太原市| 弥勒县| 东海县| 天等县| 高平市| 许昌市| 江城| 嘉兴市| 隆安县| 渭源县| 辽阳市| 北安市| 如皋市| 财经| 江川县|