






















收稿日期:2022-02-14;修回日期:2022-04-10" 基金項目:廣東省重大科技計劃資助項目(2021B110127007)
作者簡介:李建立(1997-),男,廣東廣州人,碩士研究生,主要研究方向為加密算法、硬件加速;莫燕南(1997-),男,廣東深圳人,碩士研究生,主要研究方向為AI加速、人工智能;粟濤(1977-),男(通信作者),湖南益陽人,副教授,博士,主要研究方向為人工智能、芯片與應用系統設計(sutao@mail.sysu.edu.cn);陳弟虎(1963-),男,四川綿陽人,教授,博士,主要研究方向為集成電路設計方法、深度學習與圖像識別技術.
摘 要:隨著電子信息技術的快速發展,數據的安全性問題日益嚴峻,傳統單一制密碼算法在安全性與運算速率上已不能滿足要求。為了解決大數據時代下所提出的加密需求,提出了一種基于國密算法SM2、SM3、SM4的高速混合加密系統的硬件設計方案,并針對SM2和SM4算法的底層硬件結構進行優化。對SM2算法采用Karatsuba Ofman模乘器與點運算并行方案進行優化。對SM4算法提出了一種基于復合域S盒的二次流水全展開硬件架構。實驗結果表明,該系統所實現的各算法電路均具有較高性能。SM2的點乘時間縮短至68.37 μs;SM3的雜湊值生成僅需0.71 μs;SM4吞吐率最高達53.76 Gbps。相比同等安全性的SM2算法,該混合系統在加密時間上減小了26.67%,具有實用價值。與相關工作進行對比分析,可證明該方案在安全性和加/解密性能上均有一定優勢。
關鍵詞:SM2公鑰密碼算法;SM4分組加密算法;硬件設計;混合加密
中圖分類號:TP391"" 文獻標志碼:A
文章編號:1001-3695(2022)09-040-2818-08
doi:10.19734/j.issn.1001-3695.2022.02.0072
Hardware design of high-speed hybrid encryption system based on SM2,SM3 and SM4 algorithm
Li Jianli,Mo Yannan,Su Tao,Chen Dihu
(School of Electronics amp; Information Technology,Sun Yat-Sen University,Guangzhou 510006,China)
Abstract:
With the rapid development of electronic information technology,the security of data has become increasingly serious.The traditional single cipher algorithm cannot meet the requirements any more.In order to solve these problems,this paper proposed a hardware design scheme of high-speed hybrid encryption system based on SM2,SM3,SM4,in which the hardware structure of SM2 and SM4 algorithms was optimized.Besides,this paper optimized the SM2 algorithm with Karatsuba-Ofman modular multiplier and parallel with point operation.For SM4 algorithm,this paper designed a subpipelining hardware architecture bas on composite field S-box so as to improve its throughout.The experimental results show that all the algorithm circuits implemented by the system have high performance:the point multiplication time of SM2 is 68.37 μs;the hash generation of SM3 only take 0.71 μs;the throughput of SM4 is up to 53.76 Gbps.Compared with the SM2 algorithm with the same security,this hybrid system has 26.67% less encryption time.By comparing and analyzing with related work,it can be proved that this scheme has certain advantages in security and encryption and decryption performance.
Key words:SM2 algorithm;SM4 algorithm;hardware design;hybrid encryption
0 引言
近年來,隨著計算機技術的快速發展以及大數據、云計算、物聯網等技術產業的橫空出世,人們在生活與生產中越來越離不開各種信息數據的傳遞與交互。信息技術在推動經濟與社會發展的同時,也面臨著巨大的安全隱患:網絡攻擊、信息泄露、隱私數據被盜等事件頻發,信息安全問題日益加劇。另外,各類側信道密碼攻擊技術的發展也使得各種單一加密算法面臨著嚴峻的安全性挑戰。與此同時,5G技術的日益成熟讓人們步入了高帶寬時代,也對數據的加密速度提出了更高的要求。在即時通信、車聯網應用、遠程醫療等對延時要求較高的場景下,加密系統的數據處理速度變得十分關鍵。因此,在大數據時代下,研究如何在高速傳輸的情況下保障數據信息安全至關重要。
混合加密技術是結合了多種加密體制和算法的一種新型加密技術,可以根據實際需求選擇不同的加密體制進行加密方案的構建。目前,許多國內外學者對混合加密體制進行了大量的研究與分析。Mostafaa等人[1]提出了一種基于AES和ECC的輕量級混合加密硬件系統,并通過優化AES算法使得整體方案更加適合硬件資源有限的場景。Shende等人[2]則結合了AES和RSA兩種算法的優點提出了一種混合加密方案,提高了系統的安全性。在國密算法方面,文獻[3,4]分別選擇了SM4-ECC和SM4-SM2的算法組合構建其加密方案,并從軟件層面證明所提出的混合加密體制在安全性與擴散性系數上均高于單一制算法。文獻[5]則通過研究SM2、SM3與SM4算法在變電站局域網中的應用情況,設計出一種基于國密算法的云存儲混合加密方案。Zheng等人[6]利用軟硬件協同設計的方法,提出了同樣基于SM2、SM3和SM4的加/解密和數字簽名方案,與相關工作相比其處理速度提高了10%以上??傮w而言,混合加密體制不僅提高了算法的安全性,同時也能兼顧加/解密的高效性與密鑰管理的便利性,優于傳統單一制加密算法。
國密算法SM2和SM4是目前國內較為主流的國產密碼算法,在安全性研究與硬件實現上已有大量的研究成果。文獻[7]基于Montgomery模乘算法,設計了一種高速雙域SM2模乘器,并提出了一種新型的Wallace樹乘法單元,節省了大量資源。文獻[8]提出了一種基于改進蒙哥馬利點乘算法的并行點運算架構,通過坐標壓縮以減少模乘步驟。文獻[9]針對低端FPGA芯片,從算法和硬件實現兩方面優化了SM2的模乘和模逆運算,提高了硬件資源的復用率,實現了面積和速度的平衡。而在SM4算法硬件架構的研究上,文獻[10,11]均采用了32輪輪間流水全展開型架構,降低了每一組數據加/解密的平均時間,提供了極高的吞吐率。文獻[12]提出了一種輪密鑰擴展與加/解密模塊硬件復用的架構,其占用的資源僅為傳統設計的55%。文獻[13,14]則在輪間流水全展開的基礎上對輪函數內部進行了二次流水切分,減少了電路的關鍵路徑。
從文獻分析與研究結果看,目前在混合加密方面,國外的研究重點偏向于AES、RSA以及ECC這類國際算法,而國內對國密算法的混合加密研究關注點主要集中在算法安全性方面,對混合加密算法的硬件優化和性能提升上的研究比較欠缺。此外,在國密算法SM2與SM4的硬件實現研究上也仍存在一定的優化提升空間。基于上述現狀問題的分析,本文結合三種國密算法各自的優勢,提出了一種基于國密算法SM2、SM3、SM4的混合加密硬件系統設計,在提高了加密系統安全性的同時可完成大量信息數據的高速加/解密運算。同時,還針對SM2與SM4算法的結構對其硬件架構進行了優化設計,最終設計出一個集運算速率、硬件資源利用率以及數據安全性于一體的高速混合加密硬件系統,以解決信息化建設中對應用數據提出的高速率、高吞吐率加/解密傳輸需求。
1 算法原理與混合加密系統設計原理
1.1 SM2算法原理
SM2橢圓曲線密碼算法是我國公鑰密碼算法標準,于2010年12月首次公開。相關研究表明,SM2算法的安全性達到了公鑰密碼算法的最高安全級別[15]。
1.1.1 SM2曲線參數選擇
SM2算法具有與ECC算法相同的數學概念基礎,是一種基于求解橢圓曲線離散對數問題的加密算法。橢圓曲線是一種特殊的曲線,它實際上是Weierstrass方程所構成的平面光滑曲線,定義在偽梅森素數域GF(p)上的SM2橢圓曲線表達式為
E:y2=x3+ax+b(1)
其中:a,b∈GF(p),且4a3+27b2≠0 mod p。在國家密碼標準中,推薦的定義在256位素數域上的SM2橢圓曲線系統參數為(所有值均以16進制表示)
素數p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
系數a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
系數b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7
F39789F5 15AB8F92 DDBCBD41 4D940E93
1.1.2 SM2算法層次結構
SM2算法在結構上具有明顯的層次性特點,其自頂向下可以劃分為四個層次,如圖1所示。頂層為SM2應用層,包括數字簽名、密鑰交換和公鑰加密,主要通過調用點乘計算模塊來實現不同的加密功能;群運算層為點乘模塊,是SM2的核心運算,通過調用點加與倍點實現;點運算層分為點加和倍點兩個模塊,分別實現橢圓曲線上兩個基礎計算功能;底層則是最基本的模運算單元,包括模加、模減、模乘以及模逆運算,分別實現有限域上的各種模運算。本文對于SM2算法的硬件加速研究主要集中在點運算層與模運算層,通過并行化點運算以及優化模乘運算實現高效運算,從而提高SM2整體性能。
1.2 SM3算法原理
SM3算法是一種分組迭代的雜湊算法,可以將任意長度的輸入轉為恒為256 bit的摘要值輸出,由國家密碼管理局于2010年12月17日發布。SM3算法主要分為填充分組以及迭代壓縮兩個步驟,其計算流程如圖2所示。
填充分組:假設輸入的長度為l bit。首先將比特“1”添加到消息的末尾,再添加k個“0”, k為滿足l+1+k ≡ 448 mod 512的最小非負整數。然后再添加一個長度l的二進制表示比特串。填充后的比特長度為512的倍數,并按512 bit一組分組。
迭代壓縮:對分組后的消息按式(2)進行迭代計算。
V(i+1)=CF(V(i),B(i)) i=0,1,2,…,n-1(2)
其中:n=(l+k+65)/512;CF是壓縮函數;V(0)為256 bit初始值IV;B(i)是消息分組;V(n)是最后的雜湊值結果。
1.3 SM4算法原理
SM4分組密碼算法是我國密碼管理局于2006年公布的國內第一個商用密碼算法,對于我國密碼學研究的發展起到了極大的推動作用[16]。SM4算法是一種分組算法,其分組長度和密鑰長度均為128 bit。SM4內部的加/解密運算和密鑰擴展運算都是32輪的非線性迭代結構,而非線性變換里的基本運算單元為S盒。其主要運算結構以字(Z322)為單位,一次運算為一輪變換。定義為32 bit異或運算,lt;lt;lt;i為32 bit循環左移i位;加密密鑰用MK表示;輪密鑰用rki表示,系統參數用FK=(FK0,FK1,FK2,FK3)表示,固定參數用(CK0,CK1,…,CK31)表示。
1.3.1 加/解密算法
算法1 SM4加密算法
輸入:(X0,X1,X2,X3)∈(Z322)4;rk0,rk1,…,rk31∈Z322為輪密鑰。
輸出:(Y0,Y1,Y2,Y3)∈(Z322)4。
1.i=0,1,2,…,31:
Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi⊕Xi+1⊕Xi+2⊕Xi+3⊕rki)
2.(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)
其中:F為輪變換函數;T為合成置換,包含了非線性變換τ和線性變換L,即T(.)=L(τ(·));τ內部為四個并行S盒,L為線性變換。合成置換T過程如算法2所示。
算法2 合成置換T算法
輸入:A=(a0,a1,a2,a3)∈(Z82)4。
輸出:C=(c0,c1,c2,c3)∈(Z82)4。
1.B=(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))
2.C=L(B)=B⊕(Blt;lt;lt;2)⊕(Blt;lt;lt;10)⊕(Blt;lt;lt;18)⊕(Blt;lt;lt;24)
解密算法與加密算法的運算流程相同,只是輪密鑰的使用次序與加密相反。
1.3.2 密鑰擴展算法
算法3 密鑰擴展算法
輸入:MK=(MK0,MK1,MK2,MK3),MKi∈Z322(i=0,1,2,3)。
輸出:rki∈Z322(i=0,1,2,…,31)。
1.(K0,K1,K2,K3)=(FK0⊕MK0,FK1⊕MK1,FK2⊕MK2,FK3⊕MK3)
2.i=0,1,2,…,31:
rki=Ki+4=Ki⊕T’(Ki+1⊕Ki+2⊕Ki+3⊕CKi)
其中:T’中的線性變換為L’:(Blt;lt;lt;13)⊕(Blt;lt;lt;23),其余部分與加/解密運算中的T變換相同。
1.4 基于SM2、SM3、SM4算法的高速混合加密系統
SM2非對稱算法得益于橢圓曲線密碼體制,其公鑰可對外公開,可實現密鑰的便捷管理,信息傳輸的安全性也較高。但是由于涉及大位寬的復雜模運算,SM2算法的加/解密速度普遍較慢,僅適用于加密小塊數據。SM3算法屬于單向加密的密碼體制,對于明文信息只能計算出雜湊值,而無法從雜湊值反向推算出對應明文數據。SM4對稱算法雖然結構簡單、復雜度低、加/解密速度快,但是其需要額外的安全信道分發密鑰,密鑰管理復雜且安全性難以保證。
本文在研究了SM2、SM3以及SM4三種算法各自的特點后,提出了一種兼顧加密安全性、高速性以及密鑰管理便利性的混合加密系統,其基本原理如下:基于大數據時代高速率加/解密傳輸的需求,采用經本文硬件優化后的SM4算法快速加/解密海量的應用數據;利用SM2算法安全性高、密鑰管理簡單的特點,采用同樣經優化后的SM2算法對SM4密鑰進行加/解密;另外,本文系統還采用SM3雜湊算法對加/解密前后的明文進行雜湊值對比驗證,防止信息在傳輸過程中被竄改。由于混合使用了三種不同體制的加密算法,本文提出的混合加密系統在傳輸密鑰時不再需要額外的安全信道,同時還可以實現大量數據的高速加/解密與驗證運算,其加/解密流程如圖3所示。
假設需要加密傳輸的數據為信息明文P,且發送方和接收方之間的傳輸通道是不安全的,則具體的加/解密傳輸過程如下:
a)接收方使用SM2算法生成配對的公鑰和私鑰,并在加密計算前先將公鑰發送給發送方。
b)發送方接收到SM2公鑰后,使用SM2算法加密SM4密鑰生成密鑰密文,同時使用SM4算法加密信息明文P生成信息密文C,另外再使用SM3算法計算P中首尾兩組數據塊的摘要值。待三種算法均計算完成后,將三組數據打包,通過傳輸通道一同發送給接收方。
c)接收方在收到數據后,首先利用SM2私鑰,通過SM2算法將SM4密鑰解密出來;然后利用SM4密鑰,通過SM4算法解密所收到的信息密文C,得到尚未驗證的信息明文P;接著使用SM3算法計算得到信息明文P的摘要值B,并與所收到的摘要值A進行對比驗證。若一致,則代表數據在傳輸過程中沒有被竄改,可輸出所解密的信息明文P,完成解密;若兩組摘要值不一致,則說明數據在傳輸中已被竄改,解密出來的數據存在安全風險,系統發出警告并退出解密。
從理論上分析本文提出的混合加密系統可以發現,在加密過程中最耗時的步驟為海量數據明文的SM4加密計算,而因為解密過程是三種算法串行執行的,所以決定解密速度的步驟主要為對密鑰密文的SM2解密計算,以及對大量信息密文的SM4解密計算?;谝陨戏治隹芍?,若想提高混合加密系統的整體性能,需考慮提升SM2和SM4算法的計算速率和硬件效率。因此,本文的研究重點將集中在對SM2和SM4算法的硬件優化和性能提升上,采用并行化與流水線技術對兩個算法的硬件架構進行優化設計,解決制約加/解密速度提升的瓶頸,保證混合加密系統能夠滿足高性能密碼運算的需求。
2 SM2算法的硬件加速設計
橢圓曲線的點乘運算是SM2算法的核心運算,其運行速度決定了SM2算法的速度。點乘運算一般涉及大量大數運算,而這些運算操作用軟件實現會非常復雜且效率低下,因此通常采用硬件優化的實現方式以提高SM2算法的性能。本文在綜合考慮性能與資源的情況下,采用自底向上的思路,對SM2算法的硬件實現進行優化設計。首先從底層的模乘運算出發,對模乘器的硬件實現采用Karatsuba-Ofman算法進行優化設計,降低計算復雜度與硬件資源的消耗;其次,本文還分析研究了不同架構下點加和倍點運算的硬件性能提升與資源消耗情況,在資源合理運用的情況下實現了SM2算法的快速點乘運算。
2.1 模乘運算優化設計
SM2算法在進行點乘運算的過程中會頻繁地調用乘法器進行大數模乘運算,故實現模乘的快速運算是提高SM2算法性能的一個關鍵。常見的模乘方法主要有Barrett算法、Montgomery算法、大數乘法搭配快速模約減等[17]。Barrett算法除了乘法以外還采用了除法操作,對于硬件實現來說,該算法在運算時間與資源消耗上都非常低效。Montgomery算法雖然通過移位和加法操作代替了除法操作,但是其運算結果并非模乘的最后結果,仍需要進一步的轉換運算,更適用于多次乘法的模冪運算,對于單次模乘計算并無優勢。因此,本文采用大數乘法搭配快速模約減的方式實現模乘運算。
在大數乘法方面,運用Karatsuba-Ofman算法的分治思想,將256 bit的乘法拆分成三次128 bit乘法,并以基于129 bit乘法器的方式完成大數乘法運算。相比于直接使用256 bit乘法器[18],Karatsuba-Ofman算法雖然需要更多的時鐘周期來完成,但是減少了25%的計算量,硬件資源消耗更小,提高了運算效率與資源利用率。基于該算法實現的256 bit乘法如算法4所示。
算法4 256 bit Karatsuba-Ofman算法
輸入:256 bit整數A,B,且有A=aH×2128+aL,B=bH×2128+bL。
輸出:C=A×B,C為512 bit整數。
1.PL=aL×bL,aS=aH+aL,bS=bH+bL
2.PH=aH×bH,C1=PH+PL,C2={PH,PL}-C1×2128
3.PS=aS×bS,C=C2+PS×2128
該算法中包含了三次128 bit的加/減法、兩次512 bit的加/減法、兩次128 bit的乘法以及一次129 bit的乘法。同時,算法中2的冪次運算在硬件中可以通過移位操作實現,以節省硬件消耗與計算時間。根據算法4,提出如圖4所示的256 bit Karatsuba-Ofman乘法硬件設計。
該硬件設計采用一個129 bit的乘法器、兩個并行的512 bit加法器以及移位寄存器實現,同時對加法運算進行二級并行處理,將256 bit的乘法運算降低至三個時鐘周期。其中乘法器負責128 bit與129 bit的乘法運算,加法器負責128 bit與512 bit的加減法運算,通過是否取補碼實現。該設計在縮短運算周期的同時也實現了較低的硬件開銷,資源利用率達到了88.8%。
在取模方面,由于本文選取的素數p為偽梅森素數,根據其性質,該素數可表示為少量的2的冪的和或差,本文選取的素數則可改寫為p256=2256-2224-296+264-1。根據該表達式,可以采用快速模約減算法快速地對512 bit的乘法結果取模。參考文獻[19]中的快速模約減算法完成整體模乘器的硬件電路設計,如圖5所示??焖倌<s減算法通過簡單的截位拼接與加減法即可完成取模運算,省去了常規取模中煩瑣的乘法與除法運算,有利于縮短整體的運算時間、節省硬件的資源消耗。
該模乘器采用了Karatsuba-Ofman算法與快速模約減算法相匹配的方式,僅利用低位寬加法、乘法以及移位等簡單的操作,最終在四個周期內完成了復雜的256 bit模乘運算。
2.2 點運算并行優化設計
點運算層是實現點乘運算的基礎,因此對點加和倍點運算進行優化加速也非常重要。在Jacobian投影—仿射混合坐標下實現點加、在Jacobian投影坐標下實現倍點的組合方式可以避免耗時的模逆運算,同時該組合方式也是眾多坐標系中運算復雜度最低的選擇。Jacobian投影—仿射混合坐標下點加運算與Jacobian投影坐標下倍點運算的定義分別如算法6、7所示[19]。
算法6 Jacobian投影—仿射混合坐標下點加運算
輸入:P=(X1,Y1,Z1),Q=(X2,Y2,1),P≠Q,Z1≠0。
輸出:P+Q=(X3,Y3,Z3)。
X3=(Y2Z31-Y1)2-(X2Z21-X1)2(X2Z21+X1)
Y3=(Y2Z31-Y1)(X1(X2Z21-X1)2-X3)-Y1(X2Z21-X1)3
Z3=(X2Z21-X1)Z1
算法7 Jacobian投影坐標下倍點運算
輸入:P=(X1,Y1,Z1),Z1≠0,a=p-3。
輸出:2P=(X3,Y3,Z3)。
X3=[3(X1+Z21)(X1-Z21)]2-8X1Y21
Y3=3(X1+Z21)(X1-Z21)(4X1Y21-X3)-8Y41
Z3=2Y1Z1
對于點加算法,通過分析算法中各步驟數據間的依賴關系,將不存在相關性的運算進行并行加速,從算法實現層面降低點加運算時間。對算法步驟進行拆分,根據運算相關性提出了點加計算的二級并行加速方案,如算法8所示。
算法8 Jacobian投影—仿射混合坐標下二級并行點加運算
輸入:P=(X1,Y1,Z1),Q=(X2,Y2,1),P≠Q,Z1≠0。
輸出:P+Q=(X3,Y3,Z3)。
模乘器0模乘器1模加減器0模加減器1
1A=Z1×Z1B=Y2×Z1NANA
2A×BC=A×X2A=AB-Y1B=C-X1
3Z3=B×Z1D=B×BE=C+X1NA
4A×AD×EX3=AA-DENA
5D×X1B=D×BC=DX1-X3NA
6A×CB×Y1Y3=AC-BY1NA
由算法6可知,點加運算需要進行9次的模乘計算與3次的模平方運算,若采用傳統的循環串行計算方式則至少需要12輪運算來完成。而本文提出的二級并行方案則通過采用兩個模乘器的方法進行加速,對乘法運算采用并行的計算方式處理,從而將運算迭代縮短至六輪。根據所提出的點加二級并行方案,點加模塊在硬件實現上需要實例化兩個模乘器、三個模加減器,并通過共享的寄存器(A、B、C、D、E)存儲與調用中間的計算結果。在研究了串行、二級并行以及三級并行[20]三種方案每輪迭代中最長的運算路徑后,可得出如表1所示的運算時間對比。
其中:M代表模乘;A/S代表模加與模減運算。由于在模乘運算以及每輪迭代后,共享寄存器需要額外一個時鐘周期進行數據的暫存與傳輸,所以在點運算中模乘實際需要5個時鐘周期。
通過對比可知,二級并行方案和文獻[20]中的三級并行方案與傳統串行方案相比,在速度上均有極大的提升。而三級并行方案[20]雖然在運算時間上是三種方案中最快的,但是該方案需要例化三套模乘器與模加減器,其在硬件消耗上也是三者中最高的。因此,本文在綜合考慮性能與硬件資源的因素后,最終采用二級并行的方式實現點加運算。
同理,對于倍點算法,本文采用相同的分析方式提出了如算法9所示的二級并行加速方案。
算法9 Jacobian投影坐標下二級并行倍點運算
輸入:P=(X1,Y1,Z1),Z1≠0,a=p-3。
輸出:2P=(X3,Y3,Z3)。
模乘器0模乘器1模加減器0模加減器1模加減器2
1A=Y1×Z1Z1×Z1B=Y1+Y1C=X1+Z21C=X1-Z21
2A=C×DB=B×BZ3=A+AC=B+BNA
3C=C×X1D=B×X1A=A+AA=A+2ANA
4A×AB×Y1B=BY1+BY1X3=AA-CC=D-X3
5A×CB×Y1Y3=AC-BY1NA NA
倍點運算需要進行6次的模乘計算與4次的模平方運算,根據本文提出的二級并行方案,可將倍點運算的迭代減小至5輪。在硬件實現上,倍點模塊同樣需要實例化兩個模乘器與三個模加減器,以及四個共享寄存器。倍點運算三種方案的運算時間對比如表2所示。
可以看出,二級并行方案在運算周期上比串行方案有一定的提升。為了提高硬件利用率,倍點運算的實現同樣選擇了兼顧性能與資源消耗的二級并行方案。
2.3 點乘運算的實現
點乘運算的實質是對橢圓曲線坐標進行多次點加與倍點計算的結果,故在電路實現上需要頻繁調度點加與倍點模塊。由于本文采用不同的坐標系實現點加和倍點運算以減少耗時的模逆運算次數,所以還需要相應的坐標轉換模塊,從而將最終的點乘結果轉換至仿射坐標系下。圖6為點乘運算的組成模塊。
點乘模塊通過循環調用256次兩個點運算模塊完成256 bit的點乘計算,并采取移位寄存器搭配多路選擇器的方式來判斷是否需要進行點加。其中倍點與點加模塊均采用了二級并行的方案與Karatsuba-Ofman算法模乘器進行加速。
3 SM4算法的硬件加速設計
SM4算法的高速實現是提升大量數據加/解密速度的關鍵,在硬件實現上對SM4算法進行優化加速同樣重要。本文對S盒的硬件實現進行了研究,采用復合域求逆的方式來構造;同時,還在此基礎上提出一種二次流水全展開硬件架構,并對輪函數模塊進行硬件復用,以較小硬件開銷,實現了極高的吞吐量。
3.1 基于復合域求逆S盒的實現
S盒是SM4實現中對性能影響最大的部分,其在很大程度上決定了整個SM4算法的硬件實現性能。目前S盒的構造方法主要分為查表式與代數式。傳統的查表式S盒是一個包含256個數據的字節代換表,雖然硬件上可以采用寄存器或ROM的方式簡單實現,但是面積開銷較大,電路性能也難以提升。代數式S盒又分為有限域求逆和復合域求逆兩種構造方式。有限域上的求逆運算非常復雜,難以用硬件實現;而復合域求逆的方式在運算量和硬件消耗上均很小,適合用于硬件實現。
在2007年Liu等人[21]提出了一種如式(3)所示的代數式構造S盒的方法,即S盒可以通過仿射變換和乘法求逆來實現。
S(x)=I(x·A1+C1)·A2+C2(3)
其中:x是S盒的8 bit二進制輸入;A1、A2為循環矩陣;C1、C2為行向量;I(x)是GF(28)域上的乘法求逆運算。在復合域上進行乘法求逆,可以很大程度地簡化運算復雜度。利用復合域求GF(28)域上乘法逆元的運算過程如圖7所示。
其主要步驟如下:a)利用同構映射T1和T2將GF(28)域上的元素映射到復合域GF(((22)2)2);b)在GF(2)域上用異或運算求出GF(22)的逆元;c)將GF(22)的逆元結果回代運算,用基于GF(22)的乘法運算求出GF((22)2)逆元;d)將GF((22)2)逆元結果回代運算,用基于GF((22)2)的乘法運算求出GF(((22)2)2)的逆元;e)利用逆同構映射T1-1和T2-1將求逆結果從GF(((22)2)2)映射回GF(28)域,最終得到GF(28)域的乘法逆元結果。
以⊕代表異或門,根據圖7并參考文獻[22]中關于復合域求逆的設計,對仿射變換和同構映射部分進行化簡合并,設計出復合域求逆S盒的硬件結構如圖8~11所示。
可見,在最底層GF(22)子域上的求逆運算僅僅只用到了異或運算。另外,根據擴展式對系數乘方運算進行化簡優化后,設計出各域上的乘法電路與系數乘方電路硬件電路結構分別如圖12和13所示。
經優化后的S盒電路僅使用數量較少的異或門和與門即可實現256 bit數據的替換運算,相比于直接使用查找表的方式,該方案極大地降低了運算復雜度和硬件開銷。同時, 采用純組合邏輯實現的S盒電路也為后續進行輪內流水優化提供了便利。在基于復合域求逆S盒的基礎上,根據SM4算法的描述,完成了SM4單輪輪函數的硬件設計,并分析各電路模塊的資源消耗情況和關鍵路徑,如表3所示。
3.2 SM4算法的流水線結構設計
SM4算法的吞吐率計算如式(4)所示。其中:B表示處理的數據位寬,在這里固定為128 bit;f代表電路頻率;N代表平均每組加/解密數據的處理輪數。由此可見,要提高SM4算法的吞吐率,一方面要對電路的關鍵路徑進行優化,提升硬件整體頻率f;另一方面還要降低每組加/解密數據的平均處理輪數N。
throughput=B×fN(4)
根據SM4算法的定義可知,該算法是由32輪完全相同的輪函數組成,且在加/解密過程中前后數據完全獨立,因此可以采用流水線處理的結構來實現SM4分組密碼算法的高吞吐率計算。本文首先采用輪內流水的結構實現單輪輪函數,以提高時鐘頻率f;再采用輪間流水的結構完成整體SM4算法電路,以降低平均處理輪數N,從而實現高速運算。
3.2.1 輪內流水處理結構
要想提高電路的時鐘頻率,就必須降低每輪運算中的運算量,尤其是在輪函數運算較為復雜的時候,其關鍵路徑限制了在硬件實現下的最大時鐘頻率。針對這種情況,可以采用輪內流水處理結構進行加速,通過將輪函數內的運算單元進行拆解后插入寄存器以建立流水線,進而構造輪內流水結構。
分析表3中SM4電路的關鍵路徑,在輪函數電路中的不同位置插入寄存器,設計出如圖14所示的四種輪內流水結構。輪內流水結構將每一輪的運算從內部切分,縮短了整體電路的關鍵路徑,極大地降低了電路中每一拍的運算時間。
3.2.2 輪間流水處理結構
一般而言,傳統的SM4算法采取循環迭代式的結構實現,即僅實例化一個輪函數電路,并通過不斷重復調用此電路以實現32輪運算。對于傳統循環迭代式結構,其每組數據的加/解密時間至少為32個周期,下一組數據需要等待上一組數據循環計算32次后方可開始計算,實際吞吐率并不高。因此,該結構雖然能節省大量電路開銷,但是其運算效率低下,不適合高性能加/解密系統的設計。
而輪間流水處理結構則是指以輪函數作為基本運算單元,采取循環展開的方式,構造流水線實現數據的流水處理。具體而言,輪間流水結構在進行電路設計時實例化32個輪函數電路,并在每一輪運算之間用寄存器隔開,每組數據無須等待,可以以流水的形式緊跟上組數據輸入電路進行計算。輪間流水處理的優勢在于,當流水線一旦構造完成,系統將在每個時鐘周期完成一組密碼運算,平均下來每組數據的加/解密時間僅為一個周期,極大地提升了整體電路的吞吐率。
在采用如圖14所示的輪內流水結構的基礎上,對SM4電路進行循環全展開,以輪間流水的方式實現SM4的整體電路設計,最終SM4算法的硬件電路架構如圖15所示。
該電路采用了復合域求逆S盒、輪內流水處理以及32輪全展開輪間流水處理三種優化技術,為加/解密電路帶來了極大的性能提升。同時,本文還根據加/解密模塊和輪密鑰擴展模塊在算法結構上的相似性,在輪函數電路內對這兩個模塊進行了硬件上的復用合并,并通過多路選擇器來對輸入數據以及移位邏輯進行選擇,進一步提高了硬件電路的利用率。
4 實驗結果與性能對比
4.1 實驗環境
本文基于所述硬件架構,使用硬件描述語言Verilog-HDL實現了高速混合加密系統的整體硬件設計,并在硬件平臺Xilinx Ultrascale+系列的ZCU102開發板上進行板級測試,驗證設計正確性及分析工作性能。
4.2 實驗結果
本文設計完成了一個高性能的混合加密系統,其系統框圖如圖16所示。該系統主要由SM2、SM3、SM4三種加密算法模塊、狀態機控制模塊以及輸入輸出緩存器模塊組成,可以采用三種加密算法進行高速防竄改混合加密運算。
在系統中,三個密碼模塊相互獨立且工作頻率各不相同,模塊間數據交互以異步方式處理。表4為總系統以及各算法模塊工作頻率與資源消耗情況。
由表4可看出,各算法模塊的最高頻率與資源消耗各不相同。其中SM2算法模塊的面積開銷最大,所需的LUT與DSP最多;SM3模塊由于采取了循環迭代的方式實現,極大地降低了電路資源消耗,電路開銷最小;SM4算法模塊在考慮硬件效率的情況下選擇了輪間全展開加上輪內四級流水的架構實現,其平均每組數據加密時間降低至一個時鐘周期,同時工作頻率也提升至400 MHz,非常適合大量數據的快速加/解密運算。
此外,分別利用三種單一制算法加密大小為16 K的明文數據,與本文混合加密系統進行加密性能以及相關特性的對比,具體情況如表5所示。
可以看到,雖然SM3與SM4算法在加密時間上均有優勢,但它們均有一些算法體制上的不足:SM3算法只能進行單向加密計算,無法從雜湊值反推得到明文數據;SM4算法需要額外的安全通道進行密鑰傳輸,在密鑰管理上煩瑣復雜。而混合加密算法不僅與SM2算法一樣不存在上述算法體制的問題,而且在加密時間上也比SM2算法縮短了26.67%,充分體現了本文設計的混合加密系統的優越性。
在SM2算法的點運算層優化上,本文的二級并行方案與傳統串行方案[23]、三級并行方案[20]的復現結果性能對比如表6、7所示。其中AT2為硬件電路的面積與運算時間平方的乘積,用于評估不同方案性能優劣。
可以看到,本文設計的二級并行加速方案雖然在運算時間上并不是最短的,但是其AT2指標均為最小,相比于傳統串行方案分別降低了39.6%和11.5%,在運算時間和面積開銷的協調平衡上最具優勢。
在SM4算法的流水線優化上,表8列出了在32輪全展開輪間流水的結構下不同輪內流水級數架構的FPGA電路實現情況。同時,表中還引入了吞吐率/面積的指標,以衡量各架構的速度與資源消耗情況。其中CLB代表Xilinx FPGA芯片的可配置邏輯單元(configurable logic block,CLB)。
由表8可以看到,五級輪內流水架構的時鐘頻率和吞吐率均為最高,分別達到了420 MHz和53.7 Gbps,吞吐率相比于無輪內流水提高了136.7%。而在吞吐率/面積指標上,四級輪內流水架構取得了最佳性能,高達24.26 Mbps/CLB,相比優化前提升了73.5%。在對加密速率和整體硬件消耗進行取舍后,選取四級輪內流水架構作為混合加密系統中SM4算法的實現方案,以實現高吞吐率與硬件消耗的性能平衡。
4.3 相關工作對比
4.3.1 SM2性能對比
將SM2算法模塊的硬件實現結果與其他同類型文獻工作對比,得出如表9所示的SM2算法點乘運算性能對比情況。
從表9可知,本文設計的SM2點乘電路的最高工作頻率高達215 MHz,僅需68.37 μs即可完成一次點乘計算,在運算速度上具有一定優勢。經本文優化后的點乘電路僅次于文獻[18],而文獻[18]由于采用了多個256 bit大位寬乘法器,可以在一個周期內完成模乘計算,雖然具有高性能的優勢,但是硬件開銷也非常龐大,并不適合資源有限的場景。此外,在同樣使用FPGA開發平臺的工作中,本文設計在工作頻率和運算速度上的優勢更為明顯。與綜合性能較優的文獻[20]相比,本文設計的最高頻率提升了約2.92倍,運算時間縮短了約68.9%。
綜上所述,本文設計的模乘單元采用了KO算法和模加運算并行的實現方案,有效降低了模乘運算的運算周期,同時還對點運算層進行二級模乘運算并行的優化設計,使得優化后的SM2算法電路取得最佳的性能,更加適合本文混合加密系統。
4.3.2 SM4性能對比
表10中列舉了同樣在32輪全展開輪間流水的結構下,本文SM4設計方案與各文獻方案的電路實現情況性能對比,表中的吞吐率均為理論峰值吞吐率。相比于各參考文獻,在同等采用輪間流水優化結構的情況下,本文設計的四級與五級輪內流水架構突破了單輪運算關鍵路徑過長的瓶頸,其系統最高工作頻率分別達到400 MHz和420 MHz,峰值吞吐率分別高達51.2 Gbps和53.76 Gbps。與性能較優的文獻[30]相比,本文設計的最高頻率分別提升了16.3%和22%,吞吐率提高了21.6%和27.7%,完成了高吞吐率加/解密算法硬件實現的目標,可以很好地滿足本文提出的高速混合加密系統的需求。
5 結束語
本文提出了一種基于國密算法SM2、SM3、SM4的高速混合加密系統,通過混合使用三種加密算法,避免了單一密碼體制安全性不高、加密速率過慢、密鑰管理不便等缺點。此外,本文還對系統中限制整體加/解密速度提升的SM2和SM4算法進行硬件實現上的優化設計。實驗結果表明,本文設計的SM2硬件電路由于采用了二級點運算并行架構,在運算速率與硬件利用率上相比于現有工作更具優勢。另外,本文在輪間流水結構的基礎上,對內部電路進行分析與優化,設計出了一種基于復合域S盒的SM4二次流水架構,進一步提高了電路工作頻率,其最高峰值吞吐率達到了53.76 Gbps。綜上所述,本文所設計的混合加密系統通過采用多種加密算法以及對相關電路進行優化,在保證安全性的同時提供了極高的運算速率,解決了大數據時代下海量數據加/解密的高速加/解密需求。
參考文獻:
[1]Mostafaa H,Eisaa S M,Issaa H H,et al.Lightweight hybrid encryption system with FPGA design proposal[J].IOP Conference Series:Materials Science and Engineering,2021,1051(1):012023.
[2]Shende V,Kulkarni M.FPGA based hardware implementation of hybrid cryptographic algorithm for encryption and decryption[C]//Proc of IEEE ICEECCOT.Piscataway,NJ:IEEE Press,2017:416-419.
[3]卞建秀,李垣江,王建華.基于SM4和ECC的混合加密算法研究[J].計算機應用與軟件,2016,33(10):303-306,324.(Bian Jianxiu,Li Yuanjiang,Wang Jianhua.Study on SM4 and ECC-based hybrid encryption algorithm[J].Computer Applications and Software,2016,33(10):303-306,324.)
[4]方軼,叢林虎,鄧建球.基于國密算法的武器裝備數據混合加密方案[J].探測與控制學報,2020,42(1):121-126.(Fang Yi,Cong Linhu,Deng Jianqiu.A hybrid encryption scheme of weapons and equipment data based on national security algorithm[J].Journal of Detection and Control,2020,42(1):121-126.)
[5]Wang Tong,Cui Wenpeng,Li Tong,et al.The research of the SM2,SM3 and SM4 algorithms in WLAN of transformer substation[C]//Proc of the 3rd International Conference on Electronic Information Technology and Computer Engineering.Piscataway,NJ:IEEE Press,2019:276-283.
[6]Zheng Xin,Xu Chongyao,Hu Xianghong,et al.The software/hardware co-design and implementation of SM2/3/4 encryption/decryption and digital signature system[J].IEEE Trans on Computer-Aided Design of Integrated Circuits and Systems,2019,39(10):2055-2066.
[7]郭曉,蔣安平,宗宇.SM2高速雙域Montgomery模乘的硬件設計[J].微電子學與計算機,2013,30(9):17-21.(Guo Xiao,Jiang Anping,Zong Yu.A high speed structure for dual-field Montgomery modular multiplication in SM2[J].Microelectronics and Compu-ter,2013,30(9):17-21.)
[8]Zhang Dan,Bai Guoqiang.High-performance implementation of SM2 based on FPGA[C]//Proc of the 8th IEEE International Conference on Communication Software and Networks.Piscataway,NJ:IEEE Press,2016:718-722.
[9]楊博,孟李林,陶瓊.基于FPGA的F_P域模乘與模逆的設計與實現[J].微電子學與計算機,2017,34(5):54-58.(Yang Bo,Meng Lilin,Tao Qiong.Design of F_P field modular multiplication and mo-dular inversion based on FPGA[J].Microelectronics and Compu-ter,2017,34(5):54-58.)
[10]Gao Xianwei,Lu Erhong,Xian Liqin,et al.FPGA implementation of the SMS4 block cipher in the Chinese WAPI standard[C]//Proc of IEEE ICESS.Piscataway,NJ:IEEE Press,2008:104-106.
[11]Wang Husen,Li Shuguo.High performance FPGA implementation for SMS4[M].Berlin:Springer,2011:469-475.
[12]王晨光,喬樹山,黑勇.分組密碼算法SM4的低復雜度實現[J].計算機工程,2013,39(7):177-180.(Wang Chenguang,Qiao Shushan,Hei Yong.Low complexity implementation of block cipher SM4 algorithm[J].Computer Engineering,2013,39(7):177-180.)
[13]周洲,何一凡,沈海斌,等.SMS4密碼算法高速引擎實現[J].電子器件,2007(4):1469-1471,1480.(Zhou Zhou,He Yifan,Shen Haibin,et al.High-speed implementation of the SMS4 algorithm engine[J].Journal of Electron Devices,2007(4):1469-1471,1480.)
[14]Fu Hailiang,Bai Guoqiang,Wu Xingjun.A very compact masked S-box for high-performance implementation of SM4 based on composite field[C]//Proc of ICST.Berlin:Springer,2017:710-721.
[15]汪朝暉,張振峰.SM2 橢圓曲線公鑰密碼算法綜述[J].信息安全研究,2016,2(11):972-982.(Wang Zhaohui,Zhang Zhenfeng.Overview on public key cryptographic algorithm SM2 based on elliptic curves[J].Journal of Information Security Research,2016,2(11):972-982.)
[16]呂述望,蘇波展,王鵬,等.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.)
[17]鄒雪城,周家樂,劉文超,等.小面積高兼容性RSAamp;SM2的硬件實現方法[J].華中科技大學學報:自然科學版,2019,47(1):79-84.(Zou Xuecheng,Zhou Jiale,Liu Wenchao,et al.Design method of RSAamp;SM2 hardware with low-area and high-compatibility[J].Journal of Huazhong University of Science and Technology:Natural Science,2019,47(1):79-84.)
[18]Zhao Zhenwei,Bai Guoqiang.Ultra high-speed SM2 ASIC implementation[C]//Proc of the 13th IEEE International Conference on Trust,Security and Privacy in Computing and Communications.Piscataway,NJ:IEEE Press,2014:182-188.
[19]Hankerson D,Menezes A J,Vanstone S.Guide to elliptic curve cryptography[M].[S.l.] :Springer Science amp; Business Media,2006.
[20]李凡,李云峰,翁天恒,等.基于FPGA的SM2點運算快速并行實現[J].電子測量技術,2020,43(15):105-111.(Li Fan,Li Yunfeng,Weng Tianheng,et al.Implementation of parallel and fast SM2 point calculation on FPGA[J].Electronic Measurement Technology,2020,43(15):105-111.)
[21]Liu Fen,Wen Ji,Lei Hu,et al.Analysis of the SMS4 block cipher[C]//Proc of ACISP.Berlin:Springer,2007:158-170.
[22]徐艷華,白雪飛,郭立.適合SMS4算法硬件實現的S盒構造新方法[J].中國科學技術大學學報,2009,39(11):1164-1170.(Xu Yanhua,Bai Xuefei,Guo Li.A new algorithm of S-box for hardware implementation of SMS4[J].Journal of University of Science and Technology of China,2009,39(11):1164-1170.)
[23]陸啟樂.一種面向橢圓曲線的雙域點乘加速器的設計[D].南京:東南大學,2018.(Lu Qile.Design of a dual-field point multiplication accelerator in elliptic curve cryptography[D].Nanjing:Southeast University,2018.)
[24]陸江城.基于非對稱加密算法的加密系統的研究與實現[D].廣州:廣東工業大學,2020.(Lu Jiangcheng.Research and implementation of encryption system based on asymmetric encryption[D].Guangzhou:Guangdong University of Technology,2020.)
[25]張盛仕,胡湘宏,熊曉明.基于國密算法SM2軟硬件協同系統的FPGA架構[J].單片機與嵌入式系統應用,2019,19(7):15-19.(Zhang Shengshi,Hu Xianghong,Xiong Xiaoming.FPGA architecture of software and hardware co-design based on nation secret algorithm SM2[J].Microcontrollers and Embedded Systems,2019,19(7):15-19.)
[26]Guan Zhenyu,Li Yunhao,Shang Tao,et al.Implementation of SM4 on FPGA:trade-off analysis between area and speed[C]//Proc of IEEE ISR.Piscataway,NJ:IEEE Press,2018:192-197.
[27]Liu Zilong,Liu Dongsheng,Zou Xuecheng.An efficient and flexible hardware implementation of the dual-field elliptic curve cryptographic processor[J].IEEE Trans on Industrial Electronics,2017,64(3):2353-2362.
[28]張麗.雙域橢圓曲線密碼協處理器關鍵技術研究[D].西安:西安電子科技大學,2019.(Zhang Li.Research on key technology of dualfield elliptic curve cryptography coprocessor[D].Xi’an:Xidian University,2019.)
[29]劉金峒,梁科,王錦,等.SM4加密算法可裁剪式結構設計與硬件實現[J].南開大學學報:自然科學版,2019,52(4):41-45.(Liu Jintong,Liang Ke,Wang Jin,et al.Tailorable structure design and hardware implementation of SM4 encryption algorithm[J].Journal of Nankai University:Natural Science,2019,52(4):41-45.)
[30]何詩洋,李暉,李鳳華.SM4算法的FPGA優化實現方法[J].西安電子科技大學學報,2021,48(3):155-162.(He Shiyang,Li Hui,Li Fenghua.Optimization and implementation of the SM4 on FPGA[J].Journal of Xidian University,2021,48(3):155-162.)