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

?

基于AXIStream接口的AES加密模塊設(shè)計與驗證

2017-03-06 00:38:50徐欣
軟件導(dǎo)刊 2017年1期

徐欣

摘要:結(jié)合具體項目對信息安全的需求,研究了AES算法的實現(xiàn)過程。針對算法涉及的數(shù)論知識及實現(xiàn)步驟,對加解密算法進(jìn)行了綜合優(yōu)化。在此基礎(chǔ)上,設(shè)計了一種基于AXIStream接口的加密IP核,該IP核主要是針對實際項目中需要對流數(shù)據(jù)進(jìn)行快速可靠的加密要求所設(shè)計的。結(jié)合實際項目場景以及AXIStream接口特點(diǎn),IP核的設(shè)計可最大限度地減少資源消耗。IP核使用兩個通道分別進(jìn)行加密與解密的并行實現(xiàn),經(jīng)過Testbench模型仿真測試以及開發(fā)板真實環(huán)境的測試,其吞吐率可達(dá)1.12Gb/s,完全符合對速率要求較高的項目應(yīng)用要求。

關(guān)鍵詞關(guān)鍵詞:AES加密算法;IP核;AXIStream

DOIDOI:10.11907/rjdk.162271

中圖分類號:TP309.7文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2017)001015402

引言

隨著集成電路的發(fā)展、FPGA結(jié)構(gòu)與功能的改變,基于FPGA的開發(fā)模式也發(fā)生了很多變化。從傳統(tǒng)使用單一的邏輯編程,發(fā)展到如今在SOC上大量使用各種知識產(chǎn)權(quán)核(IP核)進(jìn)行設(shè)計。特別是在2011年,Xilinx推出了Zynq7000首款可擴(kuò)展處理平臺(EPP)[1],將業(yè)界標(biāo)準(zhǔn)的ARM雙核CortexA9 Core處理系統(tǒng)與Xilinx可擴(kuò)展的28nm FPGA架構(gòu)整合在一起。因此,可以預(yù)見未來的開發(fā)模式將為“嵌入式+FPGA”。文獻(xiàn)[2]、[3]提出了基于AXI總線的IP核設(shè)計,但其僅采用AXI總線中的AXI4接口,而在一些對速率要求比較苛刻的項目中,所用IP核的接口必須是更為高效的AXIStream接口。在設(shè)計加密IP核的同時,需要結(jié)合實際IP核所要運(yùn)用的項目場景,考慮外圍可能連接的IP核,最大化地使用官方IP核,進(jìn)行自定義IP核的最優(yōu)化設(shè)計,而這些在目前許多加密IP核設(shè)計中很難找到。

本文IP核的設(shè)計思想是在某軍工項目的調(diào)試過程中得到的,其設(shè)計的IP核并不是簡單地和SOC相連,而是通過AXISteam接口與DMA的IP核相連,對DMA輸出的數(shù)據(jù)進(jìn)行加密,加密后的事務(wù)同樣通過AXIStream總線發(fā)送給其它總線矩陣。DMA有一定緩沖區(qū),由于加解密IP核與DMA相連,通過計算分析,自定義的加解密IP核不需要任何額外的存儲空間進(jìn)行加解密數(shù)據(jù)存儲,進(jìn)一步簡化了IP核設(shè)計。

1AXIStream接口介紹

AXIStream接口是一種用來連接需要交換數(shù)據(jù)的兩個部件的標(biāo)準(zhǔn)接口,它可以用于連接一個產(chǎn)生數(shù)據(jù)的主機(jī)和一個接收數(shù)據(jù)的從機(jī),也可以用于連接多個主機(jī)和從機(jī)。AXIStream接口符合AXI(Advanced Xetensible Interface)總線標(biāo)準(zhǔn)。AXI是一種總協(xié)議,該協(xié)議是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0協(xié)議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內(nèi)總線[4]。AXI 總線有讀地址和控制、讀數(shù)據(jù)、寫地址和控制、寫數(shù)據(jù)、寫響應(yīng)5個通道。AXI總線包括AXI4、AXILite和AXIStream接口,其中AXI4和AXILite有完整的5個通道,AXIStream不包含地址通道,只有3個通道。AXI4主要面向高性能地址映射通信的需求;AXI4Lite是一個簡單的吞吐量地址映射性通信總線;AXIStream接口不存在地址映射,所以它的突發(fā)數(shù)據(jù)量是不受限制的,這也導(dǎo)致了基于AXIStream接口的IP核較一般AXI接口的IP核傳輸速率更快。AXIStream主要應(yīng)用于高速數(shù)據(jù)流的傳輸。

2AES算法基本原理

美國國家標(biāo)準(zhǔn)技術(shù)研究所(NIST)在2001發(fā)布了高級加密標(biāo)準(zhǔn)(AES),用于取代之前的DES[5]。AES算法使用對稱密鑰,其加解密的密鑰相同,其實現(xiàn)也非常方便快捷。AES算法可以使用128bit、192bit或256bit的密鑰一次性加密128bit的分組長度。本文僅對128bit密鑰加密128bit分組的情況進(jìn)行介紹。AES的加密過程包括字節(jié)替換、行移位、列混淆、輪密鑰加4個過程,而解密過程正好是4個步驟的逆過程:逆字節(jié)替換、逆行移位、逆列混淆和輪密鑰加。無論是加密過程中明文與密鑰的運(yùn)算,還是解密過程中密文與密鑰的運(yùn)算都是以4*4的矩陣為單位進(jìn)行輪循環(huán)運(yùn)算,并且都是在有限域上進(jìn)行計算。

3AXIStream接口加密模塊設(shè)計

該加密IP核的設(shè)計來源是用DMA進(jìn)行數(shù)據(jù)傳輸?shù)捻椖?,所以設(shè)計的IP核對外接口是與DMA的IP核進(jìn)行匹配,圖1為自定義IP核與DMA的連接示意圖。從圖中可以看出,AXIStream接口比AXI4、AXILite接口的連接線要少,因此無論是硬件還是軟件實現(xiàn)起來都更加方便。

AES的IP核設(shè)計了4個AXIStream接口,s_axis_rxd_en和m_axis_txd_en用于數(shù)據(jù)的接收并且發(fā)送加密數(shù)據(jù),s_axis_rxd_de和m_axis_txd_de用于接收加密數(shù)據(jù)并且發(fā)送解密后的數(shù)據(jù)。

AES的IP核設(shè)計不僅在接口方面要考慮與DMA的對接,更重要的是在進(jìn)行IP核內(nèi)部設(shè)計時,要考慮到DMA的特點(diǎn)以及其它擁有流接口的IP核特點(diǎn),并同時考慮到FPGA內(nèi)部資源的充分利用以及損耗情況。AES加密算法的優(yōu)化設(shè)計如下:

(1) 很多AES的IP核設(shè)計,如文獻(xiàn)[6]提出的設(shè)計,由于數(shù)據(jù)位寬不匹配,需要給IP核設(shè)置一系列的FIFO進(jìn)行數(shù)據(jù)緩存。這不但造成了FPGA資源的消耗,而且也會給設(shè)計上帶來更多困難。 Xilinx提供的DMA給出了最多23bit的緩存,可以用于數(shù)據(jù)的暫時存儲區(qū),待數(shù)據(jù)位寬為128bit后,再傳輸?shù)紸ES的IP核內(nèi)進(jìn)行加密。

(2) AES的字節(jié)替換需要用到S盒,普通AES設(shè)計中的S盒一般使用查找表形式,加解密需要兩個不同的S盒,這將消耗很大的邏輯資源。所以,根據(jù)FPGA的基本結(jié)構(gòu)特點(diǎn)使用RAM塊進(jìn)行S盒設(shè)計,通過地址訪問的方式實現(xiàn)字節(jié)置換。RAM塊是FPGA內(nèi)部的塊資源,資源使用時不會損耗任何邏輯資源。

(3) 使用一次生成所有擴(kuò)展密鑰的方式。擴(kuò)展密鑰總共只需176字節(jié)進(jìn)行存儲,雖然消耗了少量資源,卻可以節(jié)省等待密鑰生成的時間。

(4) 深入研究AES的加解密流程發(fā)現(xiàn),雖然AES的解密過程與加密過程有所不同,但是通過合適的變換,可以將AES加解密過程使用同一套流程實現(xiàn),從而減少了硬件實現(xiàn)難度,降低了資源消耗。

4仿真波形與測試

設(shè)計使用Xilinx最新的開發(fā)集成環(huán)境Vivado進(jìn)行邏輯實現(xiàn)以及相關(guān)的仿真測試。設(shè)計采用層次化設(shè)計思想,將復(fù)雜的設(shè)計簡化為模塊化設(shè)計,不但使代碼的編寫和管理更加方便,而且有利于加解密的并行化實現(xiàn)。

由于FPGA的綜合實現(xiàn)耗時周期較長,所以設(shè)計時先采用不需要硬件的Testbench模型進(jìn)行功能仿真測試。圖2為功能仿真測試結(jié)果,輸入數(shù)據(jù)包括128bit明文與128bit密鑰,在一個時鐘周期中即可對數(shù)據(jù)進(jìn)行一輪AES加密操作。通過對加密結(jié)果的分析,所設(shè)計的基于AXIStream接口的AES IP核可以成功實現(xiàn)對數(shù)據(jù)的加密功能。

為了獲取IP核的真實加密速率,使用Vivado搭建了基本的硬件測試平臺。MicroBlaze是Xilinx提供的一個處理器軟核,利用其產(chǎn)生明文數(shù)據(jù)和初始密鑰。MicroBlaze通過DMA將明文和密鑰傳輸?shù)紸ES的IP核進(jìn)行加密,其使用的硬件平臺為Artix-7開發(fā)板。通過測試計算,在FPGA主時鐘為200MHZ、總線寬度為64bit的條件下,AES加密模塊的加密速度可達(dá)3.04Gb/s,而整體系統(tǒng)的加密速度可達(dá)1.12Gb/s。設(shè)計的AES加密IP核總共只需要1 392個Slice LUTs、189個Slice Registers。與文獻(xiàn)[2]的門數(shù)高達(dá)13.5K,文獻(xiàn)[7]需要3 012個Slice LUTs相比,可看出優(yōu)化后的加解密算法能夠有效減少資源消耗。

加密模塊與整體系統(tǒng)的加密速率不同是由DMA的傳輸造成的。Xilinx提供的DMA在32bit位寬、100MHZ系統(tǒng)中的極限傳輸速率為400Mb/s。由此可以判斷,在200MHZ、64bit位寬的系統(tǒng)中,DMA核最高的理論傳輸速率只能達(dá)到1.6Gb/s,所以整個系統(tǒng)的加密速度只能達(dá)到1.12Gb/s。

黄陵县| 邹城市| 庄浪县| 介休市| 滨海县| 梨树县| 通渭县| 柘荣县| 秭归县| 麦盖提县| 连城县| 饶阳县| 肇源县| 靖远县| 石林| 肥西县| 长垣县| 花垣县| 宣威市| 邻水| 英吉沙县| 澜沧| 白河县| 沙湾县| 共和县| 北海市| 益阳市| 青冈县| 昌宁县| 忻城县| 巍山| 太和县| 都江堰市| 郓城县| 斗六市| 仙居县| 台东市| 文成县| 宁国市| 扶余县| 锡林浩特市|