亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SM4國密算法的異構(gòu)可重構(gòu)計算系統(tǒng)研究

        2023-10-18 23:14:21王騰騰柴志雷
        計算機(jī)應(yīng)用研究 2023年9期

        王騰騰 柴志雷

        摘 要:隨著互聯(lián)網(wǎng)的數(shù)據(jù)量呈爆炸式增長,以純軟件方式運行的SM4算法速度慢、CPU占用率高,而基于Verilog/VHDL實現(xiàn)的現(xiàn)場可編程門陣列或?qū)S眉呻娐反嬖陟`活性差、升級維護(hù)困難等問題。為了解決上述問題,提出了一種SM4國密算法的異構(gòu)可重構(gòu)計算系統(tǒng)的設(shè)計方案,采用高層次綜合和異構(gòu)可重構(gòu)技術(shù),通過優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸、優(yōu)化循環(huán)、矢量化內(nèi)核以及增加計算單元等方式,設(shè)計了SM4算法電子密碼本模式和計數(shù)器模式的定制計算架構(gòu),并將該系統(tǒng)部署在FPGA異構(gòu)平臺。實驗結(jié)果表明:SM4-ECB和SM4-CTR兩種主流工作模式的定制計算架構(gòu)在Intel Stratix 10 GX2800上,吞吐率分別達(dá)到109.48 Gbps和63.73 Gbps,是Intel Xeon E5-2650 V2 CPU上對應(yīng)模式吞吐率的232.63倍和141.62倍。以此核心模塊(包含數(shù)據(jù)輸入、加解密、輸出)的整體異構(gòu)可重構(gòu)計算系統(tǒng)的性能也分別達(dá)到了純軟件方式的4.90倍和3.56倍。該方案不僅實現(xiàn)了針對特定模式進(jìn)行定制加速,而且可以通過硬件重構(gòu)靈活支持不同的計算模式,兼顧了系統(tǒng)的靈活性和高效性。

        關(guān)鍵詞:SM4;異構(gòu)可重構(gòu);現(xiàn)場可編程門陣列;國密算法;硬件加速

        中圖分類號:TP309?? 文獻(xiàn)標(biāo)志碼:A

        文章編號:1001-3695(2023)09-042-2826-06

        doi:10.19734/j.issn.1001-3695.2022.12.0832

        Research on heterogeneous reconfigurable computing system of SM4 national security algorithm

        Wang Tengteng1,Chai Zhilei1,2

        (1.School of Artificial Intelligence & Computer Science,Jiangnan University,Wuxi Jiangsu 214122,China;2.Jiangsu Provincial Enginee-ring Laboratory of Pattern Recognition & Computational Intelligence,Wuxi Jiangsu 214122,China)

        Abstract:With the explosive growth of the data volume of the Internet,there are problems such as the slow speed and high CPU utilization of the SM4 algorithm running in pure software mode.While the field programmable gate array or dedicated integrated circuit based on Verilog/VHDL has problems such as poor flexibility and difficulty in upgrading and maintenance.In order to solve the above problems,this paper proposed a design scheme of heterogeneous reconfigurable computing system based on SM4 algorithm.Using high-level synthesis and heterogeneous reconfigurable technology,

        it designed the customized computing architecture of SM4 algorithms electronic cipher book mode and counter mode by optimizing the allocation and transmission of data memory,optimizing the loop,vectorizing the kernel and adding computing units.And the system was deployed on the FPGA heterogeneous platform.The experimental results show that the customized computing architecture of SM4-ECB and SM4-CTR,two mainstream operating modes,on the Intel Stratix 10 GX2800,has a throughput of 109.48 Gbps and 63.73 Gbps respectively,which is 232.63 times and 141.62 times throughput of the corresponding mode on the Intel Xeon E5-2650 V2 CPU.The performance of the whole heterogeneous reconfigurable computing system composed of this core module,including data input,encryption and decryption,and output,has also reached 4.90 times and 3.56 times of that of pure software mode.This paper not only realizes customized acceleration for specific modes,but also flexibly supports different computing modes through hardware reconfiguration,taking into account the flexibility and efficiency of the system.

        Key words:SM4;heterogeneous reconfigurable;FPGA;secret algorithm;hardware speedup

        0 引言

        SM4算法是我國國家密碼管理局發(fā)布的無線局域網(wǎng)標(biāo)準(zhǔn)的分組對稱密碼算法,是我國密碼行業(yè)標(biāo)準(zhǔn)算法之一[1,2]。SM4算法主要承擔(dān)安全通信過程中的加密和解密任務(wù),隨著大數(shù)據(jù)時代的來臨以及無線局域網(wǎng)的廣泛普及,其傳輸信息的安全性面臨著巨大挑戰(zhàn)[3],同時對數(shù)據(jù)傳輸速度提出了更高的要求。單一的加密模式以及使用純軟件運行SM4算法的方式已無法滿足現(xiàn)今海量敏感數(shù)據(jù)傳輸過程中安全性和高效性的需求[4]。

        目前,為了滿足數(shù)據(jù)高效傳輸?shù)膽?yīng)用場景,許多國內(nèi)外學(xué)者已經(jīng)在各種平臺上實現(xiàn)該算法并取得了很多優(yōu)秀成果。2017年,Cheng等人[5]設(shè)計的CPU-GPU模式的硬件加速架構(gòu),其中針對SM4算法并行優(yōu)化,使其ECB(electronic code book)模式吞吐率提高到76.89 Gbps,其CTR(counter)模式吞吐率達(dá)到32.23 Gbps。

        雖然此硬件架構(gòu)使其吞吐率得到了極大提升,但是該工作存在耗能高、靈活性差的問題。因此,Guan等人[6]在2018年提出了多種基于FPGA的硬件設(shè)計,探索面積和速度之間的權(quán)衡,速度第一的設(shè)計通過結(jié)合狀態(tài)機(jī)和32級流水線設(shè)計,其吞吐率達(dá)到了27.15 Gbps。2019年,劉金峒等人[7]設(shè)計了循環(huán)迭代結(jié)構(gòu)和全并行流水結(jié)構(gòu),并提出了一種部分并行可裁剪式結(jié)構(gòu),在FPGA實現(xiàn)后,全并行流水結(jié)構(gòu)吞吐率為12.89 Gbps,部分可裁剪式結(jié)構(gòu)吞吐率則為3.2 Gbps。2022年,李建立等人[8]對SM4算法提出了一種基于復(fù)合域S盒的二次流水全展開硬件架構(gòu),SM4吞吐率最高達(dá)53.76 Gbps。上述基于FPGA的工作均采用傳統(tǒng)的硬件描述語言Verilog/VHDL實現(xiàn),雖然提供了更精確的時序設(shè)計并且降低了功耗,但是開發(fā)周期長且維護(hù)困難。其中多數(shù)工作僅實現(xiàn)了一種模式,缺乏靈活性,無法滿足不同應(yīng)用場景的安全需求。

        綜上所述,針對SM4算法兼具高效性和靈活性的計算方法和系統(tǒng)的研究,具有重要意義,并且隨著大數(shù)據(jù)時代各種應(yīng)用場景的增多,這一需求變得更加迫切。SM4算法的ECB和CTR模式具有簡單、快速、并行性高的特點,可以滿足目前人們對高吞吐率和不同應(yīng)用場景的需求。本文針對SM4算法提出的異構(gòu)可重構(gòu)方法可以將SM4算法的ECB和CTR模式融合在一起,利用FPGA的可重構(gòu)特性配置控制模塊,按需加載不同的模式,以滿足不同的安全需求。同時利用高層次描述語言O(shè)penCL設(shè)計了兩種模式的定制計算架構(gòu),通過流水線架構(gòu)結(jié)合OpenCL中Kernel執(zhí)行特點,提出了新的SM4算法兩種模式的硬件加速優(yōu)化思路,相較于傳統(tǒng)Verilog/VHDL開發(fā)方式,縮短了開發(fā)周期、有利于更新和維護(hù),且性能表現(xiàn)更佳。因此,本文設(shè)計的SM4算法的異構(gòu)可重構(gòu)計算系統(tǒng),不僅利用FPGA提高了計算的高效性,還實現(xiàn)了主機(jī)端對兩種加密模式的在線動態(tài)重構(gòu),使得該系統(tǒng)兼顧靈活性和高效性。

        本文通過OpenCL設(shè)計的SM4算法的異構(gòu)可重構(gòu)計算系統(tǒng),包含SM4算法的ECB和CTR兩種加密模式的定制硬件加速框架,通過在Intel Stratix 10 GX 2800上硬件重構(gòu)實現(xiàn)了SM4算法兩種加密模式的切換。最終系統(tǒng)中ECB和CTR模式的整體加速效果與純軟件方式相比,分別獲得了4.897和3.561的加速比,核心模塊在FPGA片上的吞吐率分別達(dá)到了108.43 Gbps、63.73 Gbps。

        1 SM4算法

        SM4是我國自主設(shè)計的分組對稱密碼算法,其分組長度為128 bit,密鑰長度也為128 bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32 bit)為單位進(jìn)行加密運算,每一次迭代運算均為一輪變換函數(shù)F。SM4算法加/解密算法的結(jié)構(gòu)相同,不同的是使用輪密鑰相反,其中解密輪密鑰是加密輪密鑰的逆序。

        1.1 SM4密鑰擴(kuò)展算法

        將128 bit的初始密鑰MK=(MK0,MK1,MK2,MK3)的每個字分別與128 bit的系統(tǒng)參數(shù)FK=(FK0,F(xiàn)K1,F(xiàn)K2,F(xiàn)K3)的每個字進(jìn)行異或運算得到四個字(K0,K1,K2,K3),如式(1)所示。再把后三個字與固定參數(shù)CK0做異或運算后進(jìn)行函數(shù)T′運算獲得的結(jié)果C與K0做異或運算,就得到了第一輪的子密鑰rk0,也是下一個密鑰運算的K4,如式(2)所示。

        1.3 SM4算法性能瓶頸分析

        由于輪函數(shù)F需要做32輪迭代,其迭代部分包括異或操作、S盒變換、比特位左移、反序變換等操作,其執(zhí)行效率是影響SM4算法性能的關(guān)鍵因素。所以,將SM4算法的輪函數(shù)F進(jìn)行優(yōu)化設(shè)計并運行在適合做大量數(shù)據(jù)并行運算的FPGA端,能夠有效提高其運行速率、降低運行時間,從而大幅度提升SM4算法整體運行效率。將CTR模式中的算子自增計算利用FPGA提前計算,能夠解決因為每一輪進(jìn)行一次算子自增計算的數(shù)據(jù)依賴和計算延遲問題,進(jìn)而提高算法整體運行效率。

        在本文實驗中,因為每個明文塊使用的密鑰相同,所以只需要將密鑰擴(kuò)展算法計算一次且計算量不大。將所有傳入的明文塊補充到16 Byte整數(shù)倍,其計算量也很小。因此,將密鑰擴(kuò)展算法和補充明文塊的運算利用CPU運行,能夠節(jié)省FPGA資源,最大程度利用FPGA加速性能。

        2 基于OpenCL的異構(gòu)可重構(gòu)系統(tǒng)

        2.1 異構(gòu)平臺編程框架OpenCL

        開放設(shè)計語言(open computing language,OpenCL)[9,10]是一個靈活的異構(gòu)平臺的編程框架,具有強大的兼容性,可以將不同類型的硬件結(jié)合在同種執(zhí)行環(huán)境中,支持各種異構(gòu)平臺(CPU、DPU、GPU、FPGA等)。同時,開發(fā)者可以使用高級語言對FPGA進(jìn)行編程,不僅能夠?qū)崿F(xiàn)硬件可重構(gòu)系統(tǒng),同時可以降低開發(fā)門檻,縮短開發(fā)周期。

        近年來,異構(gòu)計算已經(jīng)成為高性能計算的主流解決方案,CPU+GPU異構(gòu)計算模式已經(jīng)得到廣泛的應(yīng)用。自從2011年Altera公司發(fā)布支持OpenCL來開發(fā)FPGA的SDK以后,CPU+FPGA的異構(gòu)架構(gòu)也成為一種具有競爭力的高性能計算方案。OpenCL是第一個面向異構(gòu)系統(tǒng)的并行編程的開放式標(biāo)準(zhǔn)語言,CPU端采用標(biāo)準(zhǔn)C/C++編寫,設(shè)備端采用標(biāo)準(zhǔn)C編寫Kernels,CPU可以通過OpenCL API來調(diào)用設(shè)備運行。利用OpenCL在更高層的設(shè)計抽象環(huán)境中迅速進(jìn)行設(shè)計開發(fā),跳過耗時的手動時序收斂及FPGA、CPU和外部存儲之間的通信接口設(shè)計工作。在基于OpenCL的CPU+FPGA的異構(gòu)設(shè)計中,將CPU不擅長的計算密集型任務(wù)使用FPGA處理,利用FPGA大量的計算資源和并行性提高計算速度,不僅解放了CPU,還充分利用了FPGA的計算能力,最大程度提高設(shè)備端的吞吐率。

        本文所使用的是Intel Stratix 10 FPGA和面向 OpenCL 的英特爾 FPGA SDK。Intel FPGA SDK通過離線編譯器編譯Kernel創(chuàng)建優(yōu)化硬件鏡像,編譯器將Kernel轉(zhuǎn)換為Verilog形式后,通過Quartus Ⅱ軟件編譯為二進(jìn)制鏡像,運行程序時,將該鏡像加載到FPGA,構(gòu)建硬件加速系統(tǒng)。Intel FPGA SDK還支持在CPU端仿真FPGA特性,在FPGA構(gòu)建前可驗證設(shè)計性能,能夠縮短檢驗設(shè)計正確性的時間。

        2.2 異構(gòu)可重構(gòu)計算系統(tǒng)

        2.2.1 異構(gòu)計算系統(tǒng)總體架構(gòu)

        本文異構(gòu)系統(tǒng)的總體架構(gòu)是CPU+FPGA。其中主機(jī)端CPU是用于對主機(jī)端與外部環(huán)境和設(shè)備端數(shù)據(jù)交互的控制以及對Kernel的調(diào)度和管理,具有強大并行計算能力的設(shè)備端FPGA用于完成SM4算法的主要計算任務(wù)。如圖3所示,CPU和FPGA通過PCIe連接。在FPGA中,處理元素是一個工作項的處理單元,一個處理單元完成一個SM4明文塊的加密計算,其私有存儲器用來儲存運算中間產(chǎn)生的數(shù)據(jù)。由于全局存儲器的最大帶寬遠(yuǎn)小于局部存儲器的最大帶寬,F(xiàn)PGA的計算帶寬遠(yuǎn)大于全局存儲器的最大帶寬。因此,通過調(diào)整數(shù)據(jù)的存儲位置、優(yōu)化數(shù)據(jù)傳輸,減少對全局存儲器的訪問次數(shù),并且使用局部存儲器和私有存儲器等片上存儲器執(zhí)行內(nèi)核計算,增加內(nèi)核的內(nèi)存帶寬,極大提高內(nèi)核的性能。對SM4算法加密模塊,通過循環(huán)展開、循環(huán)流水的方式,充分利用FPGA的計算特點,形成流水線并行架構(gòu)。將內(nèi)核矢量化和增加計算單元結(jié)合使用,工作項可以同時訪問和存取更多的數(shù)據(jù),增加的計算單元可以計算更多的數(shù)據(jù),使得FPGA的吞吐率得到了極大提高。

        2.2.2 可重構(gòu)設(shè)計

        圖4是基于Intel FPGA的可重構(gòu)框架,其中兩個主要部分為CPU和Intel FPGA,并通過PCIe總線通信。CPU管理相關(guān)事務(wù)、控制FPGA加速單元并處理簡單的串行任務(wù),F(xiàn)PGA具有硬件可重構(gòu)能力和強大的并行計算能力,因此使用FPGA實現(xiàn)不同應(yīng)用需求在線動態(tài)重構(gòu)硬件模塊或靜態(tài)重構(gòu)硬件模塊并完成計算密集型任務(wù)。FPGA分為靜態(tài)配置區(qū)與動態(tài)可重構(gòu)區(qū)。靜態(tài)配置區(qū)中有PCIe、DMA控制器等主要模塊,靜態(tài)配置區(qū)的主要作用是向FPGA外部的PCIe、DDR等提供通信接口,同時也向動態(tài)可重構(gòu)區(qū)域的Kernel IP提供接口。靜態(tài)配置區(qū)通過主動配置方式AS配置模式進(jìn)行配置,F(xiàn)PGA上電后自動配置,配置完成后FPGA可以接收CPU發(fā)送來的指令,動態(tài)可重構(gòu)區(qū)通過指令部署指定的模式SM4的Kernel IP并執(zhí)行計算任務(wù),Kernel IP是SM4算法的具體實現(xiàn)。當(dāng)改變SM4算法的模式時,CPU通過PCIe下發(fā)新的Kernel IP,重新配置動態(tài)可重構(gòu)區(qū),這個過程不需要重啟FPGA,整個重新配置過程耗時僅為毫秒級,完全實現(xiàn)了SM4算法多種模式的在線重構(gòu)。

        由于Kernel函數(shù)的編譯時間過長,所以將Kernel函數(shù)進(jìn)行離線編譯,事先生成可執(zhí)行文件。main函數(shù)的編譯、運行以及對FPGA進(jìn)行管理控制等由CPU完成,main函數(shù)的編譯和運行需要OpenCL運行支持庫支持。當(dāng)應(yīng)用場景改變,需要對FPGA進(jìn)行動態(tài)可重構(gòu)配置,CPU會將事先準(zhǔn)備好的FPGA可執(zhí)行文件通過PCIe總線傳輸給FPGA,以實現(xiàn)在線可重構(gòu)功能[11]。

        在實際的應(yīng)用場景中,對于不同的應(yīng)用場景有著不同的安全要求和加/解密速度要求,同一個應(yīng)用場景下一般對應(yīng)一種安全需求和吞吐率要求,因此一般應(yīng)用場景不需要運行時動態(tài)重構(gòu)。靜態(tài)可重構(gòu)和動態(tài)可重構(gòu)結(jié)合使用可以使整個系統(tǒng)更具靈活性。

        3 SM4異構(gòu)可重構(gòu)計算系統(tǒng)實現(xiàn)

        3.1 主機(jī)端的程序與設(shè)計

        對于OpenCL的主機(jī)端程序設(shè)計有一個相對固定的流程,主要步驟是利用Intel FPGA SDK提供的API來獲取平臺和設(shè)備、創(chuàng)建上下文以及命令隊列,最后等到內(nèi)核程序運行結(jié)束讀取到內(nèi)核運行結(jié)果后釋放內(nèi)存資源。圖5便是主機(jī)端程序執(zhí)行流程。除此之外,根據(jù)SM4算法原理,將計算量小和不利于并行計算的部分放在主機(jī)端運行,主要包括優(yōu)化內(nèi)存分配與創(chuàng)建、密鑰和自增算子等數(shù)據(jù)的創(chuàng)建和初始化以及內(nèi)核參數(shù)設(shè)定等。同時,CPU負(fù)責(zé)整個系統(tǒng)的調(diào)度和管理。

        3.2 FPGA端硬件設(shè)計

        3.2.1 優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸

        OpenCL將內(nèi)存抽象為五種類型的存儲器[12],分別為主機(jī)存儲器、全局存儲器、常量存儲器、局部內(nèi)存以及私有存儲器。如表1所示,各個存儲器所在的位置不同,其吞吐率、容量和延遲都存在一定的差異,將數(shù)據(jù)存儲在合適的位置能有效提高硬件架構(gòu)的吞吐率。將存儲器帶寬的利用率提高,可以優(yōu)化整體架構(gòu)性能。全局存儲器是容量最大以及傳輸數(shù)據(jù)時吞吐率最大的存儲器。將主機(jī)端傳輸?shù)紽PGA端的明文、密鑰等大量數(shù)據(jù)存儲在全局存儲器中,提高存儲器帶寬的利用率,從而提升整體性能。將加/解密模塊運行時不變的系統(tǒng)參數(shù)FK、固定參數(shù)CK以及加/解密過程中訪問頻繁的S盒存放于常量存儲器,能提升訪問速度,避免訪存沖突。與私有存儲器相比,局部存儲器為了保證數(shù)據(jù)一致性在同組工作項執(zhí)行之后,會使用保護(hù)屏障導(dǎo)致延遲時間增加。因此,雖然在延時相當(dāng)時,局部存儲器的吞吐率更大且具有更大容量,但是仍然選擇將SM4算法加/解密過程中參與運算的變量存儲在私有內(nèi)存中,此時延時更短、吞吐率也相對更高。

        在本文設(shè)計中,CPU控制明文從全局存儲器傳輸?shù)狡暇彺?,加密后得到密文,最后將密文從片上緩存?zhèn)鬏敾厝执鎯ζ?,需要兩次?shù)據(jù)傳輸。將一個工作項處理的數(shù)據(jù)位寬固定為和SM4明文長度相同的128 bit,也就是16 Byte,可以避免編譯器為了調(diào)整數(shù)據(jù)長度而消耗資源,也可以減少優(yōu)化程序的限制。

        3.2.2 優(yōu)化循環(huán)結(jié)構(gòu)

        Intel FPGA SDK通過循環(huán)展開形成并行計算和流水線架構(gòu)。對于不存在數(shù)據(jù)依賴的循環(huán)可以將其完全展開形成并行計算。如SM4算法中ECB和CTR模式都存在的3次循環(huán),輪密鑰由CPU傳輸?shù)紽PGA的32次循環(huán)、初始化數(shù)組的36次循環(huán)、密文由FPGA傳輸給CPU的16次循環(huán),以及只存在CTR模式中的2次循環(huán),自增算子和明文由CPU傳輸?shù)紽PGA的16次循環(huán)和自增算子加密結(jié)果和明文異或的16次循環(huán),上述循環(huán)均不存在數(shù)據(jù)依賴,可以將循環(huán)完全展開,形成并行計算,其架構(gòu)如圖6(b)所示。假設(shè)數(shù)據(jù)讀取、數(shù)據(jù)處理和數(shù)據(jù)存儲中的每一步操作都只需要1個cycle,在沒有展開循環(huán)前內(nèi)核在下次計算前延遲了3個cycle,而將循環(huán)展開后,則實現(xiàn)了并行計算。針對32輪非線性迭代,通過循環(huán)展開在加載內(nèi)存數(shù)據(jù)模塊和存儲內(nèi)存數(shù)據(jù)模塊形成內(nèi)存合并,將32輪加載內(nèi)存數(shù)據(jù)和存儲內(nèi)存數(shù)據(jù)的操作降低為位寬更寬的數(shù)據(jù)加載操作和存儲操作;在迭代計算模塊,針對32輪迭代的S盒置換和左移等操作進(jìn)行循環(huán)展開,通過指導(dǎo)編譯器生成單次迭代所需的硬件架構(gòu)形成有效流水,減少了迭代計算所需要的時間。其架構(gòu)如圖6(c)所示,假設(shè)數(shù)據(jù)讀取、數(shù)據(jù)處理和數(shù)據(jù)存儲中的每一步操作都只需要一個cycle,在沒有形成流水線時,兩次load操作間的延遲為3個cycle,而使用了流水線設(shè)計后,只有一個cycle的延遲。

        表2是加密256 MB數(shù)據(jù)時SM4加密算法的ECB和CTR模式下32輪非線性迭代形成流水線架構(gòu)時不同程度展開其他循環(huán)形成并行計算的優(yōu)化效果對比。根據(jù)實驗結(jié)果可知,循環(huán)展開越多,優(yōu)化獲得的效果越好。優(yōu)化循環(huán)結(jié)構(gòu)可以在很大程度上縮短SM4算法兩種加密模式的加密時間。

        3.2.3 矢量化內(nèi)核和增加計算單元

        單個指令處理多個數(shù)據(jù)稱為SIMD(single-instruction multiple-data),利用該技術(shù)可以大大提高計算密集型算法的吞吐量。矢量化內(nèi)核就是讓多個工作項以單指令多數(shù)據(jù)的方式來進(jìn)行SM4算法的運行。在SIMD方式下工作的工作項可以同時訪存并處理多個數(shù)據(jù)。如圖7所示,矢量化內(nèi)核之后,編譯器會合并內(nèi)存訪問,訪問和存儲的數(shù)據(jù)會是之前的數(shù)倍。矢量化內(nèi)核時需要將工作組的大小固定為矢量化內(nèi)核參數(shù)的整數(shù)倍。

        選取本文對256 MB數(shù)據(jù)加密時設(shè)置不同矢量化內(nèi)核和計算單元得到的吞吐率進(jìn)行比較。由表3可知,在ECB模式下,計算單元相同,矢量化內(nèi)核參數(shù)設(shè)置為4時與設(shè)置為1時相比,加密時間顯著減少,繼續(xù)將參數(shù)增大至8,仍舊有明顯加速效果。CTR模式實驗數(shù)據(jù)也有同樣規(guī)律。實驗結(jié)果表明,矢量化內(nèi)核對于提高吞吐率可行且效果顯著。

        Intel FPGA SDK通過設(shè)置參數(shù)可以為內(nèi)核增加多個計算單元,一個計算單元可以運行多個工作組,Intel FPGA可以將工作組分配到已經(jīng)設(shè)置的且未使用的計算單元。計算單元的增加增強了片上計算能力,進(jìn)而提高片上吞吐率。表4為系統(tǒng)對128 MB數(shù)據(jù)加密的實驗數(shù)據(jù),在兩種加密模式下,矢量化內(nèi)核參數(shù)都設(shè)為8時,計算單元由1個增加到2個,計算時間明顯縮短,吞吐率顯著提高。實驗表明,增加計算單元對于提高吞吐率有顯著效果。

        4 實驗結(jié)果與分析

        4.1 實驗環(huán)境

        本實驗所采用的實驗環(huán)境為搭載Intel Xeon E5-2650 V2版本CPU的服務(wù)器,其操作系統(tǒng)為CentOS Linux Release 7.7.1908,其中使用的GCC版本為V4.8.5,支持OpenCL的SDK版本為Intel FPGA SDK for OpenCL 19.3,F(xiàn)PGA則是Intel Stratix 10 GX2800[13],該卡包含1 866 240個ALUT、3 732 480個FF、11 721個RAM以及5 760個DSP。

        4.2 實驗結(jié)果

        本文對不同的優(yōu)化方法進(jìn)行了設(shè)計并通過模擬和上板測試,對不同設(shè)計的性能進(jìn)行了測試。

        4.2.1 內(nèi)核定制計算性能

        對兩種模式的SM4算法,合理分配內(nèi)存、展開循環(huán)后,再通過設(shè)置不同的矢量化通道數(shù)量使單個工作組獲得多個矢量化通道,并且增加計算單元執(zhí)行多個工作組。

        表5為兩種SM4加密模式分別對256 MB數(shù)據(jù)加密的時間和資源的對比。在兩種模式中,同樣使用兩個計算單元,將矢量化內(nèi)核參數(shù)設(shè)置為8時和設(shè)置為4時相比,雖然使用了更多的資源,但是節(jié)省了程序運行時間并且取得了更好的優(yōu)化效果。表中其他數(shù)據(jù)也同樣表明,在一定范圍內(nèi)使用更多的資源,可以縮短程序運行時間、提高吞吐率。

        如表6所示,在使用CTR模式加密512 MB數(shù)據(jù)時,在同一工作頻率下突發(fā)傳輸讀寫寬度相同且使用1個計算單元時,內(nèi)存帶寬更高的矢量化4個通道設(shè)計卻比矢量化8個通道設(shè)計耗時更短、吞吐率更高。雖然增加了資源的使用,但是其帶寬的利用率下降,此時對全局內(nèi)存帶寬的爭用變得更加激烈,使得吞吐率下降。矢量化16通道并使用2個計算單元的設(shè)計,在內(nèi)存帶寬低于其他設(shè)計方案時,由于其突發(fā)傳輸讀寫寬度遠(yuǎn)大于其他設(shè)計方案,其吞吐率也是所有設(shè)計中最高的。由此可知,突發(fā)傳輸讀寫寬度也是影響吞吐率的重要因素。由表中可知,矢量化16個通道同時使用2個計算單元時,其全局內(nèi)存帶寬最大,其吞吐率也是所有設(shè)計方案中最大的。與ECB模式中矢量化16個通道和使用2個計算單元的設(shè)計相比,ECB中內(nèi)存帶寬利用率比CTR模式的設(shè)計高了將近一倍,而ECB中的突發(fā)傳輸讀寫寬度也只是稍微低于CTR模式,因此,ECB模式的最高吞吐率是CTR模式的1.72倍左右。實驗表明,內(nèi)存寬帶利用率以及突發(fā)傳輸讀寫寬度都是影響吞吐率的關(guān)鍵因素。

        本文為了測試不同方案下的最大吞吐率,對兩種模式的不同方案進(jìn)行了不同數(shù)據(jù)量的加密實驗。圖8是ECB模式中矢量化16通道使用1個計算單元以及CTR模式中矢量化16通道使用2個計算單元時的不同數(shù)據(jù)量加密的吞吐率走勢圖。如圖中所示,在數(shù)據(jù)量為16 KB時,沒有達(dá)到設(shè)備端的最佳性能,隨著數(shù)據(jù)量的增大,設(shè)備端的吞吐率也隨之快速增加,然后吞吐率趨于穩(wěn)定;數(shù)據(jù)量超過64 MB以后,ECB模式在設(shè)備端的最大吞吐率穩(wěn)定在109.49 Gbps上下,CTR模式在設(shè)備端的最大吞吐率穩(wěn)定在63.73 Gbps上下。

        本文使用OpenCL在更高層的設(shè)計抽象環(huán)境中進(jìn)行設(shè)計開發(fā),與表7中文獻(xiàn)[7,8,14]等使用Verilog HDL或VHDL語言進(jìn)行設(shè)計相比,在開發(fā)速度上有一定的優(yōu)勢,并且加速性能也存在很大的優(yōu)越性。文獻(xiàn)[15]采用ASIC方案實現(xiàn)CTR模式的SM4算法,但是僅在Altera Cyclone V FPGA驗證其設(shè)計,實現(xiàn)了114.43 MHz下14.647 Gbps的吞吐率,以此預(yù)估其流片后CTR模式的吞吐率能輕松實現(xiàn)40 Gbps,甚至可能達(dá)到100 Gbps左右。與之相比在本文設(shè)計的系統(tǒng)中,CTR和ECB模式的吞吐率已經(jīng)達(dá)到63.73 Gbps和109.49 Gbps,不僅系統(tǒng)的靈活性更高、適應(yīng)場景更多,還能夠大大縮短開發(fā)時間以及開發(fā)成本,同時又保證了系統(tǒng)的高吞吐率??偟膩碚f,本文系統(tǒng)兼具高效率和靈活性,兩種可以切換的模式也能夠適應(yīng)更多的場景。

        與基于Intel Xeon E5-2650 V2 CPU平臺上OpenSSL庫中SM4國密算法的ECB和CTR模式在數(shù)據(jù)量為256 MB時其吞吐率分別為0.47 Gbps和0.45 Gbps相比,本文加速效果分別是其232.63倍和141.62倍。

        4.2.2 系統(tǒng)整體性能

        分別對SM4-ECB和SM4-CTR兩種加密模式的系統(tǒng)整體性能進(jìn)行測試,并將測試結(jié)果和OpenSSL標(biāo)準(zhǔn)加密庫源碼對相同數(shù)據(jù)加密進(jìn)行純軟件對比。表8是本文中SM4-ECB和SM4-CTR兩種模式對不同數(shù)據(jù)量加密系統(tǒng)整體耗時,包含OpenCL初始化時間、CPU和FPGA間的數(shù)據(jù)傳輸時間以及Kernel運行時間。根據(jù)實驗數(shù)據(jù)分析,數(shù)據(jù)量小于8 MB時,OpenCL的初始化和創(chuàng)建Kernel等啟動流程所用時間在系統(tǒng)運行的時間中占比較大,而隨著數(shù)據(jù)量增大,數(shù)據(jù)傳輸和Kernel計算所用的時間占比也逐漸增大。當(dāng)加密數(shù)據(jù)量增大到128 MB以及比其大時,系統(tǒng)運算效率也逐步增大。

        圖9是異構(gòu)系統(tǒng)和OpenSSL標(biāo)準(zhǔn)庫的純軟件系統(tǒng)的加密時間對比。圖9表明,在明文數(shù)據(jù)量較大時,本文的異構(gòu)可重構(gòu)系統(tǒng)加密效率遠(yuǎn)大于純軟件加密,ECB和CTR模式的加速比最高分別為4.897和3.561。

        5 結(jié)束語

        本文針對國產(chǎn)加密算法SM4面向海量敏感數(shù)據(jù)交互時存在計算速度慢、CPU占用率和功耗過高以及使用傳統(tǒng)Verilog/VHDL語言進(jìn)行設(shè)計存在開發(fā)周期長、成本高、靈活性差等問題,設(shè)計并實現(xiàn)了一種SM4國密算法的異構(gòu)可重構(gòu)計算系統(tǒng)?;贠penCL對SM4國密算法ECB和CTR兩種模式分別進(jìn)行硬件加速設(shè)計,同時基于可重構(gòu)實現(xiàn)了兩種模式加密模式的動態(tài)和靜態(tài)切換。本文設(shè)計針對SM4算法的特點,合理利用OpenCL的內(nèi)存模型優(yōu)化數(shù)據(jù)內(nèi)存分配與傳輸,通過循環(huán)展開的方式形成流水線架構(gòu),并將內(nèi)核矢量化同時增加計算單元來提高設(shè)備端的吞吐率。因此,本系統(tǒng)兼具高效率和靈活性,兩種模式的靈活切換也能夠適應(yīng)更多的場景。

        雖然本文達(dá)到了較好的效果,但是仍然存在優(yōu)化提升空間。增加計算單元時帶寬的爭奪變得更加激烈,同時伴隨工作組大小的變化,會影響到吞吐率的變化,對此本文設(shè)計中沒有過多深究。因此,將來可以將此作為一個優(yōu)化方向,達(dá)到更高的吞吐率,以適應(yīng)更多的應(yīng)用場景。

        參考文獻(xiàn):

        [1]國家密碼管理局.GM/T0002—2012,SM4 分組密碼算法[S].北京:中國標(biāo)準(zhǔn)出版社,2012.(State Cryptography Administration.GM/T0002—2012,SM4 block cipher algorithm[S].Beijing:Stan-dards Press of China,2012.)

        [2]呂述望,蘇波展,王鵬,等.SM4分組密碼算法綜述[J].信息安全研究,2016,2(11):995-1007.(Lyu Shuwang,Su Bozhan,Wang Peng,et al.Overview on SM4 algorithm[J].Journal of Information Security Research,2016,2(11):995-1007.)

        [3]楊伊,何德彪,文義紅,等.密鑰管理服務(wù)系統(tǒng)下的多方協(xié)同SM4加/解密方案[J].信息網(wǎng)絡(luò)安全,2021,21(8):17-25.(Yang Yi,He Debiao,Wen Yihong,et al.Multi-party collaborative SM4 encryption/decryption scheme in key management service[J].Netinfo Security,2021,21(8):17-25.)

        [4]郎歡,張蕾,吳文玲.SM4 的快速軟件實現(xiàn)技術(shù)[J].中國科學(xué)院大學(xué)學(xué)報,2018,35(2):180-187.(Lang Huan,Zhang Lei,Wu Wenling.Fast software implementation of SM4[J].Journal of University of Chinese Academy of Sciences,2018,35(2):180-187.)

        [5]Cheng Wangzhao,Zheng Fangyu,Pan Wuqiong,et al.High-perfor-mance symmetric cryptography server with GPU acceleration[M]//Qing Sihan,Mitchell C,Chen Liqun,et al.Information and Communications Security.Cham:Springer International Publishing,2017:529-540.

        [6]Guan Zhenyu,Li Yunhao,Shang Tao,et al.Implementation of SM4 on FPGA:trade-off analysis between area and speed[C]//Proc of IEEE International Conference on Intelligence and Safety for Robotics.Piscataway,NJ:IEEE Press,2018:192-197.

        [7]劉金峒,梁科,王錦,等.SM4加密算法可裁剪式結(jié)構(gòu)設(shè)計與硬件實現(xiàn)[J].南開大學(xué)學(xué)報:自然科學(xué)版,2019,52(4):41-45.(Liu Jintong,Liang Ke,Wang Jin,et al.Cuttable structure design and hardware implementation of SM4 encryption algorithm[J].Acta Scientiarum Naturalium Universitatis:NanKaiensis,2019,52(4):41-45.)

        [8]李建立,莫燕南,粟濤,等.基于國密算法SM2、SM3、SM4的高速混合加密系統(tǒng)硬件設(shè)計[J].計算機(jī)應(yīng)用研究,2022,39(9):2818-2825,2831.(Li Jianli,Mo Yannan,Su Tao,et al.Hardware design of high-speed hybrid encryption system based on SM2,SM3 and SM4 algorithm[J].Application Research of Computers,2022,39(9):2818-2825,2831.)

        [9]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 Annual International Symposium on Field-Programmable Custom Computing Machines.Piscataway,NJ:IEEE Press,2019:330.

        [10]Mahony A O,Zeidan G,Hanzon B,et al.A parallel and pipelined implementation of a pascal-simplex based two asset option pricer on FPGA using OpenCL[C]//Proc of IEEE Nordic Circuits and Systems Conference.Piscataway,NJ:IEEE Press,2020:1-6.

        [11]彭福來,于治樓,陳乃闊,等.面向國產(chǎn)CPU的可重構(gòu)計算系統(tǒng)設(shè)計及性能探究[J].計算機(jī)工程與應(yīng)用,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.)

        [12]Intel Corpration.Intel FPGA SDK for OpenCLTM Pro edition:programming guide 19.3[EB/OL].(2019-10-30).https://www.intel.com/content/www/us/en/docs/programmable/683846/19-3/introduction.html.

        [13]Intel Corporation.IntelFPGA SDK for OpenCLTM:IntelStratix 10 GX FPGA development kit reference platform porting guide[EB/OL].(2022-03-28).https://www.intel.com/content/www/us/en/docs/programmable/683809/19-1/gx-fpga-development-kit-reference-platform-21662.html.

        [14]Martínez-Herrera A F,Mancillas-López C,Mex-Perera C,et al.GCM implementations of Camellia-128 and SMS4 by optimizing the polynomial multiplier[J].Microprocessors and Microsystems,2016,45:129-140.

        [15]王澤芳,唐中劍.SM4算法CTR模式的高吞吐率ASIC實現(xiàn)[J].電子器件,2019,42(1):173-177.(Wang Zefang,Tang Zhongjian.A high-throughput ASIC implementation of SM4 algorithm in CTR mode[J].Chinese Journal of Electron Devices,2019,42(1):173-177.)

        [16]何詩洋,李暉,李鳳華.SM4算法的FPGA優(yōu)化實現(xiàn)方法[J].西安電子科技大學(xué)學(xué)報,2021,48(3):155-162.(He Shiyang,Li Hui,Li Fenghua.The FPGA optimization implementation method of SM4 algorithm[J].Journal of Xidian University,2021,48(3):155-162.)

        [17]李曉東,胡一鳴,池亞平,等.基于通用計算平臺SM4-CTR算法并行實現(xiàn)與優(yōu)化[J].密碼學(xué)報,2022,9(4):663-676.(Li Xiao-dong,Hu Yiming,Chi Yaping,et al.Parallel implementation and optimization of SM4-CTR algorithm based on general computing platform[J].Journal of Cryptologic Research,2022,9(4):663-676.)

        [18]楊國強,丁杭超,鄒靜,等.基于高性能密碼實現(xiàn)的大數(shù)據(jù)安全方案[J].計算機(jī)研究與發(fā)展,2019,56(10):2207-2215.(Yang Guoqiang,Ding Hangchao,Zou Jing,et al.A big data security scheme based on high performance cryptography[J].Computer Research and Development,2019,56(10):2207-2215.)

        收稿日期:2022-12-23;修回日期:2023-02-20? 基金項目:國家自然科學(xué)基金資助項目(61972180)

        作者簡介:王騰騰(1993-),男,江蘇徐州人,碩士研究生,主要研究方向為計算機(jī)體系結(jié)構(gòu);柴志雷(1975-),男(通信作者),山西人,教授,博士,主要研究方向為計算機(jī)體系結(jié)構(gòu)(zlchai@jiangnan.edu.cn).

        蜜臀av一区二区三区久久| 亚洲国产福利成人一区二区| av永久天堂一区二区三区蜜桃| 女同在线网站免费观看| 亚洲AV小说在线观看| 国产一区二区三区影片| 亚洲一区亚洲二区中文字幕| 中文字幕女同系列在线看一| 97精品国产97久久久久久免费| 无码毛片aaa在线| 日中文字幕在线| 日本经典中文字幕人妻| 国产亚洲91精品色在线| 中文字幕一区二区三区四区五区| 亚洲午夜无码av毛片久久| 国产a级午夜毛片| 国内精品视频成人一区二区| 亚洲国产综合性感三级自拍| 大量漂亮人妻被中出中文字幕| 男女高潮免费观看无遮挡| 中文字幕欧美一区| 五月天无码| 日本人妖一区二区三区| 久久伊人最新网址视频| 国产精品毛片一区二区三区| 亚洲男同志网站| 野外三级国产在线观看| 国产精品理人伦国色天香一区二区| 色播中文字幕在线视频| 国产激情视频高清在线免费观看| 伊人久久大香线蕉av波多野结衣 | 厨房人妻hd中文字幕| 成人网站免费看黄a站视频| 欧美人妻精品一区二区三区| 亚洲欧洲国产日产国码无码 | vr成人片在线播放网站| 国产精品 精品国内自产拍| 日本精品人妻一区二区三区| 懂色av一区二区三区尤物| 鲁鲁鲁爽爽爽在线视频观看| 精品少妇爆乳无码aⅴ区|