徐欣

摘要:結合具體項目對信息安全的需求,研究了AES算法的實現過程。針對算法涉及的數論知識及實現步驟,對加解密算法進行了綜合優化。在此基礎上,設計了一種基于AXIStream接口的加密IP核,該IP核主要是針對實際項目中需要對流數據進行快速可靠的加密要求所設計的。結合實際項目場景以及AXIStream接口特點,IP核的設計可最大限度地減少資源消耗。IP核使用兩個通道分別進行加密與解密的并行實現,經過Testbench模型仿真測試以及開發板真實環境的測試,其吞吐率可達1.12Gb/s,完全符合對速率要求較高的項目應用要求。
關鍵詞關鍵詞:AES加密算法;IP核;AXIStream
DOIDOI:10.11907/rjdk.162271
中圖分類號:TP309.7文獻標識碼:A文章編號文章編號:16727800(2017)001015402
引言
隨著集成電路的發展、FPGA結構與功能的改變,基于FPGA的開發模式也發生了很多變化。從傳統使用單一的邏輯編程,發展到如今在SOC上大量使用各種知識產權核(IP核)進行設計。特別是在2011年,Xilinx推出了Zynq7000首款可擴展處理平臺(EPP)[1],將業界標準的ARM雙核CortexA9 Core處理系統與Xilinx可擴展的28nm FPGA架構整合在一起。因此,可以預見未來的開發模式將為“嵌入式+FPGA”。文獻[2]、[3]提出了基于AXI總線的IP核設計,但其僅采用AXI總線中的AXI4接口,而在一些對速率要求比較苛刻的項目中,所用IP核的接口必須是更為高效的AXIStream接口。在設計加密IP核的同時,需要結合實際IP核所要運用的項目場景,考慮外圍可能連接的IP核,最大化地使用官方IP核,進行自定義IP核的最優化設計,而這些在目前許多加密IP核設計中很難找到。
本文IP核的設計思想是在某軍工項目的調試過程中得到的,其設計的IP核并不是簡單地和SOC相連,而是通過AXISteam接口與DMA的IP核相連,對DMA輸出的數據進行加密,加密后的事務同樣通過AXIStream總線發送給其它總線矩陣。DMA有一定緩沖區,由于加解密IP核與DMA相連,通過計算分析,自定義的加解密IP核不需要任何額外的存儲空間進行加解密數據存儲,進一步簡化了IP核設計。
1AXIStream接口介紹
AXIStream接口是一種用來連接需要交換數據的兩個部件的標準接口,它可以用于連接一個產生數據的主機和一個接收數據的從機,也可以用于連接多個主機和從機。AXIStream接口符合AXI(Advanced Xetensible Interface)總線標準。AXI是一種總協議,該協議是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內總線[4]。AXI 總線有讀地址和控制、讀數據、寫地址和控制、寫數據、寫響應5個通道。AXI總線包括AXI4、AXILite和AXIStream接口,其中AXI4和AXILite有完整的5個通道,AXIStream不包含地址通道,只有3個通道。AXI4主要面向高性能地址映射通信的需求;AXI4Lite是一個簡單的吞吐量地址映射性通信總線;AXIStream接口不存在地址映射,所以它的突發數據量是不受限制的,這也導致了基于AXIStream接口的IP核較一般AXI接口的IP核傳輸速率更快。AXIStream主要應用于高速數據流的傳輸。
2AES算法基本原理
美國國家標準技術研究所(NIST)在2001發布了高級加密標準(AES),用于取代之前的DES[5]。AES算法使用對稱密鑰,其加解密的密鑰相同,其實現也非常方便快捷。AES算法可以使用128bit、192bit或256bit的密鑰一次性加密128bit的分組長度。本文僅對128bit密鑰加密128bit分組的情況進行介紹。AES的加密過程包括字節替換、行移位、列混淆、輪密鑰加4個過程,而解密過程正好是4個步驟的逆過程:逆字節替換、逆行移位、逆列混淆和輪密鑰加。無論是加密過程中明文與密鑰的運算,還是解密過程中密文與密鑰的運算都是以4*4的矩陣為單位進行輪循環運算,并且都是在有限域上進行計算。
3AXIStream接口加密模塊設計
該加密IP核的設計來源是用DMA進行數據傳輸的項目,所以設計的IP核對外接口是與DMA的IP核進行匹配,圖1為自定義IP核與DMA的連接示意圖。從圖中可以看出,AXIStream接口比AXI4、AXILite接口的連接線要少,因此無論是硬件還是軟件實現起來都更加方便。
AES的IP核設計了4個AXIStream接口,s_axis_rxd_en和m_axis_txd_en用于數據的接收并且發送加密數據,s_axis_rxd_de和m_axis_txd_de用于接收加密數據并且發送解密后的數據。
AES的IP核設計不僅在接口方面要考慮與DMA的對接,更重要的是在進行IP核內部設計時,要考慮到DMA的特點以及其它擁有流接口的IP核特點,并同時考慮到FPGA內部資源的充分利用以及損耗情況。AES加密算法的優化設計如下:
(1) 很多AES的IP核設計,如文獻[6]提出的設計,由于數據位寬不匹配,需要給IP核設置一系列的FIFO進行數據緩存。這不但造成了FPGA資源的消耗,而且也會給設計上帶來更多困難。 Xilinx提供的DMA給出了最多23bit的緩存,可以用于數據的暫時存儲區,待數據位寬為128bit后,再傳輸到AES的IP核內進行加密。
(2) AES的字節替換需要用到S盒,普通AES設計中的S盒一般使用查找表形式,加解密需要兩個不同的S盒,這將消耗很大的邏輯資源。所以,根據FPGA的基本結構特點使用RAM塊進行S盒設計,通過地址訪問的方式實現字節置換。RAM塊是FPGA內部的塊資源,資源使用時不會損耗任何邏輯資源。
(3) 使用一次生成所有擴展密鑰的方式。擴展密鑰總共只需176字節進行存儲,雖然消耗了少量資源,卻可以節省等待密鑰生成的時間。
(4) 深入研究AES的加解密流程發現,雖然AES的解密過程與加密過程有所不同,但是通過合適的變換,可以將AES加解密過程使用同一套流程實現,從而減少了硬件實現難度,降低了資源消耗。
4仿真波形與測試
設計使用Xilinx最新的開發集成環境Vivado進行邏輯實現以及相關的仿真測試。設計采用層次化設計思想,將復雜的設計簡化為模塊化設計,不但使代碼的編寫和管理更加方便,而且有利于加解密的并行化實現。
由于FPGA的綜合實現耗時周期較長,所以設計時先采用不需要硬件的Testbench模型進行功能仿真測試。圖2為功能仿真測試結果,輸入數據包括128bit明文與128bit密鑰,在一個時鐘周期中即可對數據進行一輪AES加密操作。通過對加密結果的分析,所設計的基于AXIStream接口的AES IP核可以成功實現對數據的加密功能。
為了獲取IP核的真實加密速率,使用Vivado搭建了基本的硬件測試平臺。MicroBlaze是Xilinx提供的一個處理器軟核,利用其產生明文數據和初始密鑰。MicroBlaze通過DMA將明文和密鑰傳輸到AES的IP核進行加密,其使用的硬件平臺為Artix-7開發板。通過測試計算,在FPGA主時鐘為200MHZ、總線寬度為64bit的條件下,AES加密模塊的加密速度可達3.04Gb/s,而整體系統的加密速度可達1.12Gb/s。設計的AES加密IP核總共只需要1 392個Slice LUTs、189個Slice Registers。與文獻[2]的門數高達13.5K,文獻[7]需要3 012個Slice LUTs相比,可看出優化后的加解密算法能夠有效減少資源消耗。
加密模塊與整體系統的加密速率不同是由DMA的傳輸造成的。Xilinx提供的DMA在32bit位寬、100MHZ系統中的極限傳輸速率為400Mb/s。由此可以判斷,在200MHZ、64bit位寬的系統中,DMA核最高的理論傳輸速率只能達到1.6Gb/s,所以整個系統的加密速度只能達到1.12Gb/s。