甘志超
(中國(guó)刑事警察學(xué)院 公安信息技術(shù)與情報(bào)學(xué)院,遼寧 沈陽(yáng) 110168)
近年來(lái),科技的飛速發(fā)展極大地改變了人們的生產(chǎn)和生活方式,也使我們個(gè)人或集體的信息越來(lái)越公開化。幾乎生活中的每一個(gè)環(huán)節(jié)都面臨著信息數(shù)據(jù)安全性的重大挑戰(zhàn),在確保信息數(shù)據(jù)安全這一要求不斷提高的背景下,對(duì)信息數(shù)據(jù)進(jìn)行加密和解密的技術(shù)及算法正在迅猛發(fā)展。
加密的實(shí)現(xiàn)可以通過(guò)不同的方式來(lái)完成,硬件和軟件皆可實(shí)現(xiàn)加密算法,而通過(guò)硬件來(lái)實(shí)現(xiàn)加密同樣能夠保證信息的處理速度和安全性。基于FPGA 平臺(tái)的AES 加密算法的實(shí)現(xiàn)得益于FPGA 具有消耗內(nèi)存空間小、方便靈活、可重新配置資源等特點(diǎn),通過(guò)算法可以實(shí)現(xiàn)加密,通過(guò)硬件亦可實(shí)現(xiàn)加密,并且相較于基于軟件的AES 加密算法實(shí)現(xiàn),基于硬件的AES加密算法實(shí)現(xiàn)也不失為一種可行且高效的方式。
本AES 加密算法的設(shè)計(jì)采用FPGA 黑金ALINX 開發(fā)板,使用ModelSim-SE 64-10.1c 軟件對(duì)該系統(tǒng)的頂層模塊進(jìn)行了RTL 功能仿真,得到了功能波形圖以驗(yàn)證其正確性,利用Quartus II 17.1 軟件對(duì)整個(gè)系統(tǒng)進(jìn)行邏輯綜合后將sof 文件下載到FPGA 開發(fā)板上,并使用串口調(diào)試助手通過(guò)串口通信實(shí)現(xiàn)該系統(tǒng)的功能,通過(guò)將PC 串口調(diào)試助手顯示屏上顯示的數(shù)據(jù)與測(cè)試數(shù)據(jù)做比較,以此來(lái)驗(yàn)證該系統(tǒng)設(shè)計(jì)的可行性。
當(dāng)前,對(duì)AES 算法的研究主要體現(xiàn)在對(duì)其安全性、靈活性、高效性這三方面的研究。
自Rijndael 算法提出以來(lái),世界各國(guó)為數(shù)眾多的密碼機(jī)構(gòu)和專家便對(duì)其展開持續(xù)不斷的猛烈攻擊,其中,最著名的當(dāng)屬該算法設(shè)計(jì)者(比利時(shí)密碼專家Vincent Rijmen 和Joan Daemen)所提出的Square 攻擊。但是,對(duì)Rijndael 算法的攻擊截至目前都沒有成功。
早在AES 加密算法還未著手設(shè)計(jì)的時(shí)候,方便靈活、安全可靠便已被設(shè)定為其設(shè)計(jì)的基礎(chǔ)與目標(biāo),最后結(jié)果也證明,Rijndael算法在通用處理器上能夠?qū)崿F(xiàn)很好的性能。但是,后面的研究漸漸表明,AES 算法在FPGA 上能夠獲得更加優(yōu)越的性能。
在熟悉開發(fā)環(huán)境之后,開始構(gòu)思系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),采用Verilog 硬件描述語(yǔ)言結(jié)合邏輯電路的方式完成系統(tǒng)構(gòu)建。在完成系統(tǒng)的構(gòu)建之后,運(yùn)用ModelSim SE-64 10.1c 仿真對(duì)其核心的加密功能進(jìn)行仿真,對(duì)波形進(jìn)行驗(yàn)證之后,我們運(yùn)用Quartus II 17.1 軟件對(duì)工程代碼進(jìn)行編譯和邏輯綜合,再將生成的.sof 文件下載到FPGA 開發(fā)板上,通過(guò)串口調(diào)試助手對(duì)其進(jìn)行功能驗(yàn)證。
密鑰和明文的位數(shù)不同,AES 加密算法迭代的輪數(shù)也不同。本文采用128 比特的加密方案,下文將具體介紹128 位的AES 加密算法,最后的實(shí)現(xiàn)結(jié)果是輸入128 b 的密鑰和明文,一共經(jīng)歷10 輪的迭代加密計(jì)算,輸出經(jīng)過(guò)加密的128 bit 密文。
AES 加密的過(guò)程包括加密核(包括各種轉(zhuǎn)換)和密鑰擴(kuò)展過(guò)程,加密核的各種轉(zhuǎn)換計(jì)算包含S 盒變換、行變換、列變換和密鑰異或的變換過(guò)程,在128 比特的AES 加密過(guò)程中一共需要經(jīng)過(guò)10 輪的循環(huán),下一輪的循環(huán)則是在上一輪循環(huán)的基礎(chǔ)上進(jìn)行迭代。循環(huán)往復(fù)地對(duì)上一輪的輸出進(jìn)行字節(jié)替換(采用一個(gè)S 盒進(jìn)行替換)、行移位變換、列混合變換以及密鑰異或等變換,以產(chǎn)生本輪的輸出。密鑰擴(kuò)展過(guò)程為每一輪的輪變換供給變換所需的128 比特輪密鑰。128 比特的AES 加密算法進(jìn)行一次完整的計(jì)算需要經(jīng)過(guò)10 輪的變換,最終產(chǎn)生我們所需的密文。AES 加密算法的流程如圖1所示。

圖1 算法流程圖
該算法的字節(jié)替換用一個(gè)S 盒的變換來(lái)表示,128 比特的AES 加密算法需要將明文排列組合成一個(gè)4×4 的矩陣。AES 加密算法的字節(jié)替換是用一個(gè)S 盒實(shí)現(xiàn)的,其變換過(guò)程就是一個(gè)4×4 的矩陣經(jīng)過(guò)字節(jié)替換(S 盒變換)之后產(chǎn)生一個(gè)新的4×4 矩陣。其本質(zhì)是實(shí)現(xiàn)一個(gè)數(shù)學(xué)上的代數(shù)轉(zhuǎn)化。S 盒的原理是:S 盒是一個(gè)16×16 的矩陣,用明文所生成矩陣的每一個(gè)元素來(lái)指定S 盒的地址,一個(gè)字節(jié)是八位長(zhǎng)度的二進(jìn)制,S 盒的行用一個(gè)字節(jié)的前四位表示,列用一個(gè)字節(jié)的后四位表示(一個(gè)字節(jié)有8 個(gè)數(shù)據(jù)位),將四位數(shù)據(jù)所代表的十六進(jìn)制數(shù)據(jù)作為S 盒元素的行列具體所在位置,由行和列構(gòu)成S 盒位置的元素取代了原明文生成的矩陣中相應(yīng)位置上的元素。本設(shè)計(jì)采用組合邏輯電路的方式來(lái)實(shí)現(xiàn)S 盒變換,并采用16 個(gè)S 盒變換函數(shù)對(duì)字節(jié)替換進(jìn)行并行操作。
在進(jìn)行完S 盒變換操作之后,接下來(lái)的操作便是行移位變換。具體的操作就是:對(duì)于一個(gè)經(jīng)過(guò)S 盒變換操作之后的4×4 矩陣來(lái)說(shuō),首行的數(shù)據(jù)保持不動(dòng),對(duì)次行的數(shù)據(jù)整體向左移動(dòng)一位,將第三行的數(shù)據(jù)整體向左移動(dòng)兩位,將第四行(最后一行)的數(shù)據(jù)整體向左移動(dòng)三位。例如進(jìn)行行移位操作之前矩陣的第四行為(1,2,3,4),移動(dòng)三位之后的數(shù)據(jù)為(2,3,4,1)。
完成行移位變換之后需要進(jìn)行列混合變換,具體的操作就是以矩陣中的列為單位與固定的矩陣(用十六進(jìn)制表示)相乘,具體的變換為:

用數(shù)學(xué)的多項(xiàng)式表示是:()=‘03'+‘01'+ ‘01'+‘02'
經(jīng)過(guò)列混合變換之后,矩陣中的所有字節(jié)基本上都得到了充分的混合。列混合變換通過(guò)組合邏輯中的移位與異或的操作來(lái)實(shí)現(xiàn),同時(shí)加強(qiáng)了加密的安全性。
本設(shè)計(jì)采用的是基于FPGA 的128 比特AES 加密算法,可以同時(shí)對(duì)多個(gè)數(shù)據(jù)塊進(jìn)行計(jì)算,一個(gè)時(shí)鐘周期只完成一輪加密,該設(shè)計(jì)總共需要1 輪的初始密鑰擴(kuò)展、10 輪的運(yùn)算和另外一個(gè)時(shí)鐘周期輸出最后得到的密文,由于采用的是內(nèi)部流水線結(jié)構(gòu),所以一個(gè)完整的AES 加密過(guò)程所需的時(shí)鐘周期更長(zhǎng),總共需要12個(gè)時(shí)鐘周期(從開始到最后輸出密文),我們可以通過(guò)提高時(shí)鐘頻率的方式來(lái)彌補(bǔ)現(xiàn)階段的不足。
本文設(shè)計(jì)的AES 加密系統(tǒng)包括以下兩個(gè)模塊:
(1)串口通信輸入模塊。通過(guò)串口通信接收PC 端輸入的128 位密鑰和明文,并對(duì)所接收的128 位數(shù)據(jù)進(jìn)行串行數(shù)據(jù)向并行數(shù)據(jù)的轉(zhuǎn)換。
(2)AES 加密模塊。該模塊的功能是實(shí)現(xiàn)密鑰的擴(kuò)展過(guò)程和加密運(yùn)算。
(3)串口通信輸出模塊。用于暫存加密單元產(chǎn)生的密文,進(jìn)行并行數(shù)據(jù)向串行數(shù)據(jù)的轉(zhuǎn)換并通過(guò)串口通信傳輸?shù)絇C 端。
AES 加密系統(tǒng)RTL 邏輯模塊結(jié)構(gòu)圖如圖2所示。

圖2 AES 加密系統(tǒng)RTL 邏輯模塊結(jié)構(gòu)圖
頂層模塊輸入輸出端口的定義如表1所示。

表1 輸入輸出端定義
該系統(tǒng)功能實(shí)現(xiàn)的過(guò)程為:定義好時(shí)鐘、復(fù)位、控制信號(hào),運(yùn)用串口調(diào)試工具通過(guò)串口通信在電腦PC 端口輸入128 位待加密的明文和初始密鑰,設(shè)計(jì)了一個(gè)標(biāo)志信號(hào)表示輸入完成的狀態(tài),標(biāo)志信號(hào)有效時(shí),串口通信輸入模塊讀取電腦PC 端傳送過(guò)來(lái)的明文和初始密鑰,AES 加密核模塊開始進(jìn)行密鑰擴(kuò)展和加密的工作,經(jīng)過(guò)10 輪循環(huán)(一個(gè)完整的循環(huán)變換)完成加密之后,經(jīng)過(guò)加密的密文數(shù)據(jù)將通過(guò)串口通信輸出模塊(通過(guò)串口通信)返回到電腦PC 端上的串口調(diào)試工具進(jìn)行顯示。整個(gè)設(shè)計(jì)的核心便是AES 加密核的設(shè)計(jì),同時(shí)FPGA 與PC 的串口通信也是整個(gè)設(shè)計(jì)中至關(guān)重要的一部分,決定著數(shù)據(jù)在PC 與FPGA 之間能否正常通信。
該系統(tǒng)設(shè)計(jì)的算法代碼分為頂層模塊和子模塊,頂層模塊為整個(gè)系統(tǒng)的架構(gòu),子模塊為實(shí)現(xiàn)各個(gè)分支功能的模塊,AES 加密系統(tǒng)頂層模塊代碼程序存放于AES_top,串口通信輸入模塊代碼程序存放于UART_RX,串口通信輸出模塊代碼程序存放于UART_TX,加密核模塊存放于aes_cipher_top,加密模塊調(diào)用了S 盒變換、列異或變換和密鑰擴(kuò)展等子模塊,被調(diào)用的各種變換的代碼程序另外儲(chǔ)存。
在進(jìn)行加密模塊功能仿真的時(shí)候,采用的測(cè)試數(shù)據(jù)為:明文為9798c4640bad75c7c3227db910174e72;密鑰為00000 000000000000000000000000000;輸出的密文為a9a1631bf49 96954ebc093957b234589。(該數(shù)據(jù)由AES 高級(jí)加密標(biāo)準(zhǔn)的資料所提供)
AES 系統(tǒng)加密核的功能仿真波形如圖3所示。

圖3 加密核的功能仿真波形圖
得到輸出結(jié)果之后,為了驗(yàn)證輸出結(jié)果的正確性,我們需要獲取經(jīng)過(guò)AES 加密計(jì)算出的數(shù)據(jù),于是采用AES 加密的軟件Rijindael.exe 得到所需的數(shù)據(jù)進(jìn)行數(shù)據(jù)比對(duì),以驗(yàn)證本文設(shè)計(jì)算法的正確性與可行性,如圖4所示。

圖4 實(shí)測(cè)數(shù)據(jù)驗(yàn)證圖
通過(guò)對(duì)比輸出結(jié)果和測(cè)試數(shù)據(jù),得出所設(shè)計(jì)的AES 加密系統(tǒng)得出的數(shù)據(jù)與測(cè)試數(shù)據(jù)相一致,基于FPGA 的AES加密算法的功能實(shí)現(xiàn)準(zhǔn)確無(wú)誤。
本文主要介紹了基于FPGA 平臺(tái)的AES 加密算法的實(shí)現(xiàn),運(yùn)用Verilog 硬件描述語(yǔ)言結(jié)合邏輯電路的方式來(lái)完成系統(tǒng)構(gòu)建。信息技術(shù)的進(jìn)步和發(fā)展超乎人們的想象,而信息的安全性和秘密性自然也受到人們的高度重視,應(yīng)用范圍不僅僅局限于民生領(lǐng)域,更與國(guó)家的政治、經(jīng)濟(jì)和軍事安全聯(lián)系緊密。而對(duì)于信息加密,自20世紀(jì)以來(lái)諸多學(xué)者已經(jīng)提出不少加密方法,AES 加密算法一直以來(lái)都表現(xiàn)突出,受到反復(fù)的攻擊仍然屹立不倒。AES 加密算法的實(shí)際應(yīng)用場(chǎng)景十分廣闊,為信息安全提供了重大保障,為信息安全的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。