崔永旭 劉立宗 孟偉 張麗萍 李攀



摘 要:目前SM2簽名算法應用越來越廣泛,隨著網絡通信與電子交易業務的快速增長,其運算效率面臨著前所未有的挑戰。為了提高密碼卡運算效率,設計并實現了一種基于SM2簽名算法的高速密碼卡。該密碼卡利用協議組合運算的思想,減少了DSP與FPGA交互次數,提高了簽名處理效率。同時,采用預計算技術將(1+d)-1的值存儲在密碼卡中,降低了簽名的計算復雜度。與傳統基于SM2簽名算法的密碼卡相比,該密碼卡簽名速度提高了22%,可適用于大量數據通信的場景。
關鍵詞:SM2簽名算法;密碼卡;組合運算;預計算技術
DOI:10. 11907/rjdk. 192396 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP309文獻標識碼:A 文章編號:1672-7800(2020)007-0183-04
Implementation of High-Speed Cryptographic Card of SM2 Signature Algorithm
CUI Yong-xu,LIU Li-zong,MENG Wei,ZHANG Li-ping,LI Pan
(Beijing Smartchip Microelectronics Technology Company Limited, Beijing 100096,China)
Abstract: SM2 signature algorithm has been applied widely and with the increase of network communication and electronic traffic, its efficiency is facing unprecedented challenges. In order to improve the computational efficiency of the cipher card, a high-speed cryptographic card of SM2 signature algorithm is designed and implemented. Using the idea of combinational operations, the number of interactions between DSP and FPGA is reduced to improve the efficiency of signature processing. At the same time, the value (1+d)-1 is stored in cipher card by using the pre-computation technique, reducing the computational complexity of the signature. Compared with the traditional cryptographic card of SM2 signature algorithm, the signature speed of the designed cryptographic card is increased by 22%, suitable for applications with data communication.
Key Words: SM2 signature algorithm; cryptographic card; combinational operations; pre-computation technique
0 引言
隨著信息技術的發展,人們的安全意識越來越強。密碼技術是一種能夠有效保證通信安全的技術手段,現已被廣泛應用于物聯網、大數據、云計算等領域[1-3]。SM2算法[4]作為我國公鑰密碼算法標準,相比RSA算法效率更高、安全性更好,且應用范圍更廣。SM2簽名算法作為SM2算法的一部分,不僅保證了消息的完整性,還可驗證消息來源的合法性,因此在電子政務[5]、銀行系統[6]及防偽認證[7]等領域發揮著重要作用。
密碼卡是一種與主機獨立的專用密碼設備,可實現加解密運算、簽名運算及簽名驗證等功能,具有安全可信、速度快等優勢[8-9],密碼卡也逐步成為應用最廣泛的密碼硬件設備之一。根據接口類型不同,密碼卡主要分為CardBus密碼卡、PCI密碼卡、PCI-E密碼卡以及USB密碼卡等幾類[8]。其中,PCI密碼卡因開發技術較為成熟,因而發展比較迅速。國外PCI密碼卡運行速度較快[10],但不支持國密算法芯片,參考價值不大。
為改善密碼卡計算性能,2013年,高東飛[10]設計并實現了一種具備SM2簽名功能的PCI密碼卡,該密碼卡利用FPGA技術控制芯片間的信號傳輸,從而提升了計算性能,但計算效率還有待進一步提高;同年,郭曉等[11]設計了一種基于SM2算法的高速雙域Montgomery模乘硬件,該硬件支持雙域的Montgomery模乘并采用模塊復用技術,改善了SM2算法計算性能,但其并未說明如何將該硬件應用于密碼卡設計上;2015年,丁鳳[12]提出一種基于SM2數字簽名系統的硬件設計方法,利用Montgomery算法計算點乘,同時采用預計算優化并行工作方式,盡管該系統的模乘運算速度大大提高,但其只支持233比特密鑰長度的簽名與驗證,應用范圍受到較大限制。之后,針對SM2簽名算法實際應用性能及其在硬件上的實現速度,學者們又進行了一系列研究[13-17]。
通過研究可以發現,以上方案主要從兩方面對密碼卡或硬件計算性能進行改善:一個是硬件架構方面,通過增加某種硬件處理設備如FPGA、協處理器等改善密碼卡處理速度;另一個是密碼算法方面,通過優化密碼算法的某種計算性能如模逆、模乘等,從而改善硬件計算性能,但它們并沒有從協議組合運算角度進行考慮。研究發現,在現有密碼卡中,DSP至少需要與FPGA交互4次,而DSP具有主頻低、運算能力差的缺點,成為密碼卡運算的瓶頸。因此,在設計密碼卡協議時,如何減少DSP與FPGA交互次數成為一個亟待解決的問題。
基于上述現狀,本文根據協議組合運算思想,設計并實現了一種基于SM2簽名算法的高速密碼卡。在設計的密碼卡中,DSP至少需要與FPGA交互兩次,極大地提高了密碼卡簽名速度。另外,將簽名過程中用到的(1+d)-1值提前計算出來儲存在密碼卡中,可降低密碼卡的計算復雜度。實驗結果表明,相比傳統基于SM2簽名算法的PCI密碼卡,本文設計的高速密碼卡簽名速度提高了22%。
1 SM2簽名算法
SM2簽名算法基于橢圓曲線公鑰密碼體制[18-19],可滿足多種密碼應用中對數據完整性、真實性的要求以及身份認證等安全需求。具體SM2簽名算法如下:
用戶A利用自己的私鑰dA、公鑰PA=(xA,yA)以及系統公共參數執行下列步驟,生成消息M的簽名(r,s):
(1)設[M]=ZA||M,其中ZA=H256(ENTLA||IDA||a||b||xG|| yG||xA||yA),ENTLA為用戶A可辯別標識符IDA的長度。
(2)計算e=[Hv(M)],并按照特定的數據類型轉換規則將e轉換為整數。
(3)隨機選擇整數k∈[1,n-1],并計算橢圓曲線上的點(x1,y1)=kG。
(4)計算r=(e+x1) mod n,若r=0或r+k=n,返回步驟(3)。
(5)計算s=((1+dA)-1(k-rdA)) mod n,若s=0,返回步驟(3)。
(6)生成簽名(r,s),并將其與消息M通過公開信道發送給接收者。
SM2簽名算法流程[20]如圖1所示。
2 高速密碼卡設計
本文高速密碼卡的設計基于SM2數字簽名算法,在傳統基于SM2數字簽名算法的密碼卡架構上,本文設計的密碼卡根據協議組合運算思想,減少耗時較多的DSP與FPGA交互次數,并采用預計算技術,將(1+d)-1的值事先存儲在密碼卡中,從而減少密碼卡的計算復雜度。具體設計如下:
2.1 PCI密碼卡整體架構
PCI密碼卡在現實生活中應用最廣,本文的高速密碼卡設計就是以PCI密碼卡架構為基礎,并改變其之上協議的交互。具體PCI密碼卡架構如圖2所示。
PCI密碼卡各模塊作用如下:FPGA芯片的作用是對交互信號進行控制與轉換;SM3芯片的作用是對即將要簽名的消息進行哈希運算;SM2芯片的作用是進行數字簽名運算;DSP芯片為主控芯片,其作用是保證密碼卡及其存儲數據的安全性;SRAM芯片的作用是存儲運算過程中的各種臨時數據,并與FPGA及DSP相連。
2.2 PCI密碼卡工作過程
下面主要闡述執行SM2簽名算法時PCI密碼卡工作過程:
(1)DSP首先向FPGA發送執行SM3算法信號。
(2)SM3模塊算法執行完畢后,FPGA將SM3的結果存儲在SRAM中,并向DSP發出中斷信號,通知DSP SM3模塊算法執行完成。
(3)DSP向FPGA發送執行SM2簽名算法信號。
(4)FPGA將SRAM中的SM3模塊結果傳送給SM2模塊。
(5)SM2模塊簽名算法執行完畢后,FPGA將SM2簽名算法的結果存儲在SRAM中,并向DSP發出中斷信號,通知DSP SM2模塊簽名算法執行完成。
(6)最后FPGA將存儲在SRAM中的SM2簽名結果通過PCI總線傳輸給內存。
工作流程如圖3所示。
2.3 高速密碼卡設計與實現
通過對PCI密碼卡工作過程及SM2簽名算法流程進行分析,得到高速密碼卡的設計思想,下面主要闡述高速密碼卡的設計與實現過程。
2.3.1 高速密碼卡設計
由上文可以看出,在PCI密碼卡執行簽名過程中,DSP至少需要與FPGA交互4次,即DSP向FPGA發送執行SM3算法信號、FPGA存儲SM3結果并向DSP發出中斷信號、DSP向FPGA發送執行SM2算法信號、FPGA存儲SM2結果并向DSP發出中斷信號。眾所周知,DSP時序控制較弱,頻率較低,且運算能力差,已成為限制密碼卡發展速度的一個重要因素,如何減少DSP與FPGA交互次數成為密碼卡設計過程中的一個重點。因此,本文設計的密碼卡基于PCI密碼卡架構,利用協議組合運算思想,通過修改密碼卡協議達到減少DSP與FPGA交互次數的目的,從而提高密碼卡運行速度。
另外,為進一步提高密碼卡簽名速度,通過對SM2簽名算法的研究發現,在簽名過程中用到了值(1+d)-1,但其并不會隨著消息的不同而改變。如果每次簽名時都需要對該值重新進行計算,并且每次計算出來的結果都一樣,這是無意義且耗時的。因此,本文設計的密碼卡可以將(1+d)-1的值提前計算出來存儲在密碼卡中,不論要進行多少次簽名運算,每次簽名時都可直接調用,而不需要每次都進行計算,從而減少了簽名計算復雜度。
2.3.2 高速密碼卡實現
高速密碼卡是基于PCI密碼卡實現的,但與PCI密碼卡不同的是,高速密碼卡根據協議組合運算思想減少了DSP與FPGA交互次數。高速密碼卡工作過程(主要闡述SM2簽名算法)如下:
(1)DSP首先向FPGA發送執行SM3算法信號。
(2)SM3模塊算法執行完畢后,FPGA將SM3的結果存儲在SRAM中。
(3)FPGA將SRAM中的SM3模塊結果傳送給SM2模塊。
(4)SM2模塊簽名算法執行完畢后,FPGA將SM2簽名算法結果存儲在SRAM中,并向DSP發出中斷信號,通知DSP SM2模塊簽名算法執行完成。
(5)最后FPGA將存儲在SRAM中的SM2簽名結果通過PCI總線傳輸給內存。
工作流程如圖4所示。
通過對比圖3、圖4可以發現,高速密碼卡簽名相比PCI密碼卡簽名工作流程少了兩次DSP與FPGA的交互:SM3完成后,FPGA不需再向DAP發出中斷信號,FPGA也不需再向DSP發送執行SM2算法信號。這種協議設計減少了DSP與FPGA交互次數,從而節省了密碼卡計算時間,在一定程度上提高了密碼卡計算效率。
同時,高速密碼卡將簽名過程中涉及的 (1+d)-1值事先存儲起來。在該情況下,不論密碼卡要進行多少次簽名運算,每次簽名時都無需再對(1+d)-1值重新進行計算,從而提升了密碼卡簽名計算速度。
3 實驗結果
本實驗采用SSX1510算法芯片,其既可以支持SM2算法,又可以支持SM3、SM4算法。采用的FPGA開發板為Kintex-7 KC705,DSP芯片型號為TMS320C6413。傳統PCI密碼卡與本文提出的高速密碼卡執行SM2簽名算法速度比較如表1所示,實驗中密鑰長度為256位。
由表1可以看出,本文設計的高速密碼卡執行SM2簽名算法速度較快,與傳統PCI密碼卡相比,其速度提高了22%。原因在于傳統PCI密碼卡需要DSP向FPGA發送兩次算法執行信號,即DSP向FPGA發送執行SM3算法信號以及DSP向FPGA發送執行SM2算法信號,并且FPGA還需向DSP發送兩次中斷信號,即FPGA存儲SM3結果并向DSP發出中斷信號,以及FPGA存儲SM2結果并向DSP發出中斷信號。DSP與FPGA交互次數較多,耗時較長。本文設計的高速密碼卡僅需DSP向FPGA發送一次SM3算法執行信號,以及FPGA存儲SM2結果后向DSP發送一次中斷信號即可,從而節省了DSP向FPGA發送執行SM2算法信號以及FPGA向DSP發出中斷信號兩個步驟的交互時間,提高了密碼卡計算效率。同時,本文設計的高速密碼卡僅需計算一次(1+d)-1值,從而減少了傳統PCI密碼卡重復計算(1+d)-1值的時間消耗。
4 結語
本文基于DSP處理器平臺,設計了一種基于SM2簽名算法的高速密碼卡方案。該密碼卡主要將協議進行組合運算,消除了因DSP與FPGA交互過多導致耗時較長的缺陷。另外,利用預計算的思想,可避免對計算復雜度高的操作(1+d)-1的重復計算,節約了計算資源。實驗結果表明,本文設計的基于SM2簽名算法的密碼卡在速度方面具有一定優勢,可以滿足大量數據通信場景對速度的要求。但本文高速密碼卡設計僅是基于DSP處理器平臺,未來可以考慮基于ARM處理器或更高端的處理器平臺,從而使設計的高速密碼卡更具有實用性。本文中組合算法的實現思想,不僅可以指導SM3+SM2組合算法實現,還可以指導SSL協議等大型算法協議的應用,以進一步提高算法執行速度。
參考文獻:
[1] MA M M,HE D B,KUMAR N,et al. Certificateless searchable public key encryption scheme for industrial Internet of Things[J]. IEEE Transactions on Industrial Informatics,2017,14(2):759-767.
[2] 黃劉生,田苗苗,黃河. 大數據隱私保護密碼技術研究綜述[J].? 軟件學報,2015,26(4):945-959.
[3] CHENG H B,RONG C M,QIAN M Y,et al. Accountable privacy-preserving mechanism for cloud computing based on identity-based encryption[J]. IEEE Access,2018,6: 37869-37882.
[4] 汪朝暉,張振峰.? SM2橢圓曲線公鑰密碼算法綜述[J].? 信息安全研究,2016,2(11): 972-982.
[5] 王勇,岑榮偉,郭紅,等.? 國家電子政務外網電子認證系統SM2國密算法升級改造方案研究[J].? 信息網絡安全,2012(10): 83-85.
[6] 李永海. SM2算法在央行發行庫安全守衛信息系統中的應用[J].? 金融科技時代,2017(12): 41-43.
[7] 左黎明,陳祚松,湯鵬志,等. 基于SM2智能安全芯片的高檔酒防偽系統設計[J]. 計算機技術與發展, 2019,29(2): 172-177.
[8] 張楠. 基于AES的PCI密碼卡設計與實現[D]. 成都:電子科技大學,2013.
[9] 蘇云學,祝躍飛. 高速密碼卡的設計與實現[J]. 計算機工程與應用,2003(29): 135-137.
[10] 高東飛.? PCI 密碼卡的設計與實現[D]. 鄭州:鄭州大學,2013.
[11] 郭曉,蔣安平,宗宇,等. SM2高速雙域Montgomery模乘的硬件設計[J]. 微電子學與計算機,2013, 30(9): 17-21.
[12] 丁鳳.? 基于SM2的數字簽名系統的硬件設計[D]. 南京:東南大學,2015.
[13] 常江,李險峰. SM2算法模逆加速器的設計[J]. 電子技術應用,2015,41(2): 131-134.
[14] 梅歡.? 基于國密算法的TF密碼卡設計[J]. 中國科技信息,2016(Z1): 57-58.
[15] 劉付山.? 關于SM2快速標量乘法協處理器的研究[D].? 濟南: 山東大學,2016.
[16] 朱君茹.? 面向模乘優化的RSA/SM2邏輯組件設計與驗證[D].? 蕪湖: 安徽師范大學,2017.
[17] 左黎明,夏萍萍,陳祚松.? 基于國密SM2數字簽名的網絡攝像頭保護技術[J].? 信息網絡安全, 2018(5): 32-40.
[18] SINGH L D,SINGH K M. Implementation of text encryption using elliptic curve cryptography[J].? Procedia Computer Science,2015,54: 73-82.
[19] 徐秋亮,李大興.? 橢圓曲線密碼體制[J].? 計算機研究與發展,1999,36(11): 1281-1288.
[20] 國家密碼管理局.? SM2 橢圓曲線公鑰密碼算法[M].? 北京: 中國標準出版社,2010.
(責任編輯:黃 健)