李斌,周清雷,陳曉杰,馮峰
(1.鄭州大學計算機與人工智能學院,河南 鄭州 450001;2.數學工程與先進計算國家重點實驗室,河南 鄭州 450001)
橢圓曲線密碼(ECC,elliptic curve cryptography)算法作為公鑰密碼學中的一個研究重點,在性能、安全方面都被證明有很大的優勢,在許多領域得到了廣泛的應用。SM2 算法由國家密碼管理局發布,是基于ECC 的公鑰密碼算法,旨在替換RSA 算法。SM2 算法作為一種國密算法,已在電子認證系統、密鑰管理系統等多種商用密碼產品中得到應用。
SM2 的實現依賴于橢圓曲線群上的點加、倍點和點乘的運算效率,其計算量大、結構復雜,存在算法效率不高、資源消耗較多等問題。為此,國內外眾多學者對ECC 算法進行了大量的研究,包括使用FPGA(field-programmable gate array)可重部件的優化[1-3]和ASIC(application specific integrated circuit)專用芯片的設計[4-6]。但僅優化了推薦參數SM2 的計算,可擴展并行能力差,難以滿足日益多樣化的應用需求。同時,通過硬件實現的SM2 在運算過程中由于電磁輻射和功耗,會不可避免地泄露部分側信道信息,容易受到能量分析攻擊的威脅[7]。因此,在保證SM2 執行效率的同時提高密碼系統的安全性具有十分重大的意義。
由此,本文提出了一種可重構的素域SM2 算法優化方法,通過對SM2 算法的深入剖析,結合KOA(Karatsuba-Ofman algorithm)乘法、快速模約減、Barrett 模約減、基4 求模逆、蒙哥馬利點乘、點加和倍點等多種優化方法,利用FPGA 的可重構特性,實現了高能效和抗攻擊的SM2 算法。同時,自頂向下設計了SM2 并行架構,可并行執行多個SM2 算法,滿足各種應用場景的計算需求。
SM2 算法包括素域和二元擴域2 種基域,對于素域,SM2 算法在素域Fp上的橢圓曲線方程為


經推導,可知

在素域中,對于橢圓曲線上的點P、Q和無窮遠點O,有以下運算規則。
1)P+O=P。
2)如果P=(x1,y1),則-P=(x1,-y1),且P+(-P)=O。
3)如果Q=(x2,y2),且Q≠-P,那么P+Q=(x3,y3),并有

其中

當P≠Q(x1≠x2)時,P+Q稱為橢圓曲線上的點加運算;當P=O(x1=x2)時,P+Q=2P稱為橢圓曲線上的倍點運算。
點乘,也稱多倍點運算,是決定橢圓曲線密碼體制運算速度的關鍵。橢圓曲線的點乘運算是指曲線上的某一基點P與一個整數k進行乘法運算,也就是k個P相加,即
由以上分析可以看出,對點加、倍點和點乘的優化是提高SM2 計算效率的重要手段。
從SM2 的定義和運算描述中可以看出,它以大數模運算為基本運算,運算量大、耗時長,模運算的效率直接決定了SM2 的計算速度。其次,不同坐標系下橢圓曲線的計算式也會發生變化,坐標系的選擇和計算式的優化對SM2 的計算速度也有很大的影響。最后,如何利用FPGA實現高效的、可擴展的和適用的SM2 也面臨嚴峻的挑戰。
為此,國內外學者對橢圓曲線的優化加速展開了廣泛的研究。文獻[8]設計了4 個模乘模塊,可并行計算點乘的運算。文獻[9]在Jacobian 坐標系下,利用交叉模乘,減少了資源占用和時延。文獻[10]在FPGA 上優化實現了FourQ 橢圓曲線,并設計了單核和多核結構。文獻[11]提出了快速模逆算法,采用基為8 的擴展歐幾里得算法減少了計算周期。文獻[12]結合Karatsuba、快速模約減和蒙哥馬利點乘實現了美國國家標準與技術研究院(NIST,National Institute of Standards and Technology)素域的ECC 算法。文獻[13]采用基為4 的交叉模乘和最大公約數求模除優化了SM2 素域和二元擴域算法。文獻[14]設計了多種素域乘法運算,包括Booth 乘法、Moore 乘法等,并結合快速模約減實現了模乘運算。文獻[15]使用Toom-Cook算法減少了橢圓曲線中模乘的運算量。文獻[16]結合多種算法和優化技術實現了支持一般參數的蒙哥馬利和Weierstrass 橢圓曲線算法。文獻[17]在雅可比坐標系下,使用基為2 的交叉模乘及蒙哥馬利點乘優化了素域ECC 算法。但是,SM2 的計算復雜度和具體的實現結構、坐標系、點乘算法、模乘算法、模逆算法等緊密相關,一部分方案僅優化了模乘和模逆算法;另一部分方案仍采用基為2 的低基數實現方式;其他方案未涉及多模塊并行的架構設計。另外,大多數方案僅考慮了推薦參數(國家密碼管理局和NIST 推薦的橢圓曲線參數)的橢圓曲線,并未涉及任意參數的實現。同時,大多數方案并未在FPGA 上實現坐標系的轉換。
由以上分析可以看出,要提高SM2 的FPGA 實現速度,一是要對關鍵路徑進行分解,深度優化,提高計算效率;二是要增加并行度,包括各模塊間的并行和同時處理數據的能力。為此,需要從SM2 的各個計算階段著手分析,結合FPGA 可重構的特性,針對不同的運算、存儲和通信特征選擇合適的實現方式。本文選擇標準射影坐標系,采用蒙哥馬利算法實現點乘,并利用KOA 乘法、快速模約減、模加減實現點加和倍點運算,以極大提高SM2 算法速度。其中,KOA 乘法采用DSP 實現,快速模約減、模加減采用加法器和查找表實現。然后,實例化多個點加和倍點模塊,兩兩一組形成點乘運算,從而實現SM2的多路并行計算。最后,利用Barrett 算法實現任意參數的快速模乘運算,并使用基為4 的擴展歐幾里得算法實現模逆,完成坐標系的轉換。
SM2算法整體架構如圖1所示。該架構采用CPU+FPGA 的方式實現,并通過PCIe 進行數據的傳輸。其中,CPU 主要完成信息的配置、中間狀態的查詢和最終結果的顯示;FPGA 主要完成SM2 的加速計算,其核心模塊包括點乘、點加、倍點和坐標轉換。通過CPU 重構FPGA 完成電路邏輯配置,再以軟硬件協同方式實現SM2 的加密、解密、簽名、驗簽和密鑰交換等功能。

圖1 SM2 算法整體架構
在計算SM2 點乘時,會多次調用點加和倍點運算,而坐標轉換只在最后計算一次,因此本文對點加和倍點以性能最優進行優化,而對坐標轉換以資源最優進行優化。其次,由主控狀態機對多個點乘模塊進行調度管理,實現SM2 的并行處理,滿足不同應用場合的計算需求。最后,各點乘模塊共享模加減模塊,實現資源的復用,并通過異步FIFO 完成數據的傳輸,以減少FPGA 資源的消耗。
由此可見,本文通過優化底層各種模運算,再以并行和資源共享的方式實現多路點乘,完成了SM2 的FPGA 可重構優化設計,支持多種參數的動態配置。此外,本文以CPU和FPGA 搭建了異構架構,通過并行調度和協同計算,并以重構FPGA提供高并發和多任務處理陣列,保證了高效能密碼運算的業務需求。
快速模乘采用KOA 乘法和快速模約減實現,先由KOA 算法完成2 個大數的相乘,再由快速模約減算法完成結果的取模運算。其中,KOA 算法和快速模約減算法計算周期分別為一個時鐘,則快速模乘可在2 個時鐘內完成整個運算。
2.2.1 KOA 快速乘法
KOA[18]算法的核心思想是“分而治之”,采用遞歸的方式將一個復雜的乘法運算分解成多個簡單的乘法運算,較傳統計算速度更快、效率更高。對于2 個n位數,如果直接相乘,其復雜度為O(n2);如果使用KOA 算法,可以將復雜度降低到O(nlb3)。

其中,C2=AH×BH,C1=AH×BL+AL×BH,C0=AL×BL。而C1又可表示為C1=(AH+AL)×(BH+BL)-C2-C0,由此,整個算法只需要計算乘法AH×BH、AL×BL和(AH+AL)×(BH+BL),從而降低了復雜度。
對于SM2,其參數為256 位,而FPGA DSP 支持最大位寬為64 位的乘法運算,那么可以將256 位分割成128 位,再將128 位分割成64 位,經過兩次遞歸運算,得到最終的結果。另外,C2×2n和可直接通過向左移位(<<)完成,如算法1 所示。
算法1KOA 乘法
輸入A,B,n//n為位寬
輸出C


為進一步優化KOA 算法在FPGA 上的實現,本文將64 位DSP 乘法時鐘周期設置為0,并通過wire 類型變量將各個模塊互連。當256 位數據輸入時,可立即計算出結果,并由寄存器緩存輸出,整個計算過程為一個時鐘。128 位KOA 乘法的FPGA硬件結構如圖2 所示。

圖2128 位KOA 乘法的FPGA 硬件結構
對于256 位KOA 乘法,與圖2 結構相同,只需將DSP 64 位乘法替換為128 位KOA 乘法即可。這樣,通過第一層調用256 位KOA 算法,第二層計算128 位KOA 乘法,第三層調用DSP 并計算64位乘法,逐層完成計算。
2.2.2 快速模約減
對于素數域SM2 算法,當PSM2給定時,可以通過多次模約減操作替代除法操作,從而快速求得取模的結果,稱為快速模約減[19]。
設c=a×b且0≤a<PSM2,0≤b<PSM2,則0≤c≤,于是c可以表示為


其中,c[i]∈[0,232),0≤i≤15。
定義256 位數組s為

則sum=(s[0]+s[1]+s[2]+s[3])×2+s[4]+s[5]+s[6] +s[7]+s[8]+s[9] -s[10] -s[11] -s[12] -s[13],那么cmodPSM2=sum modPSM2,顯然快速模約減將模除運算變為模加減運算,從而大大降低了算法的復雜度。
進一步,對數組s的運算進行觀察分析可以看出,c[8]+c[9]+c[10]+c[11]被執行了3 次,c[12] +c[13]+c[14]+c[15]被執行了6 次。因此,可以對頻次高的組合數值進行預計算,以此簡化后續計算步驟。這里,令r0=c[15]+c[14],r1=r0+c[13],r2=r1+c[12],r3=(c[11]+c[10]+c[9])+c[8],r4=c[13]+c[8],r5=c[14]+c[9],r6=r2+r3,則sum的計算可由117 個8 位加法器在一個時鐘內完成。而未優化時,則需要13×32=416 個加法器。
同時,sum 最大不超過14PSM2,可以通過預計算提前給出kPSM2(0≤k≤15)的值,然后根據sum 的高4 位選擇對應的kPSM2,并使用2 次減法完成模約減。然而,在減法過程中可能產生溢出,這里以carry1和carry2為溢出標志位,并根據carry1是否產生溢出而選擇result1或result2作為結果,具體如算法2 所示。
算法2快速模約減優化
輸入sum[259:0],PSM2,kPSM2
輸出c_reduce


2.2.3 Barrett 模乘
Barrett 算法[20]利用乘法和模約減運算代替了高成本的除法來實現取模運算,可計算任何參數的模乘。對于0≤a<PSM2,0≤b<PSM2,則a×b<。為計算c=a×bmodPSM2,0≤c<PSM2,令d=a×b,如果存在e使d=e×PSM2+c,則可求得c。

其中,n。對于e′的計算,由除法轉變為了乘法,且和可以通過向右移位(>>)的方式實現,大大降低了計算量。而對于μ的計算,可以使用軟件提前計算出來,例如當模數PSM2為FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 時,對應的μ值為1 00000001 00000001 00000001 000000018DFC2096FA323C0112AC6361 F15149A0。在大部分應用中,一旦選定模數PSM2,其在計算過程中就保持不變,因此μ只需要計算一次即可。最后,對于結果c,其取值范圍為[0,2PSM2),因此對c與PSM2進行比較判斷,并計算輸出最終結果。Barrett 模約減整體流程如算法3 所示。
算法3Barrett 模約減算法
輸入a,b,PSM2,
輸出c=a×bmodPSM2

在算法3中,μ可能為257 位,因此最高位μ[n]也要參與計算,步驟2)~步驟4)為e′的乘法及向下取整操作。顯然對于Barrett 模約減,必須借助高效的大數乘法才能發揮其優勢。因此,算法3中的步驟1)、步驟2)和步驟5)均采用KOA 乘法快速實現,對應的硬件結構如圖3 所示。

圖3 Barrett 模約減結構
從圖3中可以看出,Barrett 模約減計算周期為T=3TKOA+2TSUB+TADD,且關鍵路徑為KOA 算法。
對于素數a∈[1,PSM2-1],如果存在a-1,使a×a-1≡1modPSM2,則a-1稱為a的模逆元。通常在素數域上求模逆的算法有擴展歐幾里得、費馬小定理和蒙哥馬利算法。雖然,擴展歐幾里得算法采用輾轉相除法,但可以根據公約數的性質,將除法全部改成加減運算,并以二進制移位完成除2 運算,有利于硬件實現。而費馬小定理需要求a的次冪,蒙哥馬利算法與擴展歐幾里得算法原理較相似,但需要將結果從蒙哥馬利域轉到實數域,計算效率較低。
2.3.1 基4 的模逆優化

其中,u、v、w1、w2分別初始化為a、PSM2、b、0。然后用擴展歐幾里得算法對u和v進行計算,同時對w1和w2進行相應的線性變換,確保式(12)和式(13)保持成立。最后,當v=0 時停止迭代,此時有u=1,w1即所求的結果。
另外,以四進制表示,采用狀態機循環控制,對該算法進行優化。在每次迭代中,根據u和v的最后兩位對其進行判斷計算。當最后兩位為2′b00或2′b10,即u和v為偶數時,進行除以4 或2 的操作。當最后兩位相同時,將u和v相減,并進行除以4 的操作;否則,將u和v相減,并進行除以2的操作。具體流程如算法4 所示。
算法4擴展歐幾里得模逆算法
輸入a,b,PSM2
輸出c=modPSM2


在算法4中,步驟1)為初始化狀態;步驟2)為循環判斷狀態;步驟3)~步驟26)分別為各種判斷和計算;步驟28)為輸出。其次,對于u和v的計算始終保證其結果值小于PSM2,不需要額外處理。而w1和w2這2 個數的加減可能大于PSM2或者溢出,且除以2和4 需要額外進行判斷并調用模加減來處理。具體的計算式為

2.3.2 模加減優化
為求模逆元,需要用到模加減操作,這里將其合并在一個模塊中實現,以減少資源占用。該模塊根據模加減模式選擇不同的初值進行計算,其中模加的結果可能超過PSM2,因此結果需要再減去PSM2;而模減的結果可能為負數,因此可先加PSM2再做減法,并根據溢出標志位判斷最終的輸出結果,如算法5 所示。
算法5模加減
輸入a,b,PSM2,SEL
輸出c=a±bmodPSM2


算法5中,SEL 為模式選擇,根據模加和模減對a1、b1、a2、b2和m賦不同的初值,并通過步驟3)~步驟5)完成計算,其中c0、c1、c2為溢出標志位,可根據c1、c2的值確定最終的計算結果。
2.4.1 蒙哥馬利點乘
點乘算法有二進制展開掃描法、NAF(none adjacent form)掃描法、NAF 滑動窗口法及蒙哥馬利點乘算法[21]。目前,蒙哥馬利點乘算法是實現效率最高和應用范圍最廣的算法。蒙哥馬利點乘算法首先根據基點G,計算初始值R0和R1,R0=G,R1=2G;然后根據整數k的二進制編碼的每一位對R0和R1進行點加和倍點運算;最后根據k的二進制位數進行循環計算,并求得最終點乘結果。其具體運算過程如算法6 所示。
算法6蒙哥馬利點乘
輸入k=(kl-1,…,k0),點G
輸出Q=kG

從算法6中可以看出,無論ki的取值如何,每一次的循環過程中都會計算點加和倍點,且兩者相互獨立,可并行執行。同時,由于點加和倍點同時計算,使點乘運算過程中泄露的功耗信息無律可循,可有效抵抗簡單功耗攻擊(SPA,simple power analysis)。
2.4.2 點加和倍點優化
Fp上的橢圓曲線常用的坐標系有仿射坐標系、標準射影坐標系、Jacobian 加重射影坐標系和LD(Lopez &Dahab)射影坐標系。不同的坐標系表示在計算點加和倍點時的運算效率不同。這里,選擇標準射影坐標系完成計算,并在最后一步進行坐標系轉換。同時,為提高點加和倍點的計算效率,蒙哥馬利點乘只需x坐標參與計算,并在最后一步計算y坐標,大大簡化了計算過程。
在標準射影坐標系下,有點P(X1,Y1,Z1)和點Q(X2,Y2,Z2),則點加和倍點的計算式[22-23]分別為

最后,將結果轉換為仿射坐標系,有

則點(x1,y1)即所求,其中(xG,yG)為基點G的坐標。
通過對比可以看出,在仿射坐標系下,每次計算點加和倍點時都需要求模逆。而模逆計算周期長,計算復雜度高,難于優化。如果采用標準射影坐標,就可以消除點乘迭代過程中的模逆運算,從而提高運算效率。同時,在標準射影坐標下,會將投影點和仿射點進行一一映射,運算開始時將仿射坐標變換到射影坐標中表示,運算結束時再映射回仿射坐標。所以在整個運算過程中,僅在最后一次使用模逆運算,中間迭代過程沒有模逆參與。
2.4.3 數據流優化
為進一步優化點加和倍點的計算效率,本文對數據流進行了深度優化,使其在最短的時間內完成計算。由于快速模乘由KOA 乘法和快速模約減2個模塊組成,且都可在一個時鐘內計算出結果,因此本文調整點加和倍點的部分計算流程,交替調用KOA 乘法和快速模約減模塊,充分發揮計算效率。
點加和倍點計算過程和數據流分別如表1和表2所示。
從表1和表2中可以看出,經過12 個時鐘,即可完成點加和倍點的計算。

表1 點加計算過程和數據流

表2 倍點計算過程和數據流
為了進一步加速SM2 的計算,在FPGA 上實例化多個模塊,各模塊相互獨立,由上層狀態機調度管理,從而實現多任務的并行處理,提高可擴展性。這里采用貪心策略對任務進行分發,當計算完成時,進行仲裁匯總,并以地址為標識將對應的結果上報給CPU。假設SM2 并行模塊數為n,具體流程如下。
1)任務分發
①從0 到n輪詢SM2 是否空閑,如果存在空閑模塊i,跳轉②;否則繼續執行①。
②根據i對應的地址,將任務和控制命令載入第i個SM2 模塊對應的RAM。
2)執行計算
①第i個模塊從RAM中讀取自身的任務和控制命令。
②如果控制命令為開始,則說明任務已配置好,開始計算;否則跳轉①繼續等待。
3)結果匯總
①當第i個模塊計算完成時,將地址、完成標志位和結果寫入第i個FIFO。
②從0 到n輪詢所有FIFO,如果完成標志位為1,將該結果匯總到最終的一個FIFO,并上報。
其中,步驟1)~步驟3)并行執行,并通過異步RAM 或FIFO 進行數據傳輸。任務分發可依次寫入多個任務,各SM2 模塊收到任務后,開始并行計算。最后將結果匯總到一個FIFO中,并由CPU 依次讀取結果。
本文實驗的硬件平臺是由4 塊大規模FPGA 構成的加速卡,芯片型號為Xcku-060-ffva1156-2-i,軟件為Vivado 2019.2。
在FPGA 上以8 路并行實現SM2 整體算法,其各模塊時鐘頻率、資源占用和計算周期的具體情況如表3 所示。

表3 SM2 各模塊實現情況
從表3中可以看出,單個SM2中各模塊占用資源適中,充分利用了LUT、REG和DSP 等資源。其中,點乘頻率為27 MHz,經過3 064 個時鐘即可完成計算。當8 路SM2 并行時,整體占用FPGA 總LUT 資源的比例為60.23%,REG 為24.48%,DSP 為88.70%,整體功耗僅為3.375 W。由于FPGA 總的DSP 個數為2 760,當前實現共占用2 448 個,其使用接近飽和,具有較高的資源利用率。顯然,如果擁有更多的DSP資源,SM2 的性會進一步提高。
表4 給出了不同坐標系下點加和倍點運算次數對比。其中,I、M和S 分別表示模逆、模乘和模平方運算。顯然,蒙哥馬利方法優于其他方法,對于點加,其經過8 次模乘、2 次模平方即可完成計算;對于倍點,其經過6 次模乘、3 次模平方即可完成計算。

表4 不同坐標系下點加和倍點運算次數對比
對于點乘,在計算k倍點時,設k的比特數為l,如果采用二進制展開法,需要l次倍點和次點加運算;NAF 掃描法需要l次倍點和次點加運算;NAF滑動窗口法需要約l次倍點和次點加運算,其中ω為窗口寬度;蒙哥馬利法需要l次倍點和l次點加運算。但是對于FPGA,蒙哥馬利倍點和點加可并行計算,相當于整體只需要l次運算,而其他方法無法并行且整體運算次數明顯大于l。顯然,蒙哥馬利法具有更好的計算性能。
其次,表5 給出了FPGA 與CPU SM2 的速度對比。其中,FPGA 的速度為4 塊FPGA 的速度總和。

表5 FPGA 與CPU SM2 的速度對比
最后,將本文方案與其他硬件方案的點乘進行性能對比,如表6 所示。

表6 本文方案與其他硬件方案點乘性能對比
從表6可以看出,無論是任意參數還是推薦參數,相比于其他FPGA 實現,本文方案的點乘周期要遠低于其他方案。在點乘性能方面,由于時鐘頻率較低,單個模塊的計算性能不如其他部分方案。但是本文方案在FPGA中實例化了8 個模塊,對于任意參數,其總速度為7 984 次/秒,高于其他方案;對于推薦參數,其總速度為70 496 次/秒,遠高于文獻[4-5]的ASIC實現,且當加速卡4 塊FPGA 同時工作時,其最高總速度更是達到了281 984次/秒,具有十分可觀的效率。
SM2 算法除了對運算速度的要求外,還必須具備一定的抗攻擊能力。而SPA 是最常見的攻擊方式。本文SM2 算法每次都執行點加和倍點,且點加和倍點的功耗波形不存在差別,攻擊者無法得到運算規律,可有效抵抗SPA。
此外,面積與時間的乘積AT 客觀反映了資源消耗和算法性能之間的關系。AT 值越低,表明在有限的資源條件下,與性能之間取得的平衡越好。這里,將本文方案與其他FPGA 實現方案在安全性和AT 值方面進行了對比,如表7 所示。
從表7中可以看出,本文SM2 算法在具有抗SPA 的同時,也具有較優的AT 值。對于任意參數的橢圓曲線密碼算法實現,雖然文獻[2]占用資源少,AT 值低,但它不具有抗攻擊性。此外,由于文獻[2]采用蒙哥馬利模乘,需要額外進行預處理并對結果進行轉換。

表7 本文方案與其他FPGA 方案在安全性和AT 值方面的對比
最后,將本文方案與其他FPGA 實現的SM2算法進行了綜合對比,包括抗攻擊性、性能和AT值等方面,結果如表8 所示。
從表8中可以看出,本文方案在性能和AT 值方面均高于其他方案,性能至少提高了3.26 倍,AT值至少提高了4.84 倍,且具有抗攻擊性。這是由于本文方案深度優化了模乘運算,并優化了點加和倍點計算流程,縮短了點乘周期,提高了計算性能。同時,本文合理利用了FPGA 邏輯資源,減少了資源消耗,具有較優的AT 值。

表8 本文方案與其他FPGA 實現的SM2 算法綜合對比
SM2 簽名/驗簽、加解密和密鑰交換過程中會多次調用點乘。以簽名/驗簽應用為例,在簽名過程中會調用一次點乘和多次SM3 哈希值計算,在驗簽過程中會調用兩次點乘和多次SM3。為節省資源,對于SM3 采用將兩輪壓縮為一輪的串行方式實現;中間大數的模乘、模逆及坐標轉換采用共享模塊的方式實現,具體資源占用如表9 所示。

表9 SM2 簽名/驗簽的具體資源占用
在27 MHz 頻率下,由表9中的計算周期計算可得,單模塊簽名速度為7 165 次/秒,驗簽速度為3 556 次/秒。文獻[28]簽名速度為26 063 次/秒,但其未提及SM3 算法和坐標系轉換的耗時。本文方案FPGA 可用8 個模塊并行執行,當以一個SM3模塊+8 個點乘模塊+一個共享模塊的架構實現時,總簽名速度即點乘速度為70 496 次/秒,具有更高的計算效率。
在可擴展性方面,本文SM2 的并行架構在工程實現上方便移植。根據不同FPGA 芯片資源實例化不同數量的算法模塊,僅需修改主控狀態機,即可完成多模塊的通信與配置,以此實現多任務并行計算。
其次,SM2 各模塊間通過寄存器或FIFO 互連,具有松耦合架構,僅需替換快速模約減模塊,即可實現NIST ECC 256、區塊鏈中Secp256k1 等其他橢圓曲線算法。同時,本文實現了任意參數的SM2計算,適用范圍更廣。
最后,本文所有運算均在FPGA 內部實現,可配合哈希算法實現簽名/驗簽、加解密和密鑰交換等應用,且具有高效能計算的特點,可即插即用,靈活地應用在邊緣設備的認證、云端服務、隱私保護等多種場合。
本文提出的可重構SM2 素域算法優化通過對SM2 各計算階段的深入剖析,以軟硬件協同的方式實現,在標準射影坐標系下優化并實現了蒙哥馬利點乘、快速模乘、快速模逆和坐標系轉換。同時,通過SM2 多模塊并行,加速了數據的并行處理,可滿足不同應用的計算需求。實驗結果表明,該方法可重構出的SM2 算法在性能、資源等方面具有明顯優勢,較CPU 有352.48 倍以上的提升,并可擴展到簽名/驗簽、加解密和密鑰交換等功能,兼顧計算的高效性和靈活性。
下一步,將實現其他位寬的橢圓曲線的并行計算,通過對FPGA 進行合理布局劃分,完成相應算法的切換和共享模塊的使用,以獲取更高的計算性能和適用范圍。