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

基于RISC-V 的SM4 算法擴展指令的設計與實現*

2022-03-17 10:16:48李晨琪袁國材
計算機與數字工程 2022年2期
關鍵詞:指令

李晨琪 袁國材 樊 榮

(中國船舶集團有限公司第七二二研究所 武漢 430205)

1 引言

隨著信息技術的發展,信息的傳輸與交互越來越頻繁,由此帶來的信息安全問題也在近年來成為人們關注的焦點[1]。在實現信息傳輸的過程中,使用密碼技術對數據進行處理是保證信息安全的重要技術手段。其中,SM4分組密碼算法由我國自主設計,于2012年3月由國家密碼管理局作為我國采用的一種分組密碼標準發布。

對于數據加密算法,常見的分組密碼算法有美國的AES 標準[2]以及中國的SM4 標準,且SM4 的安全特性等效于AES-128[3]。SM4 作為一種分組密碼算法,其分組長度及密鑰長度均為128 bit,加密算法與密鑰擴展算法均采用32 輪非線性迭代結構。SM4 算法常見的實現方式有硬件實現與軟件實現。其中,基于硬件實現時,需要將算法部分固化進硬件電路,其高性能的表現建立在高資源開銷的基礎上。雖然目前已有諸多降低SM4 算法硬件電路開銷的方法被提出,例如通過部分架構重用降低復雜度[4],通過基于復合域計算實現Sbox來降低存儲Sbox 數據所需硬件開銷[5]以及基于異步多米諾邏輯實現SM4 算法[6],但其總體硬件資源開銷仍較大,且在需要支持多種算法的情況下會導致成本累加[7]。相比硬件實現,軟件實現具有成本低、靈活性強的特點,但同時存在性能差的弊端。微處理器指令擴展技術作為一種相對折中的方式,通過增加SM4算法相關的微處理器指令,采用硬件實現影響密碼算法性能的基本操作部件[8],實現以較低的硬件資源開銷換取使用微處理器實現算法時性能的提升。

目前,通過擴展處理器指令集的方式實現對密碼算法加速的方式已經被一定程度地應用到了實際的處理器中。例如,基于x86 指令集架構的Intel AES-NI[9],用于改進應用程序使用AES 算法執行加密和解密的速度;基于ARMv8-A 架構的密碼指令擴展,包括在ARMv8.2-SM 中實現的面向SM3 以及SM4 算法的擴展指令。這些擴展指令均已被實際應用于人們日常使用的計算機等終端設備中,但卻并不適用于一些小型處理器。RISC-V架構的處理器由于其開源、靈活以及資源節約等特性,更適用于資源有限的環境,基于RISC-V 的SM4 算法擴展指令也不斷地被提出與設計實現,如文獻[10]中針對SM4 算法的擴展指令使加密性能提升至少5倍,文獻[11]中使用擴展指令形成SM4算法的軟硬件協同實現機制使吞吐率提升至少4.47倍。

本文選擇基于開源指令集RISC-V以及開源小型處理器VexRiscv[12],設計實現一種針對SM4密碼算法的擴展指令,使用Xilinx Artix-7 FPGA 進行實際測試并對其硬件資源開銷、加解密性能進行分析評估。通過本文設計實現的擴展指令的使用對比無擴展指令的SM4算法軟件方式實現,針對不同字節長度數據塊進行加密,性能提升約8~14 倍;在增加該擴展指令集后,處理器的總體硬件資源開銷相比于不包含SM4 算法擴展指令僅增加59LUΤs,遠低于增加基于硬件實現的SM4 算法部分帶來的硬件開銷。

2 SM4算法擴展指令

本文提出的SM4算法擴展指令,是基于已公開國密算法標準設計實現的硬件擴展指令。SM4 算法包括加密算法部分以及密鑰算法擴展部分(如圖1),加密算法以及密鑰擴展算法均采用32 輪非線性迭代結構,因而我們只需減少單次迭代的實現時間即可達到針對性能的提升。由此,本文針對密碼算法部分以及密鑰擴展部分的輪函數提出表1 中所示兩條SM4 算法擴展指令,指令sm4ed用于實現加解密算法輪函數中的部分運算,指令sm4ks用于實現密鑰擴展輪函數中的部分運算。

圖1 SM4密碼算法

表1 SM4密碼算法擴展指令集

本文設計實現的SM4密碼算法擴展指令,使用兩個源寄存器、一個目的寄存器以及長度為1 bit的標志位fn用以區別表示兩條擴展指令,即表1 中所列標志位取值。指令的執行過程,將先獲取源寄存器rs2 中的數據,根據fn的值選擇相應的運算過程進行運算,并將指令執行結果寫入目的寄存器rd。基于以上需求,結合圖2(a)中所示RV32 主要指令結構,本文選擇采用RV32 R-type 指令格式,設計SM4算法擴展指令編碼格式如圖2(b)所示。

圖2 RV32 R-type及SM4擴展指令格式

3 SM4 密碼算法擴展指令的實現與應用

在傳統的處理器設計中,一條指令是分為多個流水階段執行的。流水線階段劃分越多,越能減少流水線每階段所需要的邏輯深度。經典的處理器設計中常應用五階流水線結構,即取值、譯碼、執行、訪存及寫回階段。在諸多基于傳統硬件描述語言設計的開源RISC 處理器中,多階段的流水線結構往往對應多個硬件描述語言編寫成的模塊,如SCR1[13]以及CV32E40P[14],在實現對指令集擴展的過程中需要對流水線各階段的實現代碼都進行一定程度的修改,這對于實現擴展指令的增加操作并不友好。因此,在諸多開源RISC-V的處理器中,我們選擇了基于VexRiscv 處理器來實現我們的SM4密碼算法擴展指令。

VexRiscv 處理器基于SpinalHDL 語言實現,指令的執行過程可根據需求配置為2~5 級流水線,同時,它不再以流水線的階段作為模塊的劃分對象,而是根據功能劃分實現處理器各組成部。因此,在實現指令的增加與擴展時,只需要按照功能增加相關的模塊,而不需要對原有處理器結構等內容做出修改,這為我們的實現以及優化工作提供了便利。

根據兩條指令的功能,我們將指令的執行過程適配于五階流水線結構,數據的運算結果將在訪存階段運算完成并在寫回階段被寫回至目的寄存器rd。依據圖1 中所示SM4 密碼算法實現過程并結合實際運行需要,本文中設計實現的兩條SM4密碼算法擴展指令其軟件端的調用格式在表1 中給出,對應參數取值及運算過程如圖3所示。

SM4 密碼算法的實現過程包含圖1 中所示32輪次迭代運算,單次迭代過程如圖3(a)所示。對于第i次執行輪函數F,其輸入參數可劃分為圖3(a)中rs1、rs2 框中所示兩部分,對應sm4ed指令調用格式中所列參數rs1 與rs2;其輸出結果如圖3(a)中rd框中所示,對應sm4ed指令調用格式中rd。實際應用時,本文將每4 次迭代過程視為一組運算過程,對于SM4 密碼算法的整體實現過程可看作8組運算過程,則SM4 加密算法中32 輪迭代可通過如下代碼實現:

圖3 SM4算法擴展指令實現內容

上述代碼中,部分異或運算可以復用,因此在實際實現過程中,每組運算可進一步減少兩次異或運算,即僅調用10次異或運算指令以及4次sm4ed指令,使得單次迭代指令條數為3.5 條。密鑰擴展部分迭代過程與密碼算法部分基本一致,sm4ks指令的調用參數取值及指令執行結果如圖3(b)中rs1,rs2 以及rd框中所示。

4 實驗結果與分析

為驗證SM4 密碼算法擴展指令功能并對其資源開銷以及運算性能加以評估,本文基于開源RISC-V處理器VexRiscv,使用SpinalHDL語言描述實現,并基于Xilinx Artix-7 FPGA(XC7A50T-1FTG256C)進行實際驗證與測試。本文對硬件資源開銷以及加解密性能方面進行了相關的測試并給出分析。

4.1 硬件資源開銷

為了評估硬件資源所需的開銷,本文將不包含SM4 算法擴展指令與包含SM4 算法擴展指令的VexRiscv 處理器分別以100MHz 的時鐘頻率進行綜合,硬件資源開銷數據結果如表2 所示。對表2中綜合結果LUΤs 的開銷進行分析,在增加SM4 密碼算法擴展指令后,處理器整體硬件資源開銷僅增加59 個LUΤs,相比于不包含SM4 算法擴展指令時處理器整體硬件資源開銷增加約1.60%。文獻[15]中針對SM4算法使用多種硬件架構進行實現,本文選取其硬件資源開銷最小的數據作為本文硬件資源開銷評估的參考。通過擴展指令集的方式實現SM4 算法帶來的硬件資源開銷遠低于基于硬件實現方式所需的硬件資源開銷。

表2 基于Artix-7 FPGA 綜合結果

4.2 性能表現

基于SM4算法的軟件實現過程中,將需要調用多條基礎指令進行運算的可重復過程使用單條擴展指令替代,則可以通過大幅減少指令條數實現對性能的提升。文獻[7]中以字節為單位設計實現SM4算法擴展指令,實現了單次迭代過程指令調用數為6.5條;本文設計實現的SM4算法擴展指令,單條指令可完成對4 字節的運算過程,因此能夠實現單次迭代過程所需指令數僅為3.5 條,相較于文獻[7]進一步減少。

為進一步對性能表現加以評估,本文將SM4算法基于VexRiscv 處理器分別采用使用指令集以及不使用指令集進行軟件實現,并通過在Xilinx Artix-7 FPGA(XC7A50T-1FTG256C)上實際測試得出數據結果見圖4。由于SM4 算法存在密鑰擴展部分的特性,在實現加解密過程中,對較長數據進行加密時,其總體加密性能將優于對短字節長度數據進行加密,且在字節長度較大時密鑰擴展部分實現過程的時鐘消耗占比極低,則總體吞吐率將趨近于單獨實現SM4算法部分的運算性能。由此,本文分別對比不同長度(16 字節~16384 字節)的數據塊進行加密計算。從圖4 可以看出,本文設計的SM4算法擴展指令對比無擴展指令的軟件實現,基于不同長度數據性能提升8.96倍~14.33倍,對于長數據塊進行加解密運算時帶來的性能提升程度更大,最大吞吐率可達81.82Mbit/s。

圖4 SM4算法性能測試結果

5 結語

本文針對SM4 算法,基于開源RISC-V 指令集以及VexRiscv微處理器,提出了兩條針對實現SM4密鑰擴展算法以及加解密算法的擴展指令,完成了相應的硬件電路設計與實現,基于Xilinx Artix-7 FPGA進行了實際應用及測試。通過實際測試結果來看,本文設計實現的SM4 算法擴展指令,在低硬件資源開銷的同時,與無擴展指令的實現方式相比,減少了算法實現過程中調用的指令數,提升了加解密運算性能,在100MHz 時鐘頻率下,對于長字節數據塊加解密過程吞吐率提升至無擴展指令時的14.33 倍,達到81.82Mbit/s。未來我們將繼續完善基于現有SM4擴展指令的優化工作,并嘗試實現針對其他密碼算法的擴展指令來更好地滿足不同使用環境下對不同密碼算法實現性能加速的需求。

猜你喜歡
指令
聽我指令:大催眠術
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
巧用G10指令實現橢圓輪廓零件倒圓角
時代農機(2015年3期)2015-11-14 01:14:29
中斷與跳轉操作對指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設備等產品安全規定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動制冷劑行業發展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 日本不卡视频在线| 在线观看免费人成视频色快速| 久久久久88色偷偷| 国产成人精品在线1区| 美美女高清毛片视频免费观看| 免费99精品国产自在现线| 超碰精品无码一区二区| 国产福利一区二区在线观看| 国产精品熟女亚洲AV麻豆| 日韩免费无码人妻系列| 国产成人精品男人的天堂| 国产一在线观看| 澳门av无码| 九色视频一区| 国产超碰在线观看| 91国内在线视频| 亚洲天堂精品视频| 国产白浆在线| 精品视频91| 97精品国产高清久久久久蜜芽 | 亚洲日产2021三区在线| 亚洲综合婷婷激情| 亚洲第一中文字幕| av一区二区无码在线| 亚洲综合精品第一页| 美女一区二区在线观看| 中文字幕欧美日韩| 一边摸一边做爽的视频17国产| 国产精品一区在线观看你懂的| 在线免费无码视频| 最新国产网站| 欧美 亚洲 日韩 国产| 中国美女**毛片录像在线| 天天躁日日躁狠狠躁中文字幕| 国产91熟女高潮一区二区| 国产91色| 精品国产www| 久久6免费视频| 粗大猛烈进出高潮视频无码| 国产亚洲欧美在线视频| AV老司机AV天堂| 91精品日韩人妻无码久久| 国产欧美在线观看一区| 8090成人午夜精品| 色屁屁一区二区三区视频国产| 尤物成AV人片在线观看| 欧美在线伊人| 欧美日韩精品在线播放| 色婷婷国产精品视频| 日韩国产综合精选| 爽爽影院十八禁在线观看| 国产一二视频| 色成人综合| 呦视频在线一区二区三区| 91视频区| 国产精品免费电影| 又污又黄又无遮挡网站| 男女精品视频| 97国产在线视频| 一级高清毛片免费a级高清毛片| 亚洲成a人片| 国产精品福利尤物youwu | 欧美成一级| 天堂在线视频精品| 国产91视频观看| 精品国产Av电影无码久久久| 亚洲欧美自拍视频| 欧美狠狠干| 亚洲美女一区| 国产一区成人| 波多野衣结在线精品二区| 亚洲AⅤ无码国产精品| 国产一区成人| 精品伊人久久久香线蕉| 国产jizzjizz视频| 国产精品亚洲一区二区三区z| 欧美精品在线免费| 国产三级国产精品国产普男人| 国内精品久久人妻无码大片高| 亚洲精品久综合蜜| 国产三级国产精品国产普男人| 2021精品国产自在现线看|