标题 | 基于SM2签名算法的高速密码卡实现 |
范文 | 崔永旭 刘立宗 孟伟 张丽萍 李攀
摘 要:目前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. (责任编辑:黄 健) |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。