一种SM2数字签名的生成方法、系统、设备及介质与流程

文档序号:17319738发布日期:2019-04-05 21:28阅读:183来源:国知局
一种SM2数字签名的生成方法、系统、设备及介质与流程

本发明涉及信息安全技术领域,尤其是涉及一种sm2数字签名的生成方法、系统、设备及介质。



背景技术:

目前,随着移动应用的普及,移动设备上承载了越来越多的应用,这些应用对sm2算法的数字签名有着强烈的需求,而随着针对移动设备上漏洞的攻击越来越多,sm2私钥的存储安全变得尤为重要。

为了保障sm2私钥的安全性,开始出现了将sm2私钥分拆成若干分量,将这些分量分布存储于多个节点,需要计算sm2数字签名时,利用多个节点之间的计算最终生成数字签名。此种方式的优点在于,每个节点上没有存储完整的sm2私钥信息,即使单个节点遭受攻击,攻击方也无法拿到完整的sm2私钥。

上述方案中,在节点之间传递的数据包含了基点的倍点。在各节点上需要进行多次的倍点计算。举例来说,假设g为基点,da为私钥,e为杂凑值,则单个节点的数字签名流程为:取随机数k;计算倍点(a,b)=k[*]g;计算r=(e+a)modn并检查,其中,n是sm2运算所使用的椭圆曲线点群的阶,也即sm2运算所使用的椭圆曲线点群的基点g的阶;计算s=(k-r*da)/(1+da)并检查;输出(r,s)。

从上述sm2数字签名的生成流程可以看出,现有的sm2数字签名生成方法在每个节点上均需要进行点乘计算,而点乘计算是比较耗时的操作,多个节点上的多次点乘计算耗时较长,数字签名生成效率较低。



技术实现要素:

本发明实施例提供一种sm2数字签名的生成方法、系统、设备及介质,用以减少sm2数字签名生成过程中所需的点乘运算次数,提高sm2数字签名的生成效率。

第一方面,本发明实施例提供一种sm2数字签名的生成方法,包括:

第一节点基于预先生成的随机数与预先配置的sm2椭圆曲线点群的基点,通过点乘运算计算得到sm2椭圆曲线点群基点的倍点;

第一节点基于sm2椭圆曲线点群基点的倍点、预先配置的sm2椭圆曲线点群的阶、以及预先生成的杂凑值,计算生成第一签名要素;

第一节点在确定第一签名要素满足第一预设条件时,基于第一签名要素、随机数、预先配置的sm2私钥、以及sm2椭圆曲线点群的阶计算生成第一运算参数;

第一节点将第一运算参数发送至第二节点;

第一节点接收第二节点发送的第二运算参数,其中,第二运算参数是第二节点基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成的;

第一节点基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素;

第一节点在确定第二签名要素满足第二预设条件时,基于第一签名要素和第二签名要素,生成sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的上述方法中,第一节点基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素,包括:

第一节点基于第二运算参数、预先生成的第二计算因子、以及sm2椭圆曲线点群的阶计算生成第三运算参数;

第一节点基于第三运算参数、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素。

在一种可能的实施方式中,本发明实施例提供的上述方法中,基于第一签名要素和第二签名要素,生成sm2数字签名,包括:

第一节点将第一签名要素和第二签名要素的组合作为sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的上述方法中,方法还包括:

第一节点接收第二节点发送的第四运算参数,其中,第四运算参数是第二节点基于预先生成的第一计算因子和预先配置的sm2椭圆曲线点群的基点计算得到的;

第一节点基于第四运算参数、预先生成的第二计算因子、预先配置的sm2私钥、预先配置的sm2椭圆曲线点群的基点、以及预先配置的sm2椭圆曲线点群的阶计算生成sm2公钥。

第二方面,本发明实施例提供一种sm2数字签名的生成方法,包括:

第二节点接收第一节点发送的第一运算参数;

第二节点基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成第二运算参数;

第二节点将第二运算参数发送至第一节点,以使第一节点根据第二运算参数计算生成sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的上述方法中,方法还包括:

第二节点基于预先生成的第一计算因子和预先配置的sm2椭圆曲线点群的基点计算生成第四运算参数;

第二节点将第四运算参数发送至第一节点,以使第一节点根据第四运算参数计算生成sm2公钥。

第三方面,本发明实施例提供一种sm2数字签名的生成系统,包括:通信连接的第一节点和第二节点;其中,

第一节点基于预先生成的随机数与预先配置的sm2椭圆曲线点群的基点,通过点乘运算计算得到sm2椭圆曲线点群基点的倍点;

第一节点基于sm2椭圆曲线点群基点的倍点、预先配置的sm2椭圆曲线点群的阶、以及预先生成的杂凑值,计算生成第一签名要素;

第一节点在确定第一签名要素满足第一预设条件时,基于第一签名要素、随机数、预先配置的sm2私钥、以及sm2椭圆曲线点群的阶计算生成第一运算参数;

第一节点将第一运算参数发送至第二节点;

第二节点接收第一节点发送的第一运算参数,并基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成第二运算参数;

第二节点将第二运算参数发送至第一节点;

第一节点接收第二节点发送的第二运算参数,并基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素;

第一节点在确定第二签名要素满足第二预设条件时,基于第一签名要素和第二签名要素,生成sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的上述系统中,第一节点为移动设备,第二节点为服务器。

第三方面,本发明实施例提供一种sm2数字签名的生成设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现本发明实施例第一方面提供的方法或者实现本发明实施例第二方面提供的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现本发明实施例第一方面提供的方法或者实现本发明实施例第二方面提供的方法。

本发明实施例提供的sm2数字签名的生成方法、系统、设备及介质,第一节点基于预先生成的随机数与预先配置的sm2椭圆曲线点群的基点,通过点乘运算计算得到sm2椭圆曲线点群基点的倍点;第一节点基于sm2椭圆曲线点群基点的倍点、预先配置的sm2椭圆曲线点群的阶、以及预先生成的杂凑值,计算生成第一签名要素;第一节点在确定第一签名要素满足第一预设条件时,基于第一签名要素、随机数、预先配置的sm2私钥、以及sm2椭圆曲线点群的阶计算生成第一运算参数;第一节点将第一运算参数发送至第二节点;第一节点接收第二节点发送的第二运算参数,第一节点基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素;第一节点在确定第二签名要素满足第二预设条件时,基于第一签名要素和第二签名要素,生成sm2数字签名。

本发明实施例提供的sm2数字签名的生成方案,在生成sm2数字签名的过程中,只需要在第一节点侧进行一次点乘运算,与现有技术中每个节点中都需要进行点乘运算相比,大大减少了sm2数字签名生成过程中所需的点乘运算次数,从而提高了sm2数字签名的生成效率。

附图说明

图1本发明实施例提供的第一节点侧sm2数字签名的生成方法的示意流程图;

图2为本发明实施例提供的第二节点侧sm2数字签名的生成方法的示意流程图;

图3为本发明实施例提供的sm2数字签名的生成系统的结构示意图;

图4为本发明实施例提供的sm2数字签名的生成设备的结构示意图。

具体实施方式

下面结合附图,对本发明实施例提供的一种sm2数字签名的生成方法、系统、设备及介质的具体实施方式进行详细地说明。

需要说明的是,本发明实施例提供的sm2数字签名的生成方案,在sm2数字签名的生成过程中,具体的计算处理需要在通信连接的第一节点和第二节点中进行。其中,第一节点和第二节点可以是不同的设备或终端,例如,第一节点为移动终端,第二节点为服务器;再例如,第一节点和第二节点均为移动终端。

下面分别从第一节点侧和第二节点侧对本发明实施例提供的sm2数字签名的生成方法进行详细说明。

在第一节点侧,如图1所示,本发明实施例提供的sm2数字签名的生成方法,其可以包括如下步骤:

步骤101,第一节点基于预先生成的随机数与预先配置的sm2椭圆曲线点群的基点,通过点乘运算计算得到sm2椭圆曲线点群基点的倍点。

具体实施时,第一节点基于预先生成的随机数k与预先配置的sm2椭圆曲线点群基点g,利用公式(a,b)=k[*]g计算sm2椭圆曲线点群基点g的倍点(a,b),其中,[*]为点乘运算。

步骤102,第一节点基于sm2椭圆曲线点群基点的倍点、预先配置的sm2椭圆曲线点群的阶、以及预先生成的杂凑值,计算生成第一签名要素。

具体实施时,第一节点基于sm2椭圆曲线点群基点的倍点(a,b)的横坐标a、预先配置的sm2椭圆曲线点群的阶n、以及预先生成的杂凑值e,利用公式r=e+amodn计算第一签名要素r,其中,mod为取模运算。

步骤103,第一节点在确定第一签名要素满足第一预设条件时,基于第一签名要素、随机数、预先配置的sm2私钥、以及sm2椭圆曲线点群的阶计算生成第一运算参数。

具体实施时,第一节点在确定第一签名要素r满足第一预设条件时,基于第一签名要素r、随机数k、预先配置的sm2私钥da、以及sm2椭圆曲线点群的阶n,利用公式nrps=(r+k)/(1+nda)modn计算生成第一运算参数,公式中nrps为第一运算参数。

其中,第一预设条件可以预先设定,例如,设置第一预设条件为第一签名要素不为0且第一签名要素与随机数之和不等于sm2椭圆曲线点群的阶,也即r≠0且r+k≠n。

需要说明的是,实际计算中,第一节点在确定第一签名要素不满足第一预设条件时,重新生成随机数,并重新执行步骤101-步骤102,计算生成第一签名要素。

步骤104,第一节点将第一运算参数发送至第二节点。

具体实施时,第一节点可以根据其与第二节点的连接方式,选择将第一运算参数发送至第二节点的方式,本发明实施例对此不作限定。例如,第一节点和第二节点之间通过无线连接通信,则第一节点通过无线传输方式将第一运算参数发生至第二节点。

步骤105,第一节点接收第二节点发送的第二运算参数,其中,第二运算参数是第二节点基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成的。

步骤106,第一节点基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素。

在一种可能的实施方式中,第一节点基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素,包括:第一节点基于第二运算参数、预先生成的第二计算因子、以及sm2椭圆曲线点群的阶计算生成第三运算参数;第一节点基于第三运算参数、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素。

具体实施时,第一节点基于第二运算参数、预先生成的第二计算因子、以及sm2椭圆曲线点群的阶,利用公式nrps2=nrps1/n1modn计算生成第三运算参数,其中,nrps2为第三运算参数,nrps1为第二运算参数,n1为第二计算因子,n为sm2椭圆曲线点群的阶。

第一节点基于第三运算参数nrps2、第一签名要素r、以及sm2椭圆曲线点群的阶n,利用公式s=nrps2-rmodn计算生成第二签名要素,公式中s为第二签名要素。

步骤107,第一节点在确定第二签名要素满足第二预设条件时,基于第一签名要素和第二签名要素,生成sm2数字签名。

具体实施时,基于第一签名要素和第二签名要素,生成sm2数字签名,包括:将第一签名要素和第二签名要素的组合作为sm2数字签名,也即将(r,s)作为sm2数字签名。

其中,第二预设条件可以预先设定,例如,设置第二预设条件为第二签名要素不为0,也即s≠0。

需要说明的是,实际计算中,第一节点在确定第二签名要素不满足第二预设条件时,重新生成随机数,并重新执行步骤101-步骤106,计算生成第二签名要素。

在一种可能的实施方式中,第一节点还可以接收第二节点发送的第四运算参数,并基于第四运算参数、预先生成的第二计算因子、预先配置的sm2私钥、预先配置的sm2椭圆曲线点群的基点、以及预先配置的sm2椭圆曲线点群的阶计算生成sm2公钥。其中,第四运算参数是第二节点基于预先生成的第一计算因子和预先配置的sm2椭圆曲线点群的基点计算得到的。

具体实施时,第一节点接收第二节点发送的第四运算参数后,基于第四运算参数、预先生成的第二计算因子、预先配置的sm2私钥、预先配置的sm2椭圆曲线点群的基点、以及预先配置的sm2椭圆曲线点群的阶,利用公式p=(n1×(1+nda))[*]t+(n-1)[*]g计算生成sm2公钥,其中,p为sm2公钥,n1为第二计算因子,n为sm2椭圆曲线点群的阶,da为sm2私钥,g为sm2椭圆曲线点群的基点。

与第一节点侧相对应的,在第二节点侧,如图2所示,本发明实施例提供的sm2数字签名的生成方法,其可以包括如下步骤:

步骤201,第二节点接收第一节点发送的第一运算参数。

步骤202,第二节点基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成第二运算参数。

具体实施时,第二节点基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶,利用公式nrps1=nrps/n2modn计算生成第二运算参数,其中,nrps1为第二运算参数,nrps为第一运算参数,n2为第一计算因子,n为sm2椭圆曲线点群的阶。

步骤203,第二节点将第二运算参数发送至第一节点,以使第一节点根据第二运算参数计算生成sm2数字签名。

在一种可能的实施方式中,第二节点还可以基于预先生成的第一计算因子和预先配置的sm2椭圆曲线点群的基点计算生成第四运算参数,并将第四运算参数发送至第一节点,以使第一节点根据第四运算参数计算生成sm2公钥。

具体实施时,第二节点基于预先生成的第一计算因子和预先配置的sm2椭圆曲线点群的基点,利用公式t=n2[*]g计算生成第四运算参数,其中,t为第四运算参数,n2为第一计算因子,g为sm2椭圆曲线点群的基点。

另外,如图3所示,本发明实施例提供一种sm2数字签名的生成系统,包括:通信连接的第一节点301和第二节点302;其中,

第一节点301基于预先生成的随机数与预先配置的sm2椭圆曲线点群的基点,通过点乘运算计算得到sm2椭圆曲线点群基点的倍点;

第一节点301基于sm2椭圆曲线点群基点的倍点、预先配置的sm2椭圆曲线点群的阶、以及预先生成的杂凑值,计算生成第一签名要素;

第一节点301在确定第一签名要素满足第一预设条件时,基于第一签名要素、随机数、预先配置的sm2私钥、以及sm2椭圆曲线点群的阶计算生成第一运算参数;

第一节点301将第一运算参数发送至第二节点302;

第二节点302接收第一节点301发送的第一运算参数,并基于第一运算参数、预先生成的第一计算因子、以及预先配置的sm2椭圆曲线点群的阶计算生成第二运算参数;

第二节点302将第二运算参数发送至第一节点301;

第一节点301接收第二节点302发送的第二运算参数,并基于第二运算参数、预先生成的第二计算因子、第一签名要素、以及sm2椭圆曲线点群的阶计算生成第二签名要素;

第一节点301在确定第二签名要素满足第二预设条件时,基于第一签名要素和第二签名要素,生成sm2数字签名。

在一种可能的实施方式中,第一节点301为移动设备,第二节点302为服务器。

另外,结合图1-图2描述的本发明实施例的sm2数字签名的生成方法可以由sm2数字签名的生成设备来实现。图4示出了本发明实施例提供的sm2数字签名的生成设备的硬件结构示意图。

sm2数字签名的生成设备可以包括处理器401以及存储有计算机程序指令的存储器402。

具体地,上述处理器401可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在数据处理装置的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。

处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的任意一种sm2数字签名的生成方法。

在一个示例中,sm2数字签名的生成设备还可包括通信接口403和总线410。其中,如图4所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。

通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。

总线410包括硬件、软件或两者,将sm2数字签名的生成设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

该sm2数字签名的生成设备可以执行本发明实施例中的sm2数字签名的生成方法,从而实现结合图1-图2描述的sm2数字签名的生成方法。

另外,结合上述实施例中的sm2数字签名的生成方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种sm2数字签名的生成方法。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1