摘 要:隨著大數(shù)據(jù)的發(fā)展及加密場景的增多,僅以軟件運行的加密方式難以滿足加密性能的需求;而使用Verilog/VHDL方式實現(xiàn)的FPGA/ASIC加密系統(tǒng)又存在靈活性較差、維護升級困難等問題。針對上述問題,設計并實現(xiàn)了一種基于異構可重構計算的AES算法加密系統(tǒng),包含了AES算法ECB、CBC、CTR三種主流模式,每種模式實現(xiàn)了128 bit、192 bit、256 bit三種密鑰大小的加密。基于FPGA對模塊分別進行了硬件加速,同時基于硬件可重構機制實現(xiàn)了不同模式及不同位寬加密模塊的動態(tài)切換。通過在Intel Stratix 10上實現(xiàn)并驗證該系統(tǒng),實驗結果表明:系統(tǒng)中AES-ECB、AES-CTR、AES-CBC吞吐率分別達到116.43 Gbps、60.34 Gbps、4.32 Gbps,ECB模式相比于Intel Xeon E5-2650 V2 CPU和NVIDIA GeForce GTX 1080 GPU分別獲得了23.18倍與1.43倍的加速比,整體系統(tǒng)相比純軟件方式的計算加速比達到4.72。
關鍵詞:現(xiàn)場可編程門陣列;異構可重構;加密算法;高級加密標準;并行
中圖分類號:TP338.6 文獻標志碼:A
文章編號:1001-3695(2022)07-036-2143-06
doi:10.19734/j.issn.1001-3695.2021.12.0651
基金項目:國家自然科學基金資助項目(61972180)
作者簡介:聶一(1997-),女(滿族),河北承德人,碩士研究生,主要研究方向為計算機體系結構;鄭博文(1996-),男,甘肅蘭州人,碩士研究生,主要研究方向為計算機體系結構;柴志雷(1975-),男(通信作者),山西人,教授,博士,主要研究方向為計算機體系結構(zlchai@jiangnan.edu.cn).
AES encryption system based on heterogeneous reconfigurable computing
Nie Yi1a,Zheng Bowen1a,Chai Zhilei1b,2?
(1.a.School of Internet of Things Engineering,b.School of Artificial Intelligence amp; Computer Science,Jiangnan University,Wuxi Jiangsu 214122,China;2.Jiangsu Provincial Engineering Laboratory of Pattern Recognition amp; Computational Intelligence,Wuxi Jiangsu 214122,China)
Abstract:With the development of big data and the increase of encryption scenarios,it’s difficult to meet the requirements of encryption performance with only software-run encryption methods,and FPGA/ASIC encryption systems implemented using Verilog/VHDL methods have poor flexibility and difficult maintenance and upgrades problem.In response to the above problems,this paper designed and implemented an AES algorithm encryption system based on heterogeneous reconfigurable computing,including three mainstream modes of AES algorithm ECB,CBC,CTR,each mode realized 128 bit,192 bit,256 bit encryption of three key sizes.This paper realized the hardware acceleration of the module based on FPGA,and realized the dynamic switching of different modes and different bit width encryption modules based on the hardware reconfigurable mechanism.By implementing and verifying the system on Intel Stratix 10,the experimental results show that the throughput rates of AES-ECB,AES-CTR and AES-CBC in the system are 116.43 Gbps,60.34 Gbps,and 4.32 Gbps,respectively.The ECB mode compared with Intel Xeon E5-2650 V2 CPU and NVIDIA GeForce GTX 1080 GPU achieves 23.18 times and 1.43 times acceleration ratios respectively.Compared with the method just calling the CPU,the overall system has a computational acceleration ratio of 4.72.
Key words:FPGA;heterogeneous reconfigurable;encryption algorithm;AES;parallel
0 引言
AES(advanced encryption standard)是美國國家標準與技術研究所(NIST)于1997年選定的標準對稱加密算法[1],目前廣泛應用于信息傳輸與信息存儲領域。由于信息傳輸與存儲對于即時性的要求,運算速度成為了一個重要的指標。對于數(shù)據(jù)量較大的加密任務來說,僅以軟件方式計算的吞吐率無法滿足速度需求。
為實現(xiàn)高效AES計算,國內外的研究多引入FPGA進行硬件實現(xiàn)。Shahbazi等人[2]提出了AES-128的并行處理和流水線的硬件架構,在字節(jié)代換中應用了逆同構仿射變換并將列混合分為兩個不同階段,實現(xiàn)了小面積、高吞吐率的算法結構;Abdul-Karim等人[3]提出了一種AES-192的FPGA實現(xiàn),針對其中列混合、S盒變換過程采用循環(huán)展開、全流水和子流水線等技術,實現(xiàn)了54.52 Gbps的高吞吐量和425.996 MHz的最大工作頻率。然而,基于FPGA的AES算法加速工作大多僅實現(xiàn)了一種特定模式,無法滿足不同級別安全性的需求。因此,Anirudh等人[4]通過創(chuàng)建動態(tài)可重構系統(tǒng),實現(xiàn)了三種密鑰大小的AES,利用FPGA的可重構特性配置控制模塊,按需加載不同的AES版本,從而提高硬件利用率,但其僅利用動態(tài)可重構系統(tǒng)實現(xiàn)了128、192、256 三種不同的密鑰大小,未涉及多模式的實現(xiàn)。Silitonga等人[5]利用AP-SoC芯片使用高層次綜合工具HLS建立可重構系統(tǒng),將部分加密模塊打包為IP核,通過PS端控制FPGA部分重構,實現(xiàn)了AES-CBC、AES-XTS、AES-OFB、AES-CTR、AES-CFB五種模式,但其為兼容五種模式的架構僅進行部分重構,加密吞吐率較低,僅能達到Mbps級別。
綜上所述,針對AES,既高效又靈活的計算方法和系統(tǒng)依然是一個值得深入研究的問題。隨著大數(shù)據(jù)的發(fā)展及加密場景的增多,這一需求更加凸顯。因此,本文基于異構可重構計算設計并實現(xiàn)了一種AES高效計算系統(tǒng),既充分利用FPGA對特定模塊進行硬件加速,又可以在軟件控制下對不同的硬件模塊進行在線動態(tài)重構,使系統(tǒng)兼具靈活性與高性能。
本文實現(xiàn)了AES-ECB、AES-CTR、AES-CBC三種模式,以及每種模式的128 bit、192 bit、256 bit三種密鑰大小的加密計算。對FPGA中算法部分邏輯采用查找表優(yōu)化,并使用流水線、循環(huán)展開、調整內存結構、內核矢量化與多計算單元結合等加速方式。系統(tǒng)使用多內核隊列的方式調度FPGA動態(tài)重構實現(xiàn)模式在線切換。最終系統(tǒng)在Intel Stratix 10 GX 2800上實現(xiàn)了AES-ECB、AES-CTR、AES-CBC,達到116.43 Gbps、65.67 Gbps、4.32 Gbps的吞吐率,同時,通過可重構技術使得系統(tǒng)整體相比軟件方式獲得了4.72的加速比。
1 AES算法
AES為分組加密算法,其標準包括ECB、CTR、CBC、CFB、OFB五種模式。其中ECB與CTR模式中加密組之間無數(shù)據(jù)依賴,可以較方便地在FPGA中實現(xiàn)并行計算,提高處理性能[6,7]。CBC、CFB與OFB模式中加密組之間存在數(shù)據(jù)依賴問題,難以用全并行架構對其加速[5]。雖然可以借助流水方式進行加速,但CFB與OFB模式計算流程的控制復雜,不利于流水線效率的發(fā)揮,更適合在異構系統(tǒng)中的處理器部分實現(xiàn)[2],因此這里不再贅述。本文重點討論ECB、CTR、CBC模式的實現(xiàn)。
作為分組加密算法,AES將待加密的數(shù)據(jù)分為16 Byte一組進行分組處理,每組明文寫為一個4×4的狀態(tài)矩陣,根據(jù)密鑰的大小不同進行10~14輪迭代。每一輪迭代包括字節(jié)代換、行移位、列混合、輪密鑰加四個步驟,最后一輪不進行列混合操作。輸入的初始密鑰則經(jīng)過字循環(huán)、字節(jié)代換、輪常量異或步驟進行擴展后參與輪密鑰加運算。計算流程如圖1所示。
輪密鑰加過程為數(shù)據(jù)的狀態(tài)矩陣同128 bit輪密鑰進行逐位異或運算。字節(jié)代換過程依據(jù)結合了有限域乘法逆元及可逆的仿射變換矩陣構造的S盒序列,對數(shù)據(jù)的狀態(tài)矩陣進行字節(jié)置換[8]。置換過程為先對該字節(jié)求取有限域內的乘法逆g(b),之后對乘法逆進行可逆的仿射變換f[g[b]],如A=b7b6b5b4b3b2b1,置換后變?yōu)?/p>
行移位過程對數(shù)據(jù)狀態(tài)矩陣的每一行進行循環(huán)移位,第0~3行分別左移0~3 Byte。列混合過程將數(shù)據(jù)的每一列視為有限域GF(28)上的一個多項式,基于有限域GF(28)中的乘法、加法以及矩陣相乘實現(xiàn)[9]。第i列狀態(tài)矩陣(0≤i≤3)的列混合操作可以用式(3)~(6)表示。
三種模式的主體運算過程相同,只有數(shù)據(jù)塊與數(shù)據(jù)塊之間的數(shù)據(jù)處理不同,其加密流程分別如圖2(a)~(c)所示。
ECB模式數(shù)據(jù)塊與數(shù)據(jù)塊之間的加密沒有數(shù)據(jù)依賴,每一個數(shù)據(jù)塊分別進行10~14輪的迭代后生成密文塊,并拼接組成密文。
CBC模式引入初始化向量,每個明文塊的輸入與上一個明文塊迭代后的輸出密文塊進行異或運算后進行10~14輪的迭代加密流程,導致了數(shù)據(jù)依賴問題,不利于并行流水。
CTR模式引入了一個隨機的自增算子,每個自增算子分別進行10~14輪的加密迭代流程后與明文塊異或得到密文塊。自增算子是隨機選擇引入的,即使重復的明文塊用相同密鑰加密結果也不相同,保證了加密的安全性。
因三種模式明文塊間的數(shù)據(jù)處理方式不同,一套固定架構無法很好地兼容三種模式。本文對AES算法三種模式分別進行軟硬件架構設計,并設置其中相同的計算部分為可復用資源,利用動態(tài)可重構系統(tǒng)進行實現(xiàn)。
2 基于Intel FPGA的異構可重構系統(tǒng)
Intel FPGA 可重構異構架構如圖3所示。Intel FPGA 異構可重構系統(tǒng)中,CPU與FPGA通過PCIe總線連接,實現(xiàn)數(shù)據(jù)與命令交互。CPU對FPGA加速單元進行調度,F(xiàn)PGA應對不同應用需求在線動態(tài)重構硬件模塊,實現(xiàn)計算加速。該架構支持單CPU控制多個FPGA加速設備,可以構建更大的異構計算平臺。
FPGA內部包括靜態(tài)配置區(qū)與動態(tài)可重構區(qū)。靜態(tài)配置區(qū)中PCIe模塊、DMA控制器等模塊提供PCIe通信接口作為CPU與FPGA之間的通信管道;存取控制結構模塊提供CPU與FPGA的全局內存訪問,為動態(tài)可重構區(qū)內算法實現(xiàn)的kernel IP提供接口。
動態(tài)可重構區(qū)中將具體算法模塊寫為多個kernel IP,根據(jù) CPU的控制指令調用kernel。當應用場景改變,需要切換計算模式時,CPU可通過PCIe通道下發(fā)新的kernel IP與FPGA可執(zhí)行文件,實時重新配置動態(tài)可重構區(qū)。此過程無須FPGA加速單元重啟,整個重配過程耗時為毫秒級[10]。
3 異構可重構AES計算系統(tǒng)設計
3.1 整體系統(tǒng)架構設計
3.1.1 異構設計
AES算法密鑰大小與加密模式由CPU端定義,明文填充及密鑰擴展由CPU執(zhí)行,通過PCIe總線將數(shù)據(jù)、規(guī)定密鑰大小與加密模式參數(shù)傳輸?shù)紽PGA,CPU調度FPGA重構進行計算。異構計算設計如圖4所示。
由于在加密過程中每一組明文塊的密鑰都相同,只進行一次密鑰擴展的計算量較小,為節(jié)省FPGA硬件資源,由CPU完成密鑰擴展模塊。
明文填充模塊則需要根據(jù)不同的選擇改變填充方式,所以在CPU端填充至16 Byte整數(shù)倍后再傳輸至FPGA分組計算。
FPGA執(zhí)行計算算法主要迭代部分,將待處理數(shù)據(jù)分為16 Byte的明文塊分段計算。每個明文塊根據(jù)密鑰大小進行10~14輪循環(huán)迭代計算,每一輪迭代包括輪密鑰加、字節(jié)代換、行位移、列混合四個過程。FPGA中設計CTR模式的算子自增預計算模塊,將加密每個明文塊的自增算子預先計算,解決每一輪計算前進行一次自增的計算延遲與數(shù)據(jù)依賴問題。
3.1.2 可重構設計
三種模式都存在不同的數(shù)據(jù)塊處理模塊,且每一種模式根據(jù)128 bit、192 bit、256 bit三種不同的密鑰大小迭代輪數(shù)也不同。但每一輪迭代的輪密鑰加、字節(jié)代換、行位移、列混合四個過程都是相同的,所以將迭代過程設計為可復用的結構,數(shù)據(jù)塊間不同的處理以及算子自增模塊設計為重構模塊??芍貥嬙O計如圖5所示。
AES算法的三種模式調用相同的迭代模塊,CTR和ECB模式明文塊間的計算相互獨立,采用并行計算;CBC模式由于下一個明文塊的計算需要先與上一個明文塊的結果異或,存在數(shù)據(jù)依賴問題,所以數(shù)據(jù)塊間串行計算。
3.2 核心計算邏輯設計
針對每一輪迭代中的字節(jié)代換、列混合操作添加適合FPGA操作的查找表進行簡化,可以減少硬件復雜度,有效提升電路實現(xiàn)效率。
字節(jié)代換需要計算有限域GF(28)上的乘法逆與仿射變換[11],但因數(shù)據(jù)量較小,目前多使用查找表將128 bit數(shù)據(jù)分為16組進行16次查表計算。每一組數(shù)據(jù)中的高4 bit和低4 bit數(shù)據(jù)分別作為行數(shù)和列數(shù)查表,雖然每一組都要進行16次查表,但本文中將16次查表并行計算,簡化電路結構的同時提升計算效率。列混合操作將數(shù)據(jù)的每一列視為有限域GF(28)上的一個多項式,基于有限域GF(28)中的乘法、加法以及矩陣相乘實現(xiàn)[8]。列混合是AES計算步驟中計算復雜度最高的模塊,也是主要的擴散操作,按照傳統(tǒng)邏輯實現(xiàn)的電路復雜度較高。計算中首先將4×4數(shù)據(jù)的每一列4×1列向量在有限域GF(28)左乘由01、02、03組成的4×4固定矩陣,然后將結果拼接得到所求結果為
同樣將列混合操作轉換為部分使用查找表的計算形式。建立包括有限域GF(28)內數(shù)據(jù)與固定矩陣乘法運算的256×6 Byte查找表;并將列混合運算轉換為對狀態(tài)矩陣中的數(shù)據(jù)進行適合FPGA計算的并行查表、異或、循環(huán)移位運算,提高硬件執(zhí)行效率。
4 基于OpenCL的AES系統(tǒng)實現(xiàn)
4.1 異構并行計算框架OpenCL
AES可重構系統(tǒng)的實現(xiàn)基于異構并行計算框架OpenCL,實現(xiàn)包括主程序以及kernel兩部分,主程序是host端程序,以標準C/C++編寫,運行于CPU處理器。OpenCL kernel采用標準C編寫,host端程序使用OpenCL API,支持將數(shù)據(jù)傳送至FPGA調用kernel并行運算,傳回得到的數(shù)據(jù)。
Intel FPGA SDK通過離線編譯器編譯OpenCL kernel以創(chuàng)建優(yōu)化硬件鏡像,編譯器將kernel轉換為Verilog形式后通過Quartus Ⅱ軟件編譯為二進制鏡像,程序運行時加載至FPGA硬件[12]。
FPGA kernel啟動后會調用大量工作項并行執(zhí)行內核,系統(tǒng)中的每個AES kernel可以同時應用于多個執(zhí)行通路,形成流水線架構,在本質上就是多線程的。算法的每個實例稱為一個工作項,多個執(zhí)行同一任務的工作項組成一個工作組,每個工作組中的工作項在一個計算單元中并行執(zhí)行。
OpenCL將內存抽象定義為主機內存(host memory)、全局內存(global memory)、常量內存(constant memory)、本地內存(local memory)和私有內存(private memory)[13]。根據(jù)五種內存所映射的內存區(qū)域不同,內存大小、吞吐率和共享范圍有所不同。OpenCL內存模型如表1所示。
4.2 基于FPGA的架構實現(xiàn)
將FPGA中AES算法一種模式的計算設計為一個OpenCL kernel,將kernel中的一個工作項的行為設計為對一組16 Byte明文的加密,多個工作項執(zhí)行通路形成流水線并行計算架構,并行處理多組明文。針對一個工作項中的FPGA實現(xiàn)包括數(shù)據(jù)輸入緩存、算法加密模塊以及密文數(shù)據(jù)輸出緩存三個模塊。其中數(shù)據(jù)輸入緩存從DDR讀取數(shù)據(jù);AES加密模塊完成AES算法的加密計算;密文數(shù)據(jù)輸出緩存模塊從FPGA將數(shù)據(jù)傳輸回DDR中。
4.2.1 加密模塊實現(xiàn)
算法加密模塊如圖6所示。通過多工作項采用流水線并行架構,將一個工作項的計算設計為對一組明文進行10~14輪輪密鑰加、字節(jié)代換、行位移、列混合四個過程的迭代,CTR與CBC模式還包括算子自增或異或模塊。迭代輪數(shù)因密鑰大小不同而有所不同,將全部輪密鑰預先計算生成,存儲于本地內存的FPGA片上存儲器中由所有工作項共享,輪密鑰加的計算過程中使用輪密鑰時訪問對應存儲器。
其中每一輪迭代都需進行的字節(jié)代換操作包括基于S盒查找表進行16次查表計算,列混合操作包括基于T盒進行24次查找表運算。為防止訪存沖突,將生成的查找表作為常量存儲于常量內存片上ROM,由AES狀態(tài)矩陣中的每一位并行查表計算。對行移位模塊中的循環(huán)左移與輪密鑰加中的按位異或操作通過指令流進行循環(huán)展開,令編譯器生成多組單次迭代所需的硬件結構以并行計算,大大縮減了迭代運算的時間。
4.2.2 輸入輸出模塊
輸入/輸出數(shù)據(jù)流向如圖7所示。密鑰、自增算子與隨機IV值為所有工作項共用的數(shù)據(jù),僅進行一次由全局內存緩沖區(qū)到本地內存片上存儲器的傳輸。結合AES算法輸入輸出明文密文長度為128 bit,將一個工作項處理的數(shù)據(jù)位寬設置為16 Byte。針對明文數(shù)據(jù)讀取與密文數(shù)據(jù)存儲使用循環(huán)展開,將對內存數(shù)據(jù)的16次store與load合并為一次更寬的store與load操作。
4.2.3 多模式AES算法的OpenCL實現(xiàn)
多模式的實現(xiàn)如圖8所示。為完成三種模式計算,三種模式分別寫為三個kernel,每個kernel調用相同的迭代模塊。設置三個工作組,每個工作組分別實現(xiàn)一種AES模式,一個工作組中的工作項通過本地內存進行數(shù)據(jù)共享。三個工作組不存在數(shù)據(jù)交互,可分別獨立計算。其中CBC模式因存在明文塊計算間的數(shù)據(jù)依賴所以采用單工作項,僅實現(xiàn)單次迭代中字節(jié)代換、行移位、列混合、輪密鑰加中的部分并行結構。
4.2.4 內核矢量化與多計算單元
上文已經(jīng)提到,本文將ECB與CTR模式的一個明文塊的加密計算映射到一個工作項,并在運行時將這些工作項映射到低層硬件,多個工作項并行計算組成一個工作組。在此基礎上可以通過單指令多數(shù)據(jù)(SIMD)的方式執(zhí)行每個工作組中的工作項,改變單個工作組中并行執(zhí)行的工作量以提高系統(tǒng)的計算效率[12]。每個SIMD矢量通道共享控制邏輯,復制計算單元的數(shù)據(jù)路徑。設置寬SIMD單元的目標是高效地合并動態(tài)內存訪問,且增大每個工作項的工作量。
與此同時為了實現(xiàn)更高的吞吐率,建立多個計算單元(CU),實現(xiàn)多個工作組并行計算,并且每個計算單元中可以同時存在多個矢量化通道[14]。但引入多個計算單元會導致內存競爭問題,且多計算單元和內核矢量化都是以增加硬件資源為代價的。所以更適合的方案是將內核矢量化與計算單元復制兩種方式結合,通過實驗確定最佳的矢量化通道數(shù)和計算單元數(shù)組合。
為兩種模式合理分配資源,ECB與CTR模式都使用寬度為8的矢量化通道與2個計算單元,能夠在計算效率和使用資源上取得較好的平衡。內核矢量化與多計算單元設計如圖9所示。
4.3 系統(tǒng)調度
AES可重構系統(tǒng)中,CPU不僅完成模式密鑰選擇與部分串行計算,還要進行系統(tǒng)的調控,本文將系統(tǒng)調控分為三部分進行說明:第一部分是初始化步驟,包括獲取平臺、獲取設備、創(chuàng)建上下文、創(chuàng)建kernel程序等過程[15],這部分是OpenCL執(zhí)行的固定流程,無須其他設計;第二部分包括創(chuàng)建命令隊列,讀取、編譯、生成kernel,創(chuàng)建kernel對象、設置kernel參數(shù),執(zhí)行kernel四個步驟;第三部分則是讀取結果以及釋放內存資源。
主機端調度流程如圖10所示。設計主要針對第二部分,創(chuàng)建三個命令隊列,將執(zhí)行三種不同模式kernel的命令放到不同命令隊列中,分別用來調用AES算法不同模式的三個kernel,命令隊列與命令隊列之間是可并發(fā)的進程關系。當確定AES的模式與密鑰大小之后,調用相應模式的命令隊列選擇相應kernel并設置kernel參數(shù),之后將數(shù)據(jù)復制到kernel中并通過PCIe下發(fā)數(shù)據(jù),最后配置可重構資源執(zhí)行kernel完成加密。
5 實驗結果及分析
5.1 實驗環(huán)境
本文使用軟件Intel FPGA SDK for OpenCL 19.3版本OpenCL,軟件環(huán)境為CentOS Linux release7.7.1908與GCC V4.8.5。硬件平臺為Intel Xeon E5-2650 V2 CPU和Intel Stratix 10 G2800 FPGA。
5.2 實驗結果
本文進行了一系列實驗測試FPGA Kernel與系統(tǒng)整體性能,AES算法密鑰大小選擇256 bit進行實驗。對KB級的小數(shù)據(jù)量明文以及MB級大數(shù)據(jù)量的明文進行加密測試。
5.2.1 FPGA測試結果
實現(xiàn)單工作組架構調整后,通過設置SIMD為單工作組建立多矢量化通道,并建立多個計算單元執(zhí)行多工作組,通過實驗確定最佳的矢量化通道數(shù)與計算單元數(shù)。
表2的實驗結果表明,矢量化通道數(shù)為8,計算單元數(shù)為2時可以在性能與資源方面取得較好的平衡,且內核矢量化相對能取得更好的加速效果。
以16 KB~512 MB的數(shù)據(jù)為例,描述了本文中FPGA并行kernel的吞吐率變化。從圖11可以看出,數(shù)據(jù)量由KB級到8 MB時FPGA吞吐率逐漸增加,大于8 MB后FPGA吞吐率趨于穩(wěn)定。
如表3所示,文獻[6,16]為使用OpenCL在CPU-GPU平臺實現(xiàn)的兩種并行kernel吞吐率,文獻[3,17,18]為采用Verilog/VHDL的FPGA設計。
本文基于OpenCL在FPGA實現(xiàn)了AES并行kernel的設計,相比于文獻[6,16],基于GPU的OpenCL kernel性能有較明顯的提升。FPGA部分設計為多工作項并行計算模式,針對字節(jié)代換與列混合模塊使用查找表計算,調整數(shù)據(jù)存儲結構并采用循環(huán)展開、內核矢量化與計算單元結合的方式,相比文獻[3,17,18]采用Verilog/VHDL的FPGA設計有更高的吞吐率。
圖12結合Intel Xeon E5-2650 V2 CPU和NVIDIA GeForce GTX 1080 GPU平臺展示了本文AES算法的FPGA加速效果。
由圖12可知,本文基于OpenCL的AES算法實現(xiàn)方案相比于CPU性能提升了23.18倍,相比于GPU性能提升了1.43倍。
5.2.2 系統(tǒng)整體性能
對于系統(tǒng)整體來說,幾種模式加速效果基本一致,故采用加密算法標準庫中最經(jīng)典的AES-ECB為例對異構可重構系統(tǒng)整體性能進行測試,并調用OpenSSL標準加密庫源碼對相同數(shù)據(jù)加密進行純軟件對比。表4描述了本文的系統(tǒng)整體耗時,包含了OpenCL程序運行的所有時間,包括OpenCL初始化啟動時間、CPU和FPGA間的數(shù)據(jù)傳輸以及kernel運行時間[19]。
當加密數(shù)據(jù)小于8 MB時,系統(tǒng)運行時間主要用于OpenCL的初始化及創(chuàng)建kernel等啟動流程;當數(shù)據(jù)量較大時,時間主要用于數(shù)據(jù)傳輸和kernel計算,當明文數(shù)量級在百MB級別時,系統(tǒng)整體運算效率隨數(shù)據(jù)量增大而逐漸增大。測試明文為128 MB時重構系統(tǒng)所用時間占比,結果如表5所示。可以看出,相比于系統(tǒng)中CPU與FPGA的數(shù)據(jù)傳輸時間以及kernel運算時間,系統(tǒng)重構時間占比較小。
圖13為調用OpenSSL標準庫源碼的純軟件系統(tǒng)與可重構異構系統(tǒng)的加密時間對比。由圖13可見,在明文長度較大時,本文的可重構系統(tǒng)加密效率遠大于純軟件加密,加速比為4.72;明文長度較小時,因可重構系統(tǒng)需要初始化以及創(chuàng)建命令隊列、傳輸buffer等調度準備時間,性能提升不明顯。
6 結束語
本文基于異構可重構計算設計了一種多模式AES加密系統(tǒng),為一些對大量隱私敏感數(shù)據(jù)加密的場景提供了解決方案。證明異構可重構平臺可以實現(xiàn)一類多模式的加密算法,并在性能與靈活性方面達到較好的平衡。為進一步提高系統(tǒng)的通用性,后續(xù)將進一步應用異構可重構平臺針對非對稱加密算法進行設計,并實現(xiàn)對稱加密算法與非對稱加密算法混合的混合加密系統(tǒng),提供更強的安全性與更多的適用場景。
參考文獻:
[1]Dobbertin H,Knudsen L,Robshaw M,et al.Advanced encryption standard—AES[J].Lecture Notes in Computer Science,2005,3373(8):2200-2203.
[2]Shahbazi K,Ko S B.High throughput and area-efficient FPGA implementation of AES for high-traffic applications[J].IET Computers amp; Digital Techniques,2020,14(6):344-352.
[3]Abdul-Karim M S,Rahouma K H,Nasr K.High throughput and fully pipelined FPGA implementation of AES-192 algorithm[C]//Proc of International Conference on Innovative Trends in Communication and Computer Engineering.Piscataway,NJ:IEEE Press,2020:137-142.
[4]Anirudh P S,Lalu V.Implementation of reconfigurable data encryption technique using different AES versions[C]//Proc of International Conference on Power,Instrumentation,Control and Computing.Pisca-taway,NJ:IEEE Press,2020:1-6.
[5]Silitonga A,Jiang Zhou,Khan N,et al.Reconfigurable module of multi-mode AES cryptographic algorithms for AP SoCs[C]//Proc of IEEE Nordic Circuits and Systems Conference:NORCHIP and International Symposium of System-on-Chip (SoC).Piscataway,NJ:IEEE Press,2019:1-7.
[6]Sanida T,Sideris A,Dasygenis M.Accelerating the AES algorithm using OpenCL[C]//Proc of the 9th International Conference on Modern Circuits and Systems Technologies.Piscataway,NJ:IEEE Press,2020:1-4.
[7]Rao M,Kaknjo A,Omerdic E,et al.An efficient high speed AES implementation using traditional FPGA and LabVIEW FPGA platforms[C]//Proc of International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery.Piscataway,NJ:IEEE Press,2018:93-937.
[8]夏春林,周德云,張堃.AES算法的CUDA高效實現(xiàn)方法[J].計算機應用研究,2013,30(6):1907-1909.(Xia Chunlin,Zhou Deyun,Zhang Kun.CUDA based high-efficiency implementation of AES algorithm[J].Computer Engineering and Application,2013,30(6):1907-1909.)
[9]Yadav D,Rajawat A.Area and throughput analysis of different AES architectures for FPGA implementations[C]//Proc of IEEE International Symposium on Nanoelectronic and Information Systems.Pisca-taway,NJ:IEEE Press,2016:67-71.
[10]彭福來,于治樓,陳乃闊,等.面向國產(chǎn)CPU的可重構計算系統(tǒng)設計及性能探究[J].計算機工程與應用,2018,54(23):36-41.(Peng Fulai,Yu Zhilou,Chen Naikuo,et al.Reconfigurable computing system design and performance exploration towards to domestic CPU[J].Computer Engineering and Applications,2018,54(23):36-41.)
[11]Kumar K,Ramkumar K R,Kaur A.A design implementation and comparative analysis of advanced encryption standard algorithm on FPGA[C]//Proc of the 8th International Conference on Reliability,Infocom Technologies and Optimization.Piscataway,NJ:IEEE Press,2020:182-185.
[12]Intel Corporation.Intel FPGA SDK for OpenCL pro edition programming guide 19.3[EB/OL].(2019-11-20).https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/openclsdk/archives/aocl_programming_ guide-19-3.pdf.
[13]Intel Corporation.Intel FPGA SDK for OpenCL pro edition:best practices guide[EB/OL].(2019-11-20).https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/opencl-sdk/archives/aocl-best-practices-guide-19-3.pdf.
[14]Jin Zheming,F(xiàn)inkel H.OpenCL kernel vectorization on the CPU,GPU,and FPGA:a case study with frequent pattern compression[C]//Proc of the 27th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.Washington DC:IEEE Computer Society,2019:330.
[15]李茂文,曲國遠,魏大洲,等.面向GPU計算平臺的神經(jīng)網(wǎng)絡卷積性能優(yōu)化[J/OL].計算機研究與發(fā)展.(2021-12-05).http://kns.cnki.net/kcms/detail/11.1777.tp.20210630.1326.002.html.(Li Maowen,Qu Guoyuan,Wei Dazhou,et al.Performance optimization of neural network convolution based on GPU platform[J/OL].Journal of Computer Research and Development.(2021-12-05).http://kns.cnki.net/kcms/detail/11.1777.tp.20210630.1326.002.html.)
[16]Yuan Yuheng,He Zhenzhong,Gong Zheng,et al.Acceleration of AES encryption with OpenCL[C]//Proc of the 9th Asia Joint Conference on Information Security.Piscataway,NJ:IEEE Press,2014:64-70.
[17]李熾陽,雷倩倩,楊延飛.全通用AES加密算法的FPGA實現(xiàn)[J].計算機工程與應用,2020,56(10):83-87.(Li Chiyang,Lei Qianqian,Yang Yanfei.FPGA implementation of full-universal AES encryption algorithm[J].Computer Engineering and Applications,2020,56(10):83-87.)
[18]Shashidhar R,Mahalingaswamy A M,Kumar P,et al.Design of high speed AES system for efficient data encryption and decryption system using FPGA[C]//Proc of International Conference on Electrical,Electronics,Communication,Computer,and Optimization Techniques.Piscataway,NJ:IEEE Press,2018:1279-1282.
[19]賈海鵬,張云泉,袁良,等.基于OpenCL的Viola-Jones人臉檢測算法性能優(yōu)化研究[J].計算機學報,2016,39(9):1775-1789.(Jia Haipeng,Zhang Yunquan,Yuan Liang,et al.Research of Viola-Jones face detection algorithm performance optimization based on OpenCL[J].Chinese Journal of Computers,2016,39(9):1775-1789.)