摘?要:通過分析高級(jí)加密標(biāo)準(zhǔn)(AES)算法的原理及其優(yōu)越性,結(jié)合FPGA高度處理的特點(diǎn),提出一種基于FPGA的AES加密算法實(shí)現(xiàn)方案。采用了查找表方法優(yōu)化了字節(jié)替代變換、列混合變換和密鑰擴(kuò)展模塊,將設(shè)計(jì)的固核運(yùn)行在Altera公司的Cyclone?II?FPGA芯片上,利用2塊DE2硬件板和2臺(tái)計(jì)算機(jī)搭建了一個(gè)AES加密文件傳輸平臺(tái),最后分析了設(shè)計(jì)的器件資源消耗和吞吐率,驗(yàn)證設(shè)計(jì)方案的可行性。
關(guān)鍵詞:FPGA;查找表;AES;Verilog?HDL
當(dāng)前信息技術(shù)快速發(fā)展,用戶對(duì)信息的采集、存儲(chǔ)和傳輸?shù)陌踩阅芤仓饾u提升要求。利用數(shù)據(jù)加密算法,對(duì)數(shù)據(jù)進(jìn)行加密來保障信息傳輸與存儲(chǔ)的安全性則是有效地解決方法,而高級(jí)加密標(biāo)準(zhǔn)AES則是很好選擇[1]。本文給出的設(shè)計(jì)方案主要包括:系統(tǒng)整體結(jié)構(gòu)、AES加解密模塊、控制模塊等部分。
1?AES加密算法原理
AES加密過程是在一個(gè)4x4的位元組矩陣上,此矩陣是一個(gè)明文分組區(qū)塊。其中128位(bit)明文分為4列。密鑰的長(zhǎng)度包括:128、196以及256位。矩陣列數(shù)包括:4、6以及8列。AES算法為密鑰迭代分組算法,包含輪函數(shù)對(duì)state的重復(fù)作用。輪數(shù)大小取決于密鑰長(zhǎng)度[2]。
AES解密過程和加密過程互為逆運(yùn)算,解密過程主要包含四個(gè)方面:逆行移位、逆字節(jié)替換、輪密鑰加以及逆列混合。AES加密需要Nb個(gè)字節(jié)的初始密鑰及Nr輪迭代過程所需輪密鑰,所以密鑰生成算法需將初始密鑰擴(kuò)展為Nb(Nr+1)個(gè)字。
2?AES加密算法建模與設(shè)計(jì)
系統(tǒng)整體結(jié)構(gòu)主要包括:接口模塊、AES加解密模塊、串并轉(zhuǎn)換和并串轉(zhuǎn)換模塊以及LCD顯示模塊。通過硬件平臺(tái)DE2的開關(guān)來選擇工作模式,LCD顯示屏顯示系統(tǒng)“Mode:Encryption或Decryption”。計(jì)算機(jī)通過串口將數(shù)據(jù)發(fā)送到DE2,接口模塊收到數(shù)據(jù)后送到串并轉(zhuǎn)換模塊,處理后將數(shù)據(jù)發(fā)送到AES加解密模塊,根據(jù)模式選擇將數(shù)據(jù)送到相應(yīng)模塊,完成加密或者加密后將數(shù)據(jù)發(fā)送到并串轉(zhuǎn)換模塊,然后將數(shù)據(jù)發(fā)送到接口模塊完成數(shù)據(jù)加密或解密。
2.1?AES加解密模塊設(shè)計(jì)
AES加解密模塊主要包括:AES加密模塊、AES解密模塊、控制模塊以及密鑰擴(kuò)展模塊。內(nèi)部電路信號(hào)中,clk表示時(shí)鐘輸入信號(hào),rst_n表示復(fù)位信號(hào),mod表示加解密模式選擇信號(hào),kld表示密鑰讀取信號(hào),ld表示明文(或密文)讀取信號(hào)。text[127:0]表示待加密(或解密)輸入數(shù)據(jù),text_out[127:0]表示密文(明文)輸出數(shù)據(jù)。
2.2?控制模塊設(shè)計(jì)
控制模塊外部信號(hào)中,mod開關(guān)量表示系統(tǒng)的工作模式,包括加密模式和解密模式。當(dāng)信號(hào)text_ready有效時(shí),數(shù)據(jù)text[127:0]發(fā)送到text_in,并且分別將信號(hào)Encryption_ld和信號(hào)Decryption_kld置為有效,并維持一個(gè)時(shí)鐘周期時(shí)間。
3?AES加密算法的仿真與實(shí)現(xiàn)
加密模塊、解密模塊仿真結(jié)果如右圖所示,加密模塊:要求輸入的明文和密鑰都是128位。當(dāng)采樣到ld有效時(shí),讀取明文和密鑰;按要求進(jìn)行加密,加密后done置為有效,輸出密文,仿真結(jié)果如下:
明文:a3d46f8789dcb90ca7e85c6f9a3c47d0;
密鑰為:863b0e86023ed67725316481f55f71c;
輸出密文:cde94dac0346551ac0642bc765ec3715。
加密、解密模塊仿真結(jié)果圖
解密模塊:要求輸入的密文和密鑰都是128位。當(dāng)采樣到kld有效,讀取密鑰;當(dāng)采樣到ld有效時(shí),讀取密文;按算法要求進(jìn)行解密,當(dāng)解密完成后done置為有效,輸出明文。
密文為:cde94dac0346551ac0642bc765ec3715;
密鑰為:863b0e86023ed67725316481f55f71c;
則輸出明文:a3d46f8789dcb90ca7e85c6f9a3c47d0。
三組明文、密鑰、加密結(jié)果和解密結(jié)果的硬件測(cè)試結(jié)果如下:
(1)明文:a3d46f8789dcb90ca7e85c6f9a3c47d0;
密鑰:1863b0e86023ed67725316481f55f71c;
加密結(jié)果:cde94dac0346551ac0642bc765ec3715;
解密結(jié)果:a3d46f8789dcb90ca7e85c6f9a3c47d0;
(2)明文:00112233445566778899aabbccddeeff;
密鑰:1863b0e86023ed67725316481f55f71c;
加密結(jié)果:6c52bc02ddc6f0d2b557578cdcc2a40c;
解密結(jié)果:00112233445566778899aabbccddeeff;
(3)明文:d6bc83b3539442fca4ef95fb4cc1b5e0;
密鑰:1863b0e86023ed67725316481f55f71c;
加密結(jié)果:2cb1b53a002dca6bdd1da38d9b6f572d;
解密結(jié)果:d6bc83b3539442fca4ef95fb4cc1b5e0。
4?結(jié)語
本文分析了AES算法工作原理和實(shí)現(xiàn)設(shè)計(jì)方案的關(guān)鍵問題,包括系統(tǒng)整體結(jié)構(gòu)、AES加解密模塊、控制模塊等,整個(gè)設(shè)計(jì)基于QuartusⅡ開發(fā)平臺(tái),采用Verilog硬件描述語言進(jìn)行了仿真和分析,在EP2C35F672C6器件進(jìn)行硬件實(shí)現(xiàn),驗(yàn)證設(shè)計(jì)方案的可行性。該設(shè)計(jì)方案具有一定的擴(kuò)展性,通過修改軟件程序,即可以適應(yīng)密鑰長(zhǎng)度為192和256位的AES加密算法。
參考文獻(xiàn):
[1]劉晗嘉.AES加密算法IP核的設(shè)計(jì)與驗(yàn)證[D].上海:上海交通大學(xué),2009,1.
[2]楊波.現(xiàn)代密碼學(xué)[M].北京:清華大學(xué)出版社,2017(第4版).
作者簡(jiǎn)介:竇賢振(1987-),男,漢族,碩士,研究方向:電子信息工程,物聯(lián)網(wǎng)應(yīng)用技術(shù)。