一种SM2数字签名的快速生成方法和装置与流程

文档序号:18835627发布日期:2019-10-09 05:14阅读:207来源:国知局
一种SM2数字签名的快速生成方法和装置与流程

本发明涉及信息处理技术领域,尤其是涉及一种sm2数字签名的快速生成方法和装置。



背景技术:

数字签名技术为数据提供了完整性和抗抵赖性保护,sm2数字签名算法为国家密码管理部门发布的密码算法之一,该算法最耗时的计算是点乘(或称标量乘),即一个大数与椭圆曲线上的点相乘。针对这种点乘,目前虽有一些通用的优化算法,然而,通用的优化算法并没有利用sm2签名算法自身的特性,如可以利用sm2具体结构和使用的参数进行优化加速,sm2签名算法中的点乘还可以更进一步优化,从而更进一步加速sm2签名计算。sm2签名算法标准参见《gm/t0003.2-2012sm2椭圆曲线公钥密码算法第2部分:数字签名算法》。



技术实现要素:

本发明实施例提供一种sm2数字签名的快速生成方法和装置,用以减少sm2数字签名生成过程中所需的点乘时间,提高sm2数字签名的生成速度。

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

预先计算并存储sm2椭圆曲线基点的特殊倍点集;

生成随机数k;

计算随机数k的非邻近形式值naf(k);

基于预先计算并存储的sm2椭圆曲线基点的特殊倍点集与随机数k的非邻近形式值naf(k),通过点乘运算获得sm2椭圆曲线点群基点的倍点;

基于所述sm2椭圆曲线点群基点的倍点,通过sm2标准签名算法生成sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的上述方法中,预先计算并存储sm2椭圆曲线基点的特殊倍点集,包括:

特殊倍点集为由qi=2ig和ri=-2ig组成的集合,其中g点为sm2算法固定参数,i=[0,300],i为整数。

在一种可能的实施方式中,本发明实施例提供的上述方法中,计算随机数k的非邻近形式值naf(k),包括:

根据naf(k)计算公式,输入为随机数k,输出为整数m和数组(a0,a1,…ai…am),其中ai=1或-1或0,i为整数,且0<=i<=m<=300。

在一种可能的实施方式中,本发明实施例提供的上述方法中,基于预先计算并存储的sm2椭圆曲线基点的特殊倍点集与随机数k的非邻近形式值,获得sm2椭圆曲线点群基点的倍点,包括:

sm2椭圆曲线点群基点的倍点q=kg,其中g点为sm2算法固定参数;

其中倍点q计算步骤为

a1:先假设q=o;

a2:遍历i,i=0,1,…m;

a3:如果ai=0,则不作任何计算;

如果ai=1,则q=q+qi;

如果ai=-1,则q=q+ri。

其中m和ai通过随机数k的非邻近形式naf(k)计算获取,qi=2ig和ri=-2ig为sm2椭圆曲线基点的特殊倍点集里的点,i为整数,0<=i<=m<=300。

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

预计算与存储模块,预先计算并存储sm2椭圆曲线基点的特殊倍点集;

生成模块,生成随机数k;

计算模块,计算随机数k的非邻近形式值naf(k);

点乘模块,计算基于预先计算并存储的sm2椭圆曲线基点的特殊倍点集与随机数k的非邻近形式值naf(k),通过点乘运算获得sm2椭圆曲线点群基点的倍点;

签名模块,基于所述sm2椭圆曲线点群基点的倍点,通过sm2标准签名算法生成sm2数字签名。

在一种可能的实施方式中,本发明实施例提供的装置中,预计算与存储模块,用于计算并存储由qi=2ig和ri=-2ig组成的特殊倍点集,其中g点为sm2算法固定参数,i=[0,300],i为整数。

在一种可能的实施方式中,本发明实施例提供的装置中,计算模块,用于计算naf(k),输入为随机数k,输出为整数m和数组(a0,a1,…ai…am),其中ai=+1或-1或0,i为整数,且0<=i<=m<=300。

在一种可能的实施方式中,本发明实施例提供的装置中,点乘模块,用于计算sm2椭圆曲线点群基点的倍点q=kg,其中g点为sm2算法固定参数;

其中倍点q计算步骤为

a1:先假设q=o.

a2:遍历i,i=0,1,…m.

a3:如果ai=0,则不作任何计算;

如果ai=1,则q=q+qi;

如果ai=-1,则q=q+ri;

其中m和ai通过随机数k的非邻近形式naf(k)计算获取,qi=2ig和ri=-2ig为sm2椭圆曲线基点的特殊倍点集里的点,i为整数,0<=i<=m<=300。

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

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

由上述方可知,本申请提供一种基于sm2的快速签名生成方法和装置,预先计算并存储sm2椭圆曲线基点的特殊倍点集;生成随机数k;计算随机数k的非邻近形式值naf(k);基于预先计算并存储的椭圆曲线基点的特殊倍点集与随机数k的非邻近形式值naf(k),通过点乘运算获得sm2椭圆曲线点群基点的倍点;基于sm2椭圆曲线点群基点的倍点,通过sm2标准签名算法生成sm2数字签名。本申请能够有效减少sm2数字签名生成过程中所需的点乘时间,提升sm2数字签名的生成速度。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例提供的sm2数字签名的快速生成方法的示意流程图;

图2为现有的一种点乘运算示意流程图;

图3为本发明实施例提供的点乘运算示意流程图;

图4为本发明实施例提供的sm2数字签名的快速生成装置的结构示意图;

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

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种sm2数字签名的快速生成方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是本发明实施例提供的sm2数字签名的快速生成方法,其可以包括如下步骤:

步骤s101:预先计算并存储sm2椭圆曲线基点的特殊倍点集。

具体实施时,sm2椭圆曲线点群的基点的特殊倍点集由qi=2ig和ri=-2ig组成,其中g点为sm2算法固定参数,i=[0,300],i为整数,一般i的最大值略大于256,这里i最大值为300,是为了防止随机数的非邻近形式值计算的溢出。所述特殊倍点集元素个数为301*2=602,其中每个元素都为sm2椭圆曲线上的点,每个点所占用的存储空间为65字节(非压缩方式)或33字节(压缩方式),整个倍点集所占有的存储空间为602*65=39130字节(非压缩方式)或19866字节(压缩方式)。

步骤s102:生成随机数k。

随机数k可由随机数发生器提供。

步骤s103:计算随机数k的非邻近形式值naf(k)。

计算随机数k的非邻近形式naf(k),输入长度为256比特的随机数k,输出整数为m和数组(a0,a1,…ai…am),其中ai=+1或-1或0,i为整数,且0<=i=<m<=300。

naf(k)具体计算步骤如下:

(1)预置i=0;令n=k;a0=a1=ai…=a256=0;

(2)循环判断n是否大于等于1;

如果n为奇数,则执行步骤(3),否则执行步骤(4);

(3)ai=2-(nmod4);

(4)ai=0;

(5)n=(n-ai)/2;i=i+1;

(6)n<1时,循环结束,输出整数m=i和数组(a0,a1,…am)。

步骤s104:基于计算并存储的sm2椭圆曲线基点的特殊倍点集与随机数k的非邻近形式值naf(k),通过点乘运算获得sm2椭圆曲线点群基点的倍点。

sm2椭圆曲线点群基点的倍点q=kg具体计算步骤如下:

现有的一种点乘运算示意流程图(如图2所示):

步骤s1041a:预置q=o;

其中o点为sm2椭圆曲线点群中的零点。

步骤s1042a:遍历i,i=m,m-1...1,0,m和ai通过随机数k的非邻近形式naf(k)计算获取。

步骤s1043a:q=2q;

如果ai=0,则不作任何计算;

如果ai=1,则q=q+g;

如果ai=-1,则q=q-g;

步骤s1044a:返回q值作为kg的计算结果。

本发明实施例提供的点乘运算示意流程图(如图3所示):

步骤s1041b:预置q=o;

其中o点为sm2椭圆曲线点群中的零点。

步骤s1042b:遍历i,其中i=0,1,…m,m和ai通过随机数k的非邻近形式naf(k)计算获取。

步骤s1043b:如果ai=0,则不作任何计算;

如果ai=1,则q=q+qi;

如果ai=-1,则q=q+ri。

步骤s1044b:返回q值作为kg的计算结果。

可以看出,如果(a0,a1,…ai…am)中ai=±1的项数为p,则图3所示计算kg只需要进行p个点加运算。图2为现有的一种点乘运算示意流程图,图2中kg的计算需要p个点加运算和m+1次的倍点计算q=2q。与图2相比,图3所示计算方法更优。

步骤s105:基于所述sm2椭圆曲线点群基点的倍点,通过sm2标准签名算法生成sm2数字签名。

实施例2

根据本发明实施例,本发明实施例还提供一种sm2数字签名的快速生成装置。图4是根据本发明实施例的一种sm2数字签名的快速生成装置的示意图,如图4所示:该装置包括:

预计算与存储模块20,预先计算并存储椭圆曲线基点的特殊倍点集;

生成模块21,生成随机数k;

计算模块22,计算随机数k的非邻近形式值naf(k);

点乘模块23,基于预先计算并存储的sm2椭圆曲线基点的特殊倍点集与随机数的非邻近形式值,通过点乘运算获得sm2椭圆曲线点群基点的倍点;

签名模块24,基于sm2椭圆曲线点群基点的倍点,通过sm2标准签名算法生成sm2数字签名。

作为一种可选的实施例,上述装置还包括预计算与存储模块:用于计算并存储由qi=2ig和ri=-2ig组成的特殊倍点集,其中g点为sm2算法固定参数,i=[0,300],i为整数。

作为一种可选的实施例,上述装置还包括计算模块:根据naf(k)计算公式,输入为随机数k,输出为整数m和数组(a0,a1,…ai…am),其中ai=1或-1或0,i为整数,且0<=i<=m<=300。

作为一种可选的实施例,上述装置还包括点乘模块:用于计算sm2椭圆曲线点群基点的倍点q=kg,其中g点为sm2算法固定参数;

其中倍点q=kg计算步骤为

a1:先假设q=o;

a2:遍历i,i=0,1,…m;

a3:如果ai=0,则q不作任何计算;

如果ai=1,则q=q+qi;

如果ai=-1,则q=q+ri;

其中m和ai通过随机数k的非邻近形式naf(k)计算获取,为sm2椭圆曲线基点的特殊倍点集里的点,i为整数,0<=i<=m<=300。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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