999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于高層次綜合的AES算法研究與設計

2017-07-31 17:47:12望,賈佳,孟淵,白
計算機應用 2017年5期
關鍵詞:優化資源方法

張 望,賈 佳,孟 淵,白 旭

(1.中國科學院 信息工程研究所,北京 100093; 2.信息內容安全技術國家工程實驗室,北京100093;3.北京特種工程設計研究院,北京 100028)

基于高層次綜合的AES算法研究與設計

張 望1,2*,賈 佳3,孟 淵1,2,白 旭1,2

(1.中國科學院 信息工程研究所,北京 100093; 2.信息內容安全技術國家工程實驗室,北京100093;3.北京特種工程設計研究院,北京 100028)

(*通信作者電子郵箱zhangwang@iie.ac.cn)

由于對廣泛使用的AES算法的性能要求越來越高,基于軟件的密碼算法已經越來越難以滿足高吞吐量密碼破解的需求,因此越來越多的算法利用現場可編程邏輯門陣列(FPGA)平臺進行加速。針對AES算法在FPGA硬件上存在的開發復雜度高且開發周期長等問題,采用高層次綜合(HLS)設計方法,使用高級程序語言描述并設計AES硬件加速算法。首先利用循環展開等提高運算并行度;其次使用資源平衡技術進行優化,充分利用片上存儲和電路資源;最后添加全流水結構,提高整體設計的時鐘頻率和吞吐量,同時也詳細對比分析基準設計、利用結構展開、資源均衡以及流水線優化方法的設計。經過實驗表明,在Xilinx xc7z020clg484 FPGA芯片上,最終AES算法的時鐘頻率最高達到127.06 MHz,而吞吐量達到了16.26 Gb/s,較之基準的AES設計,性能提升了三個數量級。

對稱密鑰加密算法;高級加密標準;高層次綜合;現場可編程邏輯門陣列

0 引言

隨著計算機和Internet技術的迅速發展,網絡信息技術日益深入社會、經濟、政治、民生的方方面面,使人們的生活和工作越來越離不開網絡通信; 然而,現代社會的人們面臨著信息竊聽、信息偽造、信息重放等多種信息安全方面的巨大隱患, 因此,伴隨而來的信息傳輸安全問題也引起了學者們的高度關注。信息安全的主要內容是保護信息和承載信息的載體,避免信息和信息系統遭受任意形式的破壞和攻擊; 一旦信息和信息系統受到攻擊和破壞,應能迅速響應、阻斷破壞、修復信息和信息系統。在實際應用中,信息安全的解決主要依靠兩種方式:以“防火墻”技術為核心的被動防御系統和以“密碼”為基礎的主動保障系統。密碼技術作為保護信息安全的最重要方式之一,在保護信息系統安全方面有著舉足輕重的地位。信息加密以某種特殊的算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容,從而對信息進行保護。

美國國家標準與技術研究院(National Institute of Standards and Technology, NIST)在1997年便宣布了一個高級加密標準(Advanced Encryption Standard, AES)的開發工作以代替已經力不從心的數字加密標準(Data Encryption Standard, DES)。而最終,由Joan Daemen和Vincent Rijmen設計的Rijndael算法[1]被選擇為AES算法。對于目前密碼算法的高速性能要求,尤其是數據傳輸速度達到GB數量級時,密碼算法的硬件實現便顯得尤為重要。以現場可編程門陣列(Field-Programmable Gate Array, FPGA)為代表的可重構硬件以其自身所固有的特點——既具有硬件的安全性和高速性又有軟件的靈活性和易維護性,已經成為分組密碼算法硬件實現的熱點研究方向[2]。

文獻[3]總結了目前傳統開發方法遇到的問題以及使用高層次綜合(High-Level Synthesis, HLS)技術的優勢,即由于在片上系統(System on a Chip, SoC)上創建更多更復雜的應用,其功能設計的復雜度也隨之增加,而且還要考慮功耗控制以及工藝變化等問題。然而利用HLS技術可以自動化管理這些日益增加的復雜設計,讓設計開發人員專注于高層功能的設計以及非常便捷地探索設計空間以優化設計。目前的一些高層次綜合工具支持從C/C++代碼進行硬件綜合。使用這些高層次綜合工具的優勢也是十分明顯的,這將給硬件設計開發帶來更高的效率,并能夠充分利用已有的可靠軟件程序,減少開發成本與時間[4];然而,并不是所有的C/C++代碼都能夠直接用于硬件設計, 因此需要在C/C++設計層面上作出改變以達到高效的硬件設計實現,比如文獻[5]探討了基于HLS技術,在低資源情況下隨機存取存儲器(Random Access Memory, RAM)不同分割數目對于AES算法的性能的影響; 文獻[6]則探討了算符、操作相關帶來的影響; 文獻[7]基于HLS技術利用C到寄存器傳輸級(C to Register-transfer level, C2R)設計方法探索設計空間,以設計不同硬件結構的AES算法來滿足不同的性能資源需求的實現; 文獻[8-11] 探討了傳統設計方法下對于AES算法的硬件設計,其中的文獻[8]利用了GF(24)上的多項式表示來替換AES原始的GF(28)上的計算以提高硬件流水吞吐量。還有應用于主干網的AES高性能硬件設計研究[12-15]。

利用HLS技術可以非常方便地實現與優化AES算法硬件設計; 然而,目前卻缺乏對于全自動優化與手動優化對于最終性能的影響的分析,也缺乏對于代碼映射出的硬件結構的分析,這對于進一步改善性能,減少資源消耗是不利的。在本文中描述了關于AES算法基于C的軟件設計以及其硬件實現結構,本文依次給出了三種不同代碼設計以及優化方法,并分別添加流水線優化得到其最終性能資源情況,分析其映射的總體硬件結構同時也對比分析不同的優化策略效果,最終得到了高性能、資源利用低的設計版本。

1 背景介紹

1.1 高級加密標準

AES高級加密標準,在密碼學中又稱Rijndael加密算法,是美國聯邦政府采用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。其分組長度為128位,而使用的密鑰長度可以為128位、192位或256位,即AES算法分為AES-128、AES-192和AES-256,由于彼此之間的相似性,本文只描述并實現了AES-128加密算法,更多細節可以參考文獻[16]。

大多數AES計算是在一個特別的有限域完成的。AES加密過程是在一個4×4的字節矩陣上運作,這個矩陣又稱為“狀態(state)”矩陣,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個Byte)。加密時,各輪AES加密循環(除最后一輪外)均包含4個步驟:

輪密鑰加(AddRoundKey) 矩陣中的每一個字節都與該次輪密鑰(Round Key)做XOR運算;每輪子密鑰由密鑰生成方案產生。

字節代換(SubBytes) AES中的字節代換往往用查找表的方式把每個字節替換成對應的字節。即定義了一個S盒與逆S盒。S盒用于加密過程的字節代換,逆S盒用于解密操作的逆字節代換。對于狀態矩陣中的元素,將其高4位作為行值,低4位作為列值,取出S盒或逆S盒中對應的元素作為輸出。

行移位(ShiftRows) 將矩陣中的每行進行循環式移位。即狀態矩陣的第0行左移0字節,第1行左移1個字節,第2行左移2個字節,第3行左移3個字節。這就使得每一列完全重排了。

列混合(MixColumns) 為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每列的四個字節。狀態矩陣中的第j列(j= 0, 1, 2, 3)的列混合如下表示為:

(1)

AES算法中還包括密鑰拓展(KeyExpansion)操作。其為每一個輪密鑰加操作提供輪密鑰。首先,將初始密鑰輸入到一個4×4的字節矩陣上,然后將每一列4個字節的元素組成一個字,于是便形成了數組w。對于AES-128算法而言,要將w擴充40個新列,構成44列的拓展密鑰數組。其計算過程為:

(2)

其中:RotWord表示字循環的功能,即將這個字的循環左移1個字節;SubWord是對字進行字節代換操作;Rcon為輪常量數組。

1.2 現場可編程邏輯門陣列

FPGA是一類高集成度的可編程邏輯器件,起源于美國的Xilinx公司,可以用硬件描述語言(Hardware Description Language,HDL)來編程,它靈活性強,不僅能夠進行編程、除錯、可重復擦寫操作,還可以結合算法的特點和硬件的結構進行重構,提高了系統的可升級性和產品的市場壽命。

FPGA由基本可編程的邏輯單元、可編程I/O的單元、嵌入式塊RAM、布線資源等重要部分構成。FPGA器件及其系統開發利用計算機軟件,繪制出實現用戶邏輯的原理圖或用硬件描述語言等方式作為設計輸入,然后經過一系列轉換程序、自動布局布線、模擬仿真的過程,最后生成配置FPGA器件的數據文件,下載到FPGA器件中,從而實現了滿足用戶需求的專用集成電路,真正達到了用戶自行設計集成電路的目的。其一般通過自頂向下的設計方法,實現設計的結構化,使一個復雜的系統設計可由多個設計者分工合作,同時還可以實現層次化的管理[17]。其自頂向下的設計流程包括設計定義、HDL實現、功能仿真、邏輯綜合、前仿真、布局布線、后仿真、靜態時序分析、系統測試9個步驟[18]。

1.3 高層次綜合

HLS是指采用高層次語言,比如C或者C++描述底層的數字設計。顯然,它能讓設計師和工程師在較高的抽象層面上完成底層設計。利用HLS能快速探索各種方案的可能性,分析資源面積和性能特點,最終確定硬件芯片上算法實現方案。

如圖1HLS流程,用戶先創建一份C、C++算法設計文件,以及一個用于測試系統行為的Test Bench; 隨后用高層語言的仿真器驗證設計的系統行為, 一旦算法設計的運行結果正確,就可以通過HLS運行設計,生成RTL(Register-Transfer Level)級別的設計,代碼可以是硬件描述語言Verilog或者VHDL。有了RTL設計之后,隨即可以執行設計的硬件仿真。

圖1 HLS流程Fig. 1 Flow of HLS

不僅如此,HLS提供的抽象層次有助于開發人員從高層設計硬件邏輯,解決了常見硬件系統設計難題,最終簡化系統匯編,簡化FIFO(First Input First Output)和存儲器訪問;此外,HLS提供了指令完成架構研究功能,也就是Constrains/Directives部分,設計者可以通過添加插入程序指令,把設計所需特性傳遞給綜合工具,這樣就可以在不修改設計代碼本身的情況下研究大量備選架構方案。

算法的設計工作基于HLS,主要完成Test Bench、C/C++以及Constrains/Directives部分的設計。Test Bench模擬未來系統中的軟件部分,也充當測試硬件設計的角色;而C/C++部分經過RTL設計后,就是未來系統中的硬件部分;Constrains/Directives是開發人員在設計C/C++部分時,考慮采用的優化手段,能夠指引硬件代碼資源的利用、并行的設計等。這樣從整體上完成了軟硬件的協同設計,統籌設計了整個系統,有助于挖掘硬件更大的計算能力。

2 算法實現

2.1 基準代碼設計

利用HLS技術就可以像軟件設計人員開發軟件一樣通過編寫C/C++代碼來達到FPGA硬件設計的目的。此時,像平時編寫C程序一樣,首先,編寫出第1版AES-128加密模塊的C代碼, 其偽代碼簡要描述如下:

方法名 aes_enc_v1。

輸入 indata,initkey;

輸出 outdata。

1)

if 未進行過密鑰拓展 2) keyExpansion(initkey); 3) endif

4)

初始化狀態矩陣state并對其對做輪密鑰加;

5)

for round=1 to 9 6) subByte(state); 7) shiftRow(state);

8)

mixColumn(state);

9)

對狀態矩陣state做輪密鑰加;

10)

endfor

11)

subByte(state);

12)

shiftRow(state);

13)

對狀態矩陣state做輪密鑰加;

14)

輸出結果outdata。

首先,大體上說明一下代碼的實現。對于函數keyExpansion,其輸入初始密鑰initkey,然后進行密鑰拓展的操作,再將44列的結果放入數組key中。當然,這個密鑰拓展操作只需要在開始時計算即可,對于后續需要加密的128比特塊可以一直使用先前的密鑰直到需要更改密鑰時。

密鑰拓展操作完成以后,就是AES-128加密算法的具體流程。首先,在第0輪首先對狀態矩陣state對每一個元素與此輪輪密鑰進行異或操作,很顯然,狀態矩陣state在代碼中是以數組形式存在的,而與之異或的輪密鑰也是存儲在數組中,很自然地輪密鑰加的過程是用一個循環來實現的。循環在軟件程序設計中是十分常用的結構,而且正因為循環的使用,軟件開發人員可以編寫十分簡練的代碼,大大提高軟件開發效率,并且,本研究在這一版代碼中像平時編寫C代碼一樣許多地方使用循環操作。

第0輪操作以后,就是第1輪到第9輪的加密過程,除了輪密鑰加的操作以外,還包含字節代換、行移位以及列混合操作。這三個操作都是通過函數調用的形式完成的。函數調用也是平時常用的方法,利用函數調用可以逐步地解決算法任務,而且還可以利用許多高效的系統函數來幫助編寫C/C++程序,進而提高程序開發的效率。因此,本文在這一版的程序中也將一些加密操作以函數調用的形式實現。

對于字節代換函數subByte,其輸入是狀態矩陣state,在這個過程中,本研究使用查表的方式實現的,即函數中通過查找S盒來完成字節代換操作,而不是通過計算得到的。行移位函數shiftRow,輸入是state,進行的操作如同上一章節描述的那樣進行。列混合函數mixcolumn輸入為state,其實現的方式與上一章節描述的過程略有不同,其并沒有乘法運算過程,而是將乘法運算的結果都放入到兩個數組mm02和mm03中,前者是元素與0x02相乘的所有結果的集合,后者是元素與0x03相乘的結果集合。因此,實際上列混合操作只有異或運算了。當然,在這個函數中也用到了循環結構。

第10輪調用函數subByte完成字節代換,接著調用函數shiftRow完成行移位,最后再做一次輪密鑰加的操作完成了一個128比特塊的整個加密過程。

完成了軟件設計以后,就要對軟件代碼進行C語言功能仿真以驗證功能的正確性,完成高級語言功能驗證以后,就可以利用HLS工具綜合出RTL級設計,即本文所設計的硬件部分。首先,對于第1版的代碼主要加密操作對應的結構如圖2所示。在HLS工具綜合過程中,數組時常被映射為RAM結構,運算式則利用LUT(Look Up Table)構造。在aes_enc_v1這個頂層模塊中,HLS工具一般會將子函數單獨生成一個子模塊,若是子函數非常簡單,HLS工具會自動將其內聯到頂層函數中。對于方法aes_enc_v1所映射出的結構,可以看出,受限于循環和子函數的限制,整體并行運算程度不高,HLS工具也就不會分配更多的可訪問資源,因此,子模塊與頂層模塊之間以及子模塊與RAM之間的通信會是十分頻繁的,這就帶來更多的延遲了。

圖2 aes_enc_v1方法硬件模塊結構Fig. 2 Hardware module structure of aes_enc_v1

2.2 結構展開

上述的第1版的代碼可以說是一個非常常見的C代碼設計。然而,事實上從硬件設計的角度而言是并非是一個很高效的方法。因此,可以對代碼進行改寫,而第2版AES-128加密模塊的C代碼的偽代碼如下所示:

方法名 aes_enc_v2。

輸入 indata,initkey;

輸出 outdata。

1)

if 未進行過密鑰拓展

2)

keyExpansion(initkey);

3)

endif

2)

初始化狀態矩陣state;

2)

對狀態矩陣state進行輪密鑰加;

2)

for round=1 to 9

2)

對狀態矩陣state進行行移位;

2)

對狀態矩陣state進行字節代換;

2)

對狀態矩陣state進行列混合與輪密鑰加;

2)

endfor

2)

對狀態矩陣state進行行移位;

2)

對狀態矩陣state進行字節代換與輪密鑰加;

13)

輸出結果outdata。

在這一個版本的代碼中,與前一個版本最大的不同在于把加密操作的函數代碼都寫在頂層函數中,并且,除此之外,還把加密操作中的循環全部展開了,只保留有1到9輪加密操作的主循環。將循環展開是一種非常自然的優化方法,將循環展開之后,就可以發現表達式之間其實并不存在任何相關關系,此時就可以并行處理了,而不像先前受限于循環只能串行操作;而且又打破了函數之間界限,可以進一步提高并行處理的能力以提高數據吞吐量,而且也能優化資源的利用。

對于字節代換過程而言,狀態矩陣中的每一個元素通過S盒來進行替換。事實上,每個元素的替換過程沒有任何依賴關系,可以完全并行執行。而對于行移位操作而言,其在傳統設計中只需要改變連線就可以達到效果,而在本研究的設計中,只需要在字節代換過程中改變元素的賦值順序就可以了。對于列混合操作,從式(1)可以看出,狀態矩陣每一個新元素依賴于同一列的四個舊元素。因此,每一個新元素的計算是可以完全并行執行的。因此,循環展開是完全可以提高性能的。

aes_enc_v2方法所映射的總體結構如圖3所示。正如之前所言,在方法aes_enc_v2中,打破了循環與函數之間界限,而且,事實上AES算法本身具有非常良好的并行執行能力,許多表達式之間并沒有相關關系,完全可以并行處理,之前循環的串行執行則會強迫產生不必要的等待時間,增加整個加密過程的延時。由于此時打破了循環與子函數的限制,HLS工具可以在更廣的范圍內對一系列的操作進行調度優化,可以進一步提高AES加密算法的并行執行能力,從而進一步降低整個加密過程的延時與資源占用情況。

圖3 aes_enc_v2方法硬件模塊結構Fig. 3 Hardware module structure of aes_enc_v2

2.3 資源均衡

上述的兩個版本的代碼在很大程度上是依賴于表的查找,因為已經事先就計算好了一些運算操作的結果并存儲在數組中,而數組往往會被映射成RAM結構。對于RAM塊的需求會很大,而且頻繁訪問RAM塊會增加路徑延時,從而影響硬件的工作時鐘頻率[15],這對于進一步提升算法實現的性能是不利的。事實上,本文還可以對aes_enc_v2的列混合部分的代碼進行改寫。在域上的乘法乘以0x02等價于下列的結果:

(3)

因此,基于方法aes_enc_v2所做的改進而得到新一版的C語言算法設計。將這個第3版方法命名為aes_enc_v3。

對于aes_enc_v3方法映射成的硬件結構與圖3并沒有什么太大的不同,只是資源占用的情況不太一樣,其顯然要比aes_enc_v2方法的RAM少,但是由于運算增加,對LUT資源需求會增加一些。

2.4 流水線優化

本文的目標是追求高性能算法實現,因此有必要進一步提高數據吞吐率, 故必須要給硬件結構增加流水線設計以進一步提高吞吐量。而此時,可以利用HLS工具自帶的命令來幫助完成想要的硬件結構設計。本文利用HLS工具的流水線命令對aes_enc_v1、aes_enc_v2與方法aes_enc_v3進行流水線的優化;然后,增加流水線的設計可以大幅地增加硬件設計的吞吐量,利用流水線優化會自動展開循環進行優化調整,這樣可以進一步提高硬件實現的并行執行的能力,因此整個加密過程的延遲也可以進一步降低,當然,這會導致更大的資源占用情況。

圖4是設計aes_enc_v1第1輪到第9輪輪內的結構,而第10輪結構與其類似,只是少了列混合操作。

圖4 aes_enc_v1輪內流水結構

Fig. 4 Pipeline structure of aes_enc_v1 in one round

圖5是設計aes_enc_v1整個實現結構。對于方法aes_enc_v2與方法aes_enc_v3而言,其輪內輪外操作已經都糅合在一起。雖然總體操作過程與原始方法aes_enc_v1相同,然而其某些操作過程的順序已經被高層次綜合工具自動調度了。

圖5 aes_enc_v1整體流水結構

Fig. 5 Overview of pipeline structure of aes_enc_v1

3 實驗結果與分析

本研究使用Vivado集成開發環境中的HLS工具完成本文中的設計。實驗采用的FPGA器件是xc7z020clg484-1。首先對aes_enc_v1方法、aes_enc_v2方法和aes_enc_v3進行硬件綜合以了解其性能和利用情況。表1描述的是三種設計的性能評估。表2描述的是三種設計的資源利用情況(注:BRAM為Block RAM,FF為Filp-Flop,DSP為Digital Signal Processing,LUT為Look-Up Table)。

實驗中FPGA的時鐘約束均為100 MHz。方法aes_enc_v1受限于循環與子函數的限制,導致并行執行的能力沒有很好地發揮出來,因此比后兩者的延時要大很多。從表1可以看出,aes_enc_v1的延時是后兩者的11.7倍, 而方法aes_enc_v1與方法aes_enc_v2的延遲此時是一樣的。

表1 三種設計性能評估 時鐘周期Tab. 1 Performance evaluation of three designs clock cycle

此時再來查看三種設計對于資源的占用情況: 方法aes_enc_v1的對資源的占用從總體上看是最高的; 方法aes_enc_v2比方法aes_enc_v1在BRAM方面少用3塊RAM,在FF方面比其減少12.2%的資源使用,在LUT方面比其減少24.2%的資源使用;方法aes_enc_v3比方法aes_enc_v1在BRAM方面少用7塊RAM,在FF方面比其減少16.4%的資源使用,在LUT方面比其減少3.8%的資源使用; 而方法aes_enc_v2與方法aes_enc_v3在有相同的資源利用。

表2 三種設計資源占用情況Tab. 2 Resource occupancy of three designs

綜合表1與表2的實驗結果分析,方法aes_enc_v1的設計效果并不理想,不僅延時很高,而且資源的占用也是3種設計之中最高的。對于方法aes_enc_v2與方法aes_enc_v3來說,其無論是性能上還是資源占用上并沒有太大的不同,而之前預計方法aes_enc_v3要比方法aes_enc_v2延時要更低一些。這是因為受限于主循環的限制,加密模塊整體并行執行能力依舊受到了許多限制,訪問RAM所帶來額外的延時依舊有許多可以緩和的額外空間。總的來看,對于方法aes_enc_v1所進行的優化設計符合要求,達到了預期的效果。

然后,此時來查看對于方法aes_enc_v1、aes_enc_v2與aes_enc_v3進行流水線優化后其性能情況以及資源利用情況。表3描述的是三種設計進行流水優化的性能情況。表4描述的是三種設計進行流水優化后的資源利用情況。

從表3可以看出,添加了流水線之后,加密模塊的延時與吞吐量得到了很大的改進。方法aes_enc_v1流水線優化后的延時為原先的1.6%,方法aes_enc_v2流水線優化后的延時為原先的28.3%,而方法aes_enc_v3流水線優化后的延時僅為原先的19.2%。從吞吐量方面來看,對于方法aes_enc_v2與aes_enc_v3而言,若時鐘頻率均相同的情況下,進行流水線優化后其吞吐量是之前的100倍。對于方法aes_enc_v1而言則是1 157倍,而這也意味著與原始的基準設計相比,最終的性能提升了3個數量級。另外,可以看到方法aes_enc_v2與方法aes_enc_v3在延時上的區別,后者的延時比前者減少了32.1%。雖然方法aes_enc_v2申請了大量RAM資源以提高并行執行效率,減少資源沖突帶來性能損失,然而頻繁訪問RAM會增加延遲,從而影響加密模塊的工作頻率,這降低了硬件的吞吐量。其次,三種設計Interval均為1,也就意味著每個時鐘周期都可以輸入數據進行運算處理。事實上,當達到全流水線的架構時,吞吐量僅僅取決于時鐘頻率[8],其計算公式為:

throughput=blocksize×frequency

(4)

表3 流水線優化后性能評估時鐘周期Tab. 3 Performance evaluation with pipelining clock cycle

從表4可以看出,進行流水線優化后,對資源利用需求大幅提高。對于方法aes_enc_v1而言,進行流水線優化后對于RAM塊的需求是原先的24.4倍,對FF資源的需求是原先的17.7倍,對LUT的需求是原來的5.6倍;對于方法aes_enc_v2而言,進行流水線優化后對于RAM塊的需求是原先的34.9倍,對FF資源的需求是原先的4.3倍,對LUT的需求是原來的5.7倍;對于方法aes_enc_v3而言,進行流水線優化后對于RAM塊的需求是原先的33.3倍,對于FF的需求是原先的3.0倍,而對于LUT資源的需求是原來的7.0倍。

表4 流水線優化后資源占用情況Tab. 4 Resource occupancy with pipelining

對于完全依賴于高層次綜合工具進行優化的方法aes_enc_v1而言,其最終性能非常優越。其延時與方法aes_enc_v3相同,比方法aes_enc_v2還要低。這也說明過多地將邏輯內聯進頂層模塊事實上會降低性能。當然,此時可以看到方法aes_enc_v1對于資源的占用從總體上看是最大的。

綜合來看,雖然此時資源需求提高很多,然而,性能的提升更為顯著。最終,對于方法aes_enc_v1進行流水優化后時鐘頻率達到了127.06 MHz,吞吐量達到了16.26 Gb/s; 對于方法aes_enc_v2進行流水優化后,時鐘頻率達到121.65 MHz,吞吐量達到了15.57 Gb/s; 而對于方法aes_enc_v3進行流水優化后時鐘頻率達到了127.06 MHz,吞吐量達到了16.26 Gb/s。因此,可以看出,方法aes_enc_v3在本文所設計方法之中不僅具有最高的性能,而且還具有最優的資源占用。

表5為與具有代表性的傳統硬件設計的橫向比較。由于不同的設計基于的FPGA芯片有差異,為公平起見,采用性能面積比(吞吐率/電路資源數量)這一指標進行對比。

從表5可以看出,在性能面積比上,本文的設計比之前最好的實驗結果提升了44%。因此,本文的設計達到了較好的性能與資源需求之間的平衡,性能面積比是占有優勢的。事實上,對于算法的設計要考慮到實際應用的場景,不能一味地追求性能而不考慮到對于資源的需求、器件的成本等因素,需要綜合考慮各種因素,從而達到最優的結果。

表5 本文設計與傳統設計的比較Tab. 5 Comparison of v3_pipeline and traditional hardware designs

4 結語

在本文的設計中利用高層次綜合工具并采用高層次語言(C語言),描述底層的硬件設計,從而在較高的抽象層面上完成底層設計。在文中不斷探討如何優化C/C++層面的程序設計,并且也討論了其反映的硬件結構之間的區別。最終,本文完成了一個吞吐量高達16.26 Gb/s、資源需求僅為5 214 Slices的算法設計與實現,與原始的基準設計相比,最終的性能提升了3個數量級。

經過實驗表明,利用高層次綜合工具完成的設計可以與傳統FPGA硬件設計所達到的效果相媲美,而最關鍵之處在于,本文利用C/C++的高層次綜合工具來進行硬件設計的工作效率比傳統FPGA硬件設計的工作效率高了許多,而且入門門檻也大大降低。而這也意味著開發人員可以更加專注于應用的功能設計,減少對于底層的關注,并且借助于高層次綜合工具探索不同的方法,從而找到最優化的解決方案。

目前對于網絡安全性的要求也越來越高,更多的數據流量需要通過加密技術來保證傳輸。因而,高效、安全、穩定的加密算法的實現研究依舊是一個研究重點,這也是下一階段研究工作所重點追求的目標。

References)

[1] DAEMEN J, RIJMEN V. The Design of Rijndael[M]. New York: Springer-Verlag, 2002:31-50.

[2] 周軼男, 李曦, 馮朝陽. 高速全并行的AES加解密算法在單片FPGA上的實現[J]. 計算機應用, 2004, 24(S2):102-106. (ZHOU Y N, LI X, FENG C Y. An implementation of high-speed parallel AES algorithm on a single chip FPGA[J]. Journal of Computer Applications, 2004, 24(S2):102-106.)

[3] COUSSY P, TAKACH A. Guest editors’ introduction: raising the abstraction level of hardware design[J]. IEEE Design & Test, 2009, 26(4):4-6.

[4] 黨宏社, 王黎, 王曉倩. 基于 Vivado HLS 的 FPGA 開發與應用研究[J]. 陜西科技大學學報(自然科學版), 2015,33(1):155-159. (DANG H S, WANG L, WANG X Q. Development and application of FPGA based on Vivado HLS[J]. Journal of Shaanxi University of Science & Technology (Natural Science Edition), 2015,33(1):155-159. )

[5] MEURER R S, MüCK T R, FROHLICH A A. An implementation of the AES cipher using HLS[C]// Proceedings of the 2013 Ⅲ Brazilian Symposium on Computing Systems Engineering. Washington, DC: IEEE Computer Society, 2013:113-118.

[6] 孫桂玲, 紀永鑫, 張潺潺,等. 基于HLS技術的Rijndael算法IP核實現與優化[J]. 微電子學與計算機, 2010, 27(4):205-208. (SUN G L, JI Y X, ZHANG C C, et al. Implementation and optimization of Rijndael arithmetic IP core based on HLS technology[J]. Microelectronics & Computer, 2010, 27(4):205-208. )

[7] AHUJA S, GURUMANI S T, SPACKMAN C, et al. Hardware coprocessor synthesis from an ANSI C specification[J]. IEEE Design & Test of Computers, 2009, 26(4):58-67.

[9] HUSSAIN U, JAMAL H. An efficient high throughput FPGA implementation of AES for multi-gigabit protocols[C]// Proceedings of the 2012 10th International Conference on Frontiers of Information Technology. Piscataway, NJ: IEEE, 2012:215-218.

[10] RODRIGUEZ-HENRIQUEZ F, SAQIB N A, DAZ-PéREZ A. 4.2 Gbit/s single-chip FPGA implementation of AES algorithm[J]. Electronics Letters, 2003, 39(15): 1115-1116.

[11] MCLOONE M, MCCANNY J V. High performance single-chip FPGA Rijndael algorithm implementations[C]// Proceedings of the 3rd International Workshop on Cryptographic Hardware and Embedded Systems. London: Springer-Verlag, 2001:65-76.

[12] HENZEN L, FICHTNER W. FPGA parallel-pipelined AES-GCM core for 100 G Ethernet applications[C]// Proceedings of the 2010 European Solid-State Circuits Conference. Piscataway, NJ: IEEE, 2010:202-205.

[13] ZHOU G, MICHALIK H, HINSENKAMP L. Efficient and high-throughput implementations of AES-GCM on FPGAs[C]// Proceedings of the 2007 International Conference on Field-Programmable Technology. Piscataway, NJ: IEEE, 2008:185-192.

[14] ZHOU G, MICHALIK H, HINSENKAMP L. Improving throughput of AES-GCM with pipelined Karatsuba multipliers on FPGAs[C]// Proceedings of the 5th International Workshop on Reconfigurable Computing: Architectures, Tools and Applications. Berlin: Springer-Verlag, 2009:193-203.

[15] LIU Q, XU Z, YUAN Y. A 66.1 Gbps single-pipeline AES on FPGA[C]// Proceedings of the 2013 International Conference on Field-Programmable Technology. Piscataway, NJ: IEEE, 2013:378-381.

[16] PUB N F. Announcing the Advanced Encryption Standard (AES)[S/OL].[2016-05-20]. http://www.just.edu.jo/~tawalbeh/cpe542/slides/aes/fips-197.pdf.

[17] 楊海鋼, 孫嘉斌, 王慰. FPGA器件設計技術發展綜述[J]. 電子與信息學報, 2010, 32(3):714-727. (YANG H G, SUN J B, WANG W. An overview to FPGA device design technologies[J]. Journal of Electronics & Information Technology, 2010, 32(3):714-727. )

[18] 田耘,胡彬,徐文波. Xilinx ISE Design Suite 10.x FPGA開發指南: 邏輯設計篇[M]. 北京: 人民郵電出版社, 2008: 8-12. (TIAN Y, HU B, XU W B. Xilinx ISE Design Suite 10.x FPGA Development Guide: Logic Design[M]. Beijing: Posts and Telecom Press, 2008: 8-12.)

This work is partially suuported by the Youth Science Fund of National Natural Science Foundation of China (61402475), the Xinjiang Uygur Autonomous Region Science and Technology Project (201230123).

ZHANG Wang, born in 1992, Ph.D. candidate. His research interests include information security, computer architecture.

JIA Jia, born in 1981, Ph. D., engineer. His research interests include communication and information engineering.

MENG Yuan, born in 1983, M.S. candidate. His research interests include information security.

BAI Xu, born in 1990, Ph.D. candidate. His research interests include information security, computer architecture.

Research and design of AES algorithm based on high-level synthesis

ZHANG Wang1,2*,JIA Jia3, MENG Yuan1,2,BAI Xu1,2

(1.InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093,China;2.NationalEngineeringLaboratoryofInformationSecurityTechnologies,Beijing100093,China;3.BeijingSpecialEngineeringDesignandResearchInstitute,Beijing100028,China)

Due to the increasingly high performance requirements on the Advanced Encryption Standard (AES) algorithm which was widely used, software-based cryptographic algorithms have been increasingly difficult to meet the demands of high-throughput ciper cracking. As a result, more and more encryption algorithms have been accelerated by using Field-Programmable Gate Array (FPGA) platform. Focused on the issue that the development of AES algorithm based on FPGA has high complexity and long development cycle, with High-Level Synthesis (HLS) design methodologies, AES hardware acceleration algorithm was designed by using high-level programming language. Firstly, loop unrolling, etc were used to improve operation parallelism. Secondly, to make full use of on-chip memory and circuit resources, the resource balance optimization technology was used. Finally, the full pipeline structure was added to improve the clock frequency and throughput of the overall design. The detailed analysis and comparison of the benchmark design and different optimized designs with structural expansion, resource balance and pipeline were decribed. The experimental results show that the clock frequency of AES algorithm is up to 127.06 MHz and the throughput eventually achieves 16.26 Gb/s on Xilinx xc7z020clg484 platform, compared with the benchmark AES design, performance increases by three orders of magnitude.

symmetric key encryption algorithm; Advanced Encryption Standard (AES); High-Level Synthesis (HLS); Field-Programmable Gate Array (FPGA)

2016-09-12;

2016-11-27。

國家自然科學基金青年科學基金資助項目(61402475);新疆自治區科技專項(201230123)。

張望(1992—),男,江西南昌人,博士研究生,主要研究方向:信息安全、計算機體系結構; 賈佳(1981—),男,北京人,工程師,博士,主要研究方向:通信與信息工程; 孟淵(1983—),男,甘肅高臺人,碩士研究生,主要研究方向:信息安全; 白旭(1990—),男,遼寧喀左人,博士研究生,主要研究方向:信息安全、計算機體系結構。

1001-9081(2017)05-1341-06

10.11772/j.issn.1001-9081.2017.05.1341

TP309.7

A

猜你喜歡
優化資源方法
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
基礎教育資源展示
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
一樣的資源,不一樣的收獲
資源回收
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 久久动漫精品| 亚洲高清无码久久久| 成人91在线| 欧美狠狠干| 91精品国产麻豆国产自产在线| 好吊色妇女免费视频免费| 国产激情在线视频| 亚洲国产一区在线观看| 2021国产精品自产拍在线| 日韩精品毛片人妻AV不卡| 成人精品视频一区二区在线| 久久香蕉国产线看精品| 国产精品无码AV中文| 亚洲女人在线| 九一九色国产| 亚洲天堂网在线播放| 8090成人午夜精品| 男女男精品视频| 美女免费黄网站| 再看日本中文字幕在线观看| 黄片一区二区三区| 91高清在线视频| 色欲综合久久中文字幕网| 欧美曰批视频免费播放免费| 国产熟女一级毛片| 中文字幕va| 亚洲日韩国产精品无码专区| 一级毛片基地| 亚洲熟女偷拍| 久久久久亚洲AV成人网站软件| 国产高清在线观看| 天堂在线视频精品| 久操中文在线| 成人无码一区二区三区视频在线观看 | 热思思久久免费视频| 欧美 国产 人人视频| 一级一级一片免费| 国产欧美另类| AV在线天堂进入| 蜜桃视频一区| 成人午夜精品一级毛片| 亚洲精品在线影院| 欧美区一区| 亚洲人成人无码www| 91啦中文字幕| 狠狠做深爱婷婷综合一区| 特级毛片8级毛片免费观看| 亚洲色图在线观看| 毛片网站免费在线观看| 亚洲一区网站| 2021国产乱人伦在线播放| 久久久精品无码一二三区| 亚洲欧洲一区二区三区| 日日噜噜夜夜狠狠视频| 国产在线观看第二页| 国产视频只有无码精品| 天天躁狠狠躁| 97青草最新免费精品视频| 成人一区在线| 久久免费成人| 黄色片中文字幕| 欧美自慰一级看片免费| 97视频在线精品国自产拍| 一本无码在线观看| 国产视频a| 美女视频黄频a免费高清不卡| 日韩小视频在线观看| 久久精品丝袜高跟鞋| 久草热视频在线| 91精品专区| 青青草91视频| 99视频国产精品| 最新国语自产精品视频在| 夜夜拍夜夜爽| 国产成人精品一区二区三在线观看| 亚洲国产精品日韩av专区| 成年A级毛片| 国产浮力第一页永久地址 | 婷婷99视频精品全部在线观看| 久久特级毛片| 四虎永久在线精品影院| 国产乱子伦视频三区|