崔永旭 劉立宗 孟偉 張麗萍 李攀
摘 要:目前SM2簽名算法應(yīng)用越來越廣泛,隨著網(wǎng)絡(luò)通信與電子交易業(yè)務(wù)的快速增長,其運算效率面臨著前所未有的挑戰(zhàn)。為了提高密碼卡運算效率,設(shè)計并實現(xiàn)了一種基于SM2簽名算法的高速密碼卡。該密碼卡利用協(xié)議組合運算的思想,減少了DSP與FPGA交互次數(shù),提高了簽名處理效率。同時,采用預(yù)計算技術(shù)將(1+d)-1的值存儲在密碼卡中,降低了簽名的計算復(fù)雜度。與傳統(tǒng)基于SM2簽名算法的密碼卡相比,該密碼卡簽名速度提高了22%,可適用于大量數(shù)據(jù)通信的場景。
關(guān)鍵詞:SM2簽名算法;密碼卡;組合運算;預(yù)計算技術(shù)
DOI:10. 11907/rjdk. 192396 開放科學(xué)(資源服務(wù))標識碼(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 引言
隨著信息技術(shù)的發(fā)展,人們的安全意識越來越強。密碼技術(shù)是一種能夠有效保證通信安全的技術(shù)手段,現(xiàn)已被廣泛應(yīng)用于物聯(lián)網(wǎng)、大數(shù)據(jù)、云計算等領(lǐng)域[1-3]。SM2算法[4]作為我國公鑰密碼算法標準,相比RSA算法效率更高、安全性更好,且應(yīng)用范圍更廣。SM2簽名算法作為SM2算法的一部分,不僅保證了消息的完整性,還可驗證消息來源的合法性,因此在電子政務(wù)[5]、銀行系統(tǒng)[6]及防偽認證[7]等領(lǐng)域發(fā)揮著重要作用。
密碼卡是一種與主機獨立的專用密碼設(shè)備,可實現(xiàn)加解密運算、簽名運算及簽名驗證等功能,具有安全可信、速度快等優(yōu)勢[8-9],密碼卡也逐步成為應(yīng)用最廣泛的密碼硬件設(shè)備之一。根據(jù)接口類型不同,密碼卡主要分為CardBus密碼卡、PCI密碼卡、PCI-E密碼卡以及USB密碼卡等幾類[8]。其中,PCI密碼卡因開發(fā)技術(shù)較為成熟,因而發(fā)展比較迅速。國外PCI密碼卡運行速度較快[10],但不支持國密算法芯片,參考價值不大。
為改善密碼卡計算性能,2013年,高東飛[10]設(shè)計并實現(xiàn)了一種具備SM2簽名功能的PCI密碼卡,該密碼卡利用FPGA技術(shù)控制芯片間的信號傳輸,從而提升了計算性能,但計算效率還有待進一步提高;同年,郭曉等[11]設(shè)計了一種基于SM2算法的高速雙域Montgomery模乘硬件,該硬件支持雙域的Montgomery模乘并采用模塊復(fù)用技術(shù),改善了SM2算法計算性能,但其并未說明如何將該硬件應(yīng)用于密碼卡設(shè)計上;2015年,丁鳳[12]提出一種基于SM2數(shù)字簽名系統(tǒng)的硬件設(shè)計方法,利用Montgomery算法計算點乘,同時采用預(yù)計算優(yōu)化并行工作方式,盡管該系統(tǒng)的模乘運算速度大大提高,但其只支持233比特密鑰長度的簽名與驗證,應(yīng)用范圍受到較大限制。之后,針對SM2簽名算法實際應(yīng)用性能及其在硬件上的實現(xiàn)速度,學(xué)者們又進行了一系列研究[13-17]。
通過研究可以發(fā)現(xiàn),以上方案主要從兩方面對密碼卡或硬件計算性能進行改善:一個是硬件架構(gòu)方面,通過增加某種硬件處理設(shè)備如FPGA、協(xié)處理器等改善密碼卡處理速度;另一個是密碼算法方面,通過優(yōu)化密碼算法的某種計算性能如模逆、模乘等,從而改善硬件計算性能,但它們并沒有從協(xié)議組合運算角度進行考慮。研究發(fā)現(xiàn),在現(xiàn)有密碼卡中,DSP至少需要與FPGA交互4次,而DSP具有主頻低、運算能力差的缺點,成為密碼卡運算的瓶頸。因此,在設(shè)計密碼卡協(xié)議時,如何減少DSP與FPGA交互次數(shù)成為一個亟待解決的問題。
基于上述現(xiàn)狀,本文根據(jù)協(xié)議組合運算思想,設(shè)計并實現(xiàn)了一種基于SM2簽名算法的高速密碼卡。在設(shè)計的密碼卡中,DSP至少需要與FPGA交互兩次,極大地提高了密碼卡簽名速度。另外,將簽名過程中用到的(1+d)-1值提前計算出來儲存在密碼卡中,可降低密碼卡的計算復(fù)雜度。實驗結(jié)果表明,相比傳統(tǒng)基于SM2簽名算法的PCI密碼卡,本文設(shè)計的高速密碼卡簽名速度提高了22%。
1 SM2簽名算法
SM2簽名算法基于橢圓曲線公鑰密碼體制[18-19],可滿足多種密碼應(yīng)用中對數(shù)據(jù)完整性、真實性的要求以及身份認證等安全需求。具體SM2簽名算法如下:
用戶A利用自己的私鑰dA、公鑰PA=(xA,yA)以及系統(tǒng)公共參數(shù)執(zhí)行下列步驟,生成消息M的簽名(r,s):
(1)設(shè)[M]=ZA||M,其中ZA=H256(ENTLA||IDA||a||b||xG|| yG||xA||yA),ENTLA為用戶A可辯別標識符IDA的長度。
(2)計算e=[Hv(M)],并按照特定的數(shù)據(jù)類型轉(zhuǎn)換規(guī)則將e轉(zhuǎn)換為整數(shù)。
(3)隨機選擇整數(shù)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通過公開信道發(fā)送給接收者。
SM2簽名算法流程[20]如圖1所示。
2 高速密碼卡設(shè)計
本文高速密碼卡的設(shè)計基于SM2數(shù)字簽名算法,在傳統(tǒng)基于SM2數(shù)字簽名算法的密碼卡架構(gòu)上,本文設(shè)計的密碼卡根據(jù)協(xié)議組合運算思想,減少耗時較多的DSP與FPGA交互次數(shù),并采用預(yù)計算技術(shù),將(1+d)-1的值事先存儲在密碼卡中,從而減少密碼卡的計算復(fù)雜度。具體設(shè)計如下:
2.1 PCI密碼卡整體架構(gòu)
PCI密碼卡在現(xiàn)實生活中應(yīng)用最廣,本文的高速密碼卡設(shè)計就是以PCI密碼卡架構(gòu)為基礎(chǔ),并改變其之上協(xié)議的交互。具體PCI密碼卡架構(gòu)如圖2所示。
PCI密碼卡各模塊作用如下:FPGA芯片的作用是對交互信號進行控制與轉(zhuǎn)換;SM3芯片的作用是對即將要簽名的消息進行哈希運算;SM2芯片的作用是進行數(shù)字簽名運算;DSP芯片為主控芯片,其作用是保證密碼卡及其存儲數(shù)據(jù)的安全性;SRAM芯片的作用是存儲運算過程中的各種臨時數(shù)據(jù),并與FPGA及DSP相連。
2.2 PCI密碼卡工作過程
下面主要闡述執(zhí)行SM2簽名算法時PCI密碼卡工作過程:
(1)DSP首先向FPGA發(fā)送執(zhí)行SM3算法信號。
(2)SM3模塊算法執(zhí)行完畢后,F(xiàn)PGA將SM3的結(jié)果存儲在SRAM中,并向DSP發(fā)出中斷信號,通知DSP SM3模塊算法執(zhí)行完成。
(3)DSP向FPGA發(fā)送執(zhí)行SM2簽名算法信號。
(4)FPGA將SRAM中的SM3模塊結(jié)果傳送給SM2模塊。
(5)SM2模塊簽名算法執(zhí)行完畢后,F(xiàn)PGA將SM2簽名算法的結(jié)果存儲在SRAM中,并向DSP發(fā)出中斷信號,通知DSP SM2模塊簽名算法執(zhí)行完成。
(6)最后FPGA將存儲在SRAM中的SM2簽名結(jié)果通過PCI總線傳輸給內(nèi)存。
工作流程如圖3所示。
2.3 高速密碼卡設(shè)計與實現(xiàn)
通過對PCI密碼卡工作過程及SM2簽名算法流程進行分析,得到高速密碼卡的設(shè)計思想,下面主要闡述高速密碼卡的設(shè)計與實現(xiàn)過程。
2.3.1 高速密碼卡設(shè)計
由上文可以看出,在PCI密碼卡執(zhí)行簽名過程中,DSP至少需要與FPGA交互4次,即DSP向FPGA發(fā)送執(zhí)行SM3算法信號、FPGA存儲SM3結(jié)果并向DSP發(fā)出中斷信號、DSP向FPGA發(fā)送執(zhí)行SM2算法信號、FPGA存儲SM2結(jié)果并向DSP發(fā)出中斷信號。眾所周知,DSP時序控制較弱,頻率較低,且運算能力差,已成為限制密碼卡發(fā)展速度的一個重要因素,如何減少DSP與FPGA交互次數(shù)成為密碼卡設(shè)計過程中的一個重點。因此,本文設(shè)計的密碼卡基于PCI密碼卡架構(gòu),利用協(xié)議組合運算思想,通過修改密碼卡協(xié)議達到減少DSP與FPGA交互次數(shù)的目的,從而提高密碼卡運行速度。
另外,為進一步提高密碼卡簽名速度,通過對SM2簽名算法的研究發(fā)現(xiàn),在簽名過程中用到了值(1+d)-1,但其并不會隨著消息的不同而改變。如果每次簽名時都需要對該值重新進行計算,并且每次計算出來的結(jié)果都一樣,這是無意義且耗時的。因此,本文設(shè)計的密碼卡可以將(1+d)-1的值提前計算出來存儲在密碼卡中,不論要進行多少次簽名運算,每次簽名時都可直接調(diào)用,而不需要每次都進行計算,從而減少了簽名計算復(fù)雜度。
2.3.2 高速密碼卡實現(xiàn)
高速密碼卡是基于PCI密碼卡實現(xiàn)的,但與PCI密碼卡不同的是,高速密碼卡根據(jù)協(xié)議組合運算思想減少了DSP與FPGA交互次數(shù)。高速密碼卡工作過程(主要闡述SM2簽名算法)如下:
(1)DSP首先向FPGA發(fā)送執(zhí)行SM3算法信號。
(2)SM3模塊算法執(zhí)行完畢后,F(xiàn)PGA將SM3的結(jié)果存儲在SRAM中。
(3)FPGA將SRAM中的SM3模塊結(jié)果傳送給SM2模塊。
(4)SM2模塊簽名算法執(zhí)行完畢后,F(xiàn)PGA將SM2簽名算法結(jié)果存儲在SRAM中,并向DSP發(fā)出中斷信號,通知DSP SM2模塊簽名算法執(zhí)行完成。
(5)最后FPGA將存儲在SRAM中的SM2簽名結(jié)果通過PCI總線傳輸給內(nèi)存。
工作流程如圖4所示。
通過對比圖3、圖4可以發(fā)現(xiàn),高速密碼卡簽名相比PCI密碼卡簽名工作流程少了兩次DSP與FPGA的交互:SM3完成后,F(xiàn)PGA不需再向DAP發(fā)出中斷信號,F(xiàn)PGA也不需再向DSP發(fā)送執(zhí)行SM2算法信號。這種協(xié)議設(shè)計減少了DSP與FPGA交互次數(shù),從而節(jié)省了密碼卡計算時間,在一定程度上提高了密碼卡計算效率。
同時,高速密碼卡將簽名過程中涉及的 (1+d)-1值事先存儲起來。在該情況下,不論密碼卡要進行多少次簽名運算,每次簽名時都無需再對(1+d)-1值重新進行計算,從而提升了密碼卡簽名計算速度。
3 實驗結(jié)果
本實驗采用SSX1510算法芯片,其既可以支持SM2算法,又可以支持SM3、SM4算法。采用的FPGA開發(fā)板為Kintex-7 KC705,DSP芯片型號為TMS320C6413。傳統(tǒng)PCI密碼卡與本文提出的高速密碼卡執(zhí)行SM2簽名算法速度比較如表1所示,實驗中密鑰長度為256位。
由表1可以看出,本文設(shè)計的高速密碼卡執(zhí)行SM2簽名算法速度較快,與傳統(tǒng)PCI密碼卡相比,其速度提高了22%。原因在于傳統(tǒng)PCI密碼卡需要DSP向FPGA發(fā)送兩次算法執(zhí)行信號,即DSP向FPGA發(fā)送執(zhí)行SM3算法信號以及DSP向FPGA發(fā)送執(zhí)行SM2算法信號,并且FPGA還需向DSP發(fā)送兩次中斷信號,即FPGA存儲SM3結(jié)果并向DSP發(fā)出中斷信號,以及FPGA存儲SM2結(jié)果并向DSP發(fā)出中斷信號。DSP與FPGA交互次數(shù)較多,耗時較長。本文設(shè)計的高速密碼卡僅需DSP向FPGA發(fā)送一次SM3算法執(zhí)行信號,以及FPGA存儲SM2結(jié)果后向DSP發(fā)送一次中斷信號即可,從而節(jié)省了DSP向FPGA發(fā)送執(zhí)行SM2算法信號以及FPGA向DSP發(fā)出中斷信號兩個步驟的交互時間,提高了密碼卡計算效率。同時,本文設(shè)計的高速密碼卡僅需計算一次(1+d)-1值,從而減少了傳統(tǒng)PCI密碼卡重復(fù)計算(1+d)-1值的時間消耗。
4 結(jié)語
本文基于DSP處理器平臺,設(shè)計了一種基于SM2簽名算法的高速密碼卡方案。該密碼卡主要將協(xié)議進行組合運算,消除了因DSP與FPGA交互過多導(dǎo)致耗時較長的缺陷。另外,利用預(yù)計算的思想,可避免對計算復(fù)雜度高的操作(1+d)-1的重復(fù)計算,節(jié)約了計算資源。實驗結(jié)果表明,本文設(shè)計的基于SM2簽名算法的密碼卡在速度方面具有一定優(yōu)勢,可以滿足大量數(shù)據(jù)通信場景對速度的要求。但本文高速密碼卡設(shè)計僅是基于DSP處理器平臺,未來可以考慮基于ARM處理器或更高端的處理器平臺,從而使設(shè)計的高速密碼卡更具有實用性。本文中組合算法的實現(xiàn)思想,不僅可以指導(dǎo)SM3+SM2組合算法實現(xiàn),還可以指導(dǎo)SSL協(xié)議等大型算法協(xié)議的應(yīng)用,以進一步提高算法執(zhí)行速度。
參考文獻:
[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] 黃劉生,田苗苗,黃河. 大數(shù)據(jù)隱私保護密碼技術(shù)研究綜述[J].? 軟件學(xué)報,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] 王勇,岑榮偉,郭紅,等.? 國家電子政務(wù)外網(wǎng)電子認證系統(tǒng)SM2國密算法升級改造方案研究[J].? 信息網(wǎng)絡(luò)安全,2012(10): 83-85.
[6] 李永海. SM2算法在央行發(fā)行庫安全守衛(wèi)信息系統(tǒng)中的應(yīng)用[J].? 金融科技時代,2017(12): 41-43.
[7] 左黎明,陳祚松,湯鵬志,等. 基于SM2智能安全芯片的高檔酒防偽系統(tǒng)設(shè)計[J]. 計算機技術(shù)與發(fā)展, 2019,29(2): 172-177.
[8] 張楠. 基于AES的PCI密碼卡設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2013.
[9] 蘇云學(xué),祝躍飛. 高速密碼卡的設(shè)計與實現(xiàn)[J]. 計算機工程與應(yīng)用,2003(29): 135-137.
[10] 高東飛.? PCI 密碼卡的設(shè)計與實現(xiàn)[D]. 鄭州:鄭州大學(xué),2013.
[11] 郭曉,蔣安平,宗宇,等. SM2高速雙域Montgomery模乘的硬件設(shè)計[J]. 微電子學(xué)與計算機,2013, 30(9): 17-21.
[12] 丁鳳.? 基于SM2的數(shù)字簽名系統(tǒng)的硬件設(shè)計[D]. 南京:東南大學(xué),2015.
[13] 常江,李險峰. SM2算法模逆加速器的設(shè)計[J]. 電子技術(shù)應(yīng)用,2015,41(2): 131-134.
[14] 梅歡.? 基于國密算法的TF密碼卡設(shè)計[J]. 中國科技信息,2016(Z1): 57-58.
[15] 劉付山.? 關(guān)于SM2快速標量乘法協(xié)處理器的研究[D].? 濟南: 山東大學(xué),2016.
[16] 朱君茹.? 面向模乘優(yōu)化的RSA/SM2邏輯組件設(shè)計與驗證[D].? 蕪湖: 安徽師范大學(xué),2017.
[17] 左黎明,夏萍萍,陳祚松.? 基于國密SM2數(shù)字簽名的網(wǎng)絡(luò)攝像頭保護技術(shù)[J].? 信息網(wǎng)絡(luò)安全, 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].? 計算機研究與發(fā)展,1999,36(11): 1281-1288.
[20] 國家密碼管理局.? SM2 橢圓曲線公鑰密碼算法[M].? 北京: 中國標準出版社,2010.
(責(zé)任編輯:黃 健)