龔向東,王 佳,張 準,王 坤
(1.深圳大學 電子科學與技術學院,廣東 深圳518060;2.深圳大學 光電工程學院,廣東 深圳518060)
基于FPGA的AES算法硬件實現優化及IP核應用
龔向東1,王 佳2,張 準2,王 坤2
(1.深圳大學 電子科學與技術學院,廣東 深圳518060;2.深圳大學 光電工程學院,廣東 深圳518060)
根據AES算法的特點,從3方面對算法硬件實現進行改進:列混合部分使用查找表代替矩陣變換,降低算法實現的運算復雜度,采用流水線結構優化關鍵路徑-密鑰拓展,提升加密速度,利用FPGA定制RAM (BRAM)預存查找表進一步提升加密速度。優化后的AES算法在Virtex-6 xc6vlx240T(速度等級 -3)FPGA上實現,結果發現,AES算法共占用1 139個Slice,最大頻率達到443.99 MHz,通量達到 56.83 Gbit/s,效率達到 49.89 (Mbit/s)/Slice;然后,對 AES算法進行接口邏輯聲明,將優化后AES算法封裝成自定制IP核;最后,采用基于NIOS II的SOPC技術,構建了一個嵌入式AES算法加密系統,實現了數據通信中的高速加密。
AES;流水線結構;通量;效率;自定制IP核;加密系統
數據加密標準(DES-Data Encryption Standard)[1]是密碼學歷史上第一個廣泛用于商用數據保密的密碼算法,隨著計算機性能的不斷提升,DES的密鑰長度和分組長度顯得過短,易被窮舉攻破。為了更好的保護數據,2001年更安全的數據加密標準 (AESAdvancedEncryptionStandard高級加密標準)正式公布。
AES[2]算法的分組長度為128 bit,密鑰長度支持128、192和256 bit。不同的密鑰長度對應不同的加密輪數,分別為10,12,14輪。如密鑰長度為128位的AES算法需要10輪迭代實現,前9輪迭代過程是一致的,包括字節替換、行移位、列混合、輪密鑰異或,最后一輪包括字節替換、行移位和輪密鑰異或,解密過程則是逆向輪迭代運算。AES算法可以通過硬件或軟件的方法有效的實現。軟件實現消耗較少的資源,獲得有限物理安全保障和慢的加密速度;硬件實現則消耗更多的資源,獲得極大的物理安全和很快的加密速度(達到Gbit/s)。
近些年網絡和通信的快速發展,對通信速度和信息安全的要求越來越高,為了保證用戶傳輸的信息在網絡或通信中不被盜取和篡改,用戶對信息進行加密后傳輸,這樣就要求更高的加密速度。因此,硬件電路實現的加密算法受到更加廣泛的關注。基于FPGA的加密算法具有安全性高、加密速度較快、開發周期短、可重配、成本低、可靠性高以及可移植性好等特點[3-4],在加密中得到廣泛應用。
基于FPGA的AES算法實現的研究中,部分研究側重AES算法加密速度的優化,并不關心其邏輯資源消耗:文獻[5]為了提高算法加密速度,使用了多核128-AES技術,一次處理多個128 bit數據,以達到提升加密速度的目的,這種硬件實現方式以犧牲大量可編程邏輯資源為代價。文獻[6]使用CTR模型來實現AES,加密速度很快,但可編程邏輯資源消耗非常大。另一部分研究雖然使用了較少的可編程邏輯資源,但其實現速度較慢:文獻[7]僅僅使用了輪內流水線結構來提升加密速度,資源消耗較少,但每10個時鐘周期輸出一個加密結果,加密速度很低。文獻[8]為了減少可編程邏輯資源的消耗,對S盒進行了優化,設計的S盒在有限域GF(24)2上取乘法逆,原S盒的仿射函數不變,并且與AES算法S盒的仿射函數相復合生成新的S盒,并未在其他方面優化,其整體加密速度較慢。
設計并實現一種基于FPGA的AES加密算法,以較少的邏輯資源消耗獲得快的加密速度。從降低算法運算復雜度,優化關鍵路徑提高加密速度(通量),利用BRAM進一步提升加密速度等方面對算法的硬件實現進行優化,以獲得更高的加密速度和效率。優化后的AES算法封裝成IP核,并在SOPC上使用自定制IP核,實現數據通信中的高速加密。
1.1 行移位與列混合的優化降低資源使用
明文分成16個字節,組成狀態矩陣[2]A。AES算法輪迭代包括4個部分:字節替代,行移位,列混合,輪密鑰異或。字節替代使用查找表(S盒)實現,替代后的輸出矩陣B行移位。為減少邏輯資源的使用,行移位與字節替代組合實現,矩陣A進行字節替代后輸出結果不再按照原始順序,而按行移位后的順序,節省行移位所需可編程邏輯資源。
列混合運算如式(1)所示,其中Bij是狀態矩陣B的元素,下標x=0、1、2、3表示狀態矩陣的不同列。

上述運算都在有限域GF(28)域[1]上進行的,硬件實現時,加法運算等價于異或;*運算則分為兩種情況[2]:如果二進制數Bij最高位為1,與2做*運算時,則先左移一位,然后與00011011進行異或運算;如果二進制數Bij最高位為0,與2做*運算時,則只左移一位。用查找表方式替代組合邏輯實現的*運算,將8位二進制數進行*運算的256種可能結果用一個查找替換表(M盒)進行存儲,輸入的8位二進制數為M盒的元素地址,取出對應地址的M盒元素,可以降低列混合的運算復雜度,減少可編程邏輯資源消耗。
1.2 關鍵路徑(密鑰擴展)的優化提升加密速度
AES系統的通量和效率定義如下:
通量=分組長度×最大頻率/所需時鐘周期數 (3)
效率=通量/所用可編程邏輯單元(Slice)個數(4)
標準AES經過10輪迭代,即每10個時鐘周期獲得一個加密結果[10],通量低。一般會將10輪迭代完全展開并在每一級加入流水線,每一個時鐘周期獲得一個加密輸出,加密速度提升為原來的十倍。
為了進一步提高AES算法通量,需找出關鍵路徑,對輪迭代中的每一個變換進行測試并獲得其最大頻率,將字節替換,行移位,列混合組合實現,得到最大頻率1 205.13 MHz;對密鑰拓展部分實現,獲得最大頻率為384.79 MHz。在AES算法的輪迭代中,密鑰拓展部分與另外3部分相對獨立。AES算法最大頻率由密鑰拓展和輪迭代的另外3部分組合實現的最大頻率中的較小者決定。而字節替換,行移位,列混合的組合實現的最大頻率遠高于密鑰拓展部分的最大頻率384.79 MHz,得出決定AES算法最大頻率的關鍵路徑是密鑰擴展部分。
密鑰擴展部分為AES的關鍵路徑,如圖1所示密鑰擴展流程圖,W為第i輪128位密鑰,N為第i+1 輪 128 位密鑰,W[i]、N[i](i=0,1,2,3)分別為 W 和N的32位分組,T、R為32位。

圖1 密鑰擴展流程圖
為了進一步提高AES算法的通量,需提高密鑰擴展部分的最大頻率。引入6級流水線結構,每次異或運算之后均加入寄存器,這樣一個時鐘周期之間的組合邏輯運算只有一次異或運算,與其他情況下的一個時鐘周期內多次異或運算相比較,最大延遲降低,最高頻率提高。插入流水線后單獨的密鑰擴展部分最大頻率提高到515.38 MHz。
1.3 利用BRAM進一步提升加密速度
FPGA內嵌RAM(BRAM)的讀寫操作具有延遲固定,低延時和訪問時間固定的優點。利用BRAM代替LUT實現S盒和M盒可以進一步提高算法的加密速度(通量)。
AES算法在FPGA上實現的最大頻率為443.99 MHz,消耗1 139個Slice,通量為56.83 Gbit/s,效率為49.89(Mbit/s)/slice。表1為關鍵路徑優化前后的對比。

表1 關鍵路徑優化前后的對比
表2為本設計結果與相關文獻(文獻均在Virtex 6實現AES算法)所報道的同類設計結果的比較。
本設計效率最高,為了驗證優化后加密算法的功能正確性,選取測試向量[13],其相關數據如下:

采用Modelsim進行功能時序仿真驗證,結果顯示優化后算法實現了預定功能。

表2 本設計與同類設計的比較結果
優化后的AES算法封裝為自定制IP核,需要對接口進行聲明。自定制IP核硬件結構[14]如圖2所示,主要由AVALON接口邏輯部分,寄存器邏輯部分,任務邏輯部分和AES算法部分構成。

圖2 AES算法IP核硬件結構
4個模塊中,AVALON接口邏輯模塊聲明與總線通信的接口,調用寄存器邏輯模塊和任務邏輯模塊。寄存器邏輯模塊定義工作寄存器組,因為NIOS CPU是32位RISC軟核處理器,所以AVALON總線定為32位,設置的寄存器字長也為32位,包括4個32位的密鑰寄存器,4個32位的明文數據輸入寄存器,4個32位的結果寄存器和1個32位控制寄存器。為寄存器設定地址偏移量,密鑰寄存器地址偏移量為0x00~0x03,數據寄存器地址偏移量為0x04~0x07,結果寄存器地址偏移量為0x08~0x0b,控制寄存器地址偏移量為0x0c。控制寄存器用于控制AES算法,其格式如下:控制寄存器第0位為AES算法狀態位,用于判斷AES算法完成與否(完成則為1);寄存器第1位為AES算法啟動位,當啟動位為1時,AES算法啟動;寄存器第2位為加解密選擇位,選擇位為1,則AES進行加密,為0,則進行解密;寄存器第3位則為狀態復位位,復位位為1時,狀態機復位,進入休眠初始態,其余為保留位。
任務邏輯模塊用于狀態轉換,即狀態機的描述:狀態機復位后進入初始休眠態Idel,密鑰和明文輸入后,發送使能信號Enable,狀態機轉入建立態Setup,將明文和密鑰送入AES算法部分,之后狀態機自動跳入保持態Hold(加入保持態是為了確保明文和密鑰完全送入AES算法部分),等待AES算法啟動信號,像控制寄存器寫入啟動信號Start,狀態機進入工作態Work,AES算法開始工作,加/解密完成后,AES算法發出完成標志信號,狀態機進入完成態Finish,最后自動跳入休眠態Idel,如圖3所示。

圖3 任務邏輯狀態轉換圖
基于NIOS II的可編程片上系統(SOPC),其硬件和軟件均可現場編程實現,從而為設計提供了極大的靈活性,并得到了越來越廣泛的應用[15-16]。
AES算法加密系統的SOPC結構如圖4所示,其中包括NIOS II處理器,自定制AES IP核,SDRAM控制器,FLASH接口等。AES IP核用于數據加密,SDRAM用于數據的存儲,FLSAH用于系統程序的運行,PIO用于顯示加密完成的標志,LCD用于顯示加密結果。

圖4 AES算法加密系統
SOPC系統采用Altera QuartusII設計軟件中的Qsys工具構建。Qsys的系統組件庫提供了CPU,FLASH存儲器接口,SDRAM控制器等IP核,AES加密則采用自定制設計IP核。AES加密系統的QuartusII工程頂層模塊如圖5所示。

圖5 AES加密系統的QuartusII工程頂層模塊
用戶應用程序通過硬件抽象層(HAL)系統訪問硬件,作為軟件運行環境的HAL系統將C標準庫,應用程序接口(API)和設備驅動程序集成在一起。當采用Qsys創建了NIOS II應用硬件系統后,就可以在NIOS II集成開發環境(EDS)中創建相應的HAL系統庫,并進行IP核應用編程。使用API函數IOWR(AESIP_BASE,OFFSET,DATA)將與上文驗證的128 位測試密鑰2b7e1516_28aed2a6_abf71588_09cf4f3c和128位明文3243f6a8_885a308d_313198a2_e0370734分別寫入密鑰寄存器,數據寄存器,程序如下。


再將啟動加密的控制字寫入控制寄存器,AES IP核開始工作,程序如下:

加密完成后返回的加密完成信號觸發結果讀出及完成標志信號顯示。

文中首先介紹了基于FPGA的AES算法硬件實現優化,從行移位,列混合和關鍵路徑等進行硬件實現優化,獲得了AES算法加密速度56.83 Gbit/s,加密效率 49.89(Mbit/s)/Slice,與同類設計相比,加密速度較快,加密效率最高;然后,優化后的AES算法進行接口邏輯聲明,封裝成自定制IP核,以便隨時添加使用;最后,采用基于NIOS II的SOPC技術,構建了一個嵌入式AES算法加密系統,實現了數據的高速加密,該系統具有開發周期短,處理速度快,硬件可自由配置等優點,可以自由的應用于高速數據通信中。
[1]谷利澤,鄭世慧,楊義先.現代密碼學教程[M].2版.北京:北京郵電大學出版社,2015.
[2]劉艷萍,李秋慧.AES算法的研究與其密鑰擴展算法的改進[J].現代電子技術,2016,39(10):5-8.
[3]韓津生,林家駿,周文錦,等.基于FPGA的AES核設計[J].計算機工程與科學,2013,35(3):80-84.
[4]韓少男,李曉江.一種小面積低功耗串行AES硬件加解密電路[J].微電子學, 2010,40(3):347-353.
[5]Henzen L,Fichtner W.FPGA parallel-pipelined AES-GCM core for 100G Ethernet applications[R].ESSCIRC, 2010 Proceedings of the, Seville,2010:202-205.
[6]Abolfazl Soltani,Saeed Sharifian.An ultra-high throughput and fully pipelined implementation of AES algorithm on FPGA[J].Microprocessors and Microsystems, 2015(39):480-493.
[7]El Maraghy M,Hesham S,Abd El Ghany M A.Real-time efficient FPGA implementation of aes algorithm[C]//SOC Conference(SOCC),2013 IEEE 26th International, Erlangen, 2013:203-208.
[8]武一,郭婷婷.基于FPGA的加密算法改進及實現[J].電視技術,2014,38(5):66-70.
[9]楊軍,余江,趙征鵬.基于FPGA密碼技術的設計與應用[M].北京:電子工業出版社,2012.
[10]Wang Y,Ha Y.FPGA-Based 40.9-Gbits/s Masked AES With Area Optimization for Storage Area Network[R].in IEEE Transactions on Circuits and Systems II, 2013:36-40.
[11]Hussain U,Jamal H.An efficient high throughput FPGA implementation of AES for Multi-gigabit Protocols[C]//Frontiers of Information Technology(FIT), 2012 10th International Conference on,Islamabad, 2012:215-218.
[12]Rahimunnisa K, Karthigaikumar P, Rasheed S,et al.Suresh Kumar,Fpga implementation of aes algorithm for high throughput using folded parallel architecture[J].Security Commun.Netw.(2014),7(11):2225-2236.
[13]谷大武,徐勝波譯.高級加密標準(AES)算法-Rijndael的設計[M].北京:清華大學出版社,2003.
[14]龔向東,黃虹賓,劉春平.主從可配置I2C總線接口IP及其應用[J].電訊技術,2010,50(1):76-80.
[15]宋宇,宋雋煒.基于SOPC的微型無人機飛行控制系統設計[J].傳感器與微系統,2016,35(9):101-103.
[16]張磊,武騰飛,申雅峰.基于SOPC的光信號數據采集解調系統設計 [J].光學技術,2016,42(4):321-324.
Optimization of AES algorithm hardware implementation based on FPGA and application of its IP core
GONG Xiang-dong1,WANG Jia2,ZHANG Zhun2,WANG Kun2
(1.College of Electronic Science and Technology , Shenzhen University,Shenzhen 518060,China;2.College of Optoelectronic Engineering,Shenzhen University,Shenzhen 518060,China)
According to the characteristics of AES algorithm,its hardware implementation is improved from three aspects in this paper:In parts of sub_Bytes and MixColumns,using lookup table replace matrix transform to reduce the computational complexity of AES algorithm implementation;Using pipeline architecture for optimization of critical path greatly increase encryption speed;Employing FPGA customized RAM (BRAM)store pre-computed lookup table value to further enhance the encryption speed.The optimized AES algorithm is simulated and verified,then it is implemented on a Xilinx Virtex-6 xc6vlx240T (speed grade-3) FPGA.Improved results are obtained:1 139 Slices is totally employed, maximum frequency is 443.99 MHz, throughput is 56.83 Gbit/s,and efficiency is 49.89(Mbit/s)/Slice; Then, declaring Interface logic for AES algorithm, the optimized AES algorithm is encapsulated into a custom IP core;At last,using SOPC technology to build an embedded AES algorithm encryption system based on NIOS II,the system implement high speed data encryption in data communication.
AES;pipelinearchitecture;maximumfrequency;efficiency;customIPcore;encryptionsystem
TN918
A
1674-6236(2017)12-0001-05
2016-10-08稿件編號:201610011
國家自然科學基金儀器專項(61027014)
龔向東(1956—),男,廣東深圳人,教授。研究方向:瞬態光電技術,微機系統應用等。