一种生成数字签名的方法及装置制造方法

文档序号:8004750阅读:479来源:国知局
一种生成数字签名的方法及装置制造方法
【专利摘要】本发明公开了一种生成数字签名的方法及装置。其方法包括:装置生成满足有效性判定条件的数字签名参数r;利用私钥dA、随机数k、r和椭圆曲线参数n,按照如下公式生成数字签名参数s:s=((1+dA)-1·(r+k)-r)modn,其中,k的取值范围为(1,n-1);判断生成的s是否为0,如果为0,重新生成满足有效性判定条件的r,并利用dA、重新生成的取值范围为(1,n-1)的k、重新生成的r、和n,重新生成s,直至s不为0;将r和不为0的s的数据类型转换为字节串,得到数字签名(r,s)。本发明实施例提供的技术方案,通过使用简化的计算公式获取数字签名参数s,可以减少大整数运算的次数,从而提高了基于SM2数字签名生成算法生成数字签名的运算效率。
【专利说明】一种生成数字签名的方法及装置
【技术领域】
[0001]本发明涉及信息【技术领域】,尤其涉及一种生成数字签名的方法及装置。
【背景技术】
[0002]SM2数字签名算法作为SM2密码算法的一个组成部分,其在用户身份认证和信息完整性校验功能领域得到很好的应用。在SM2数字签名算法应用过程中,算法运算效率一直是算法应用者们所关注的重点。SM2数字签名算法由SM2数字签名生成算法和SM2数字签名验证算法构成。
[0003]设待签名的消息为M,为了获取消息M的数字签名(r,s),当用户A需要使用数字签名时,可通过如下SM2数字签名生成算法实现:
[0004]Al:置蔚=2 ||M。
[0005]其中,Il表示级联运算,Za为通过密码杂凑函数求得的上述生成数字签名的用户A的杂凑值。
[0006]A2:计算,并将e的数据类型由比特串转换为整数。
[0007]其中,HvO为消息摘要长度为V比特的密码杂凑函数,如SM3密码杂凑算法。
[0008]A3:用随机数发生器产生随机数k e [I, Π-1]。
[0009]其中,η为椭圆曲线参数。
[0010]Α4:计算椭圆曲线点(Xl,yi) = [k]G,结果X1为域元素,将X1的数据类型转换为整数。
[0011]其中,G为椭圆曲线的基点,[k]G表示k与G点乘。
[0012]使用的椭圆曲线方程,其类型可选择素数域方程y2=x3+ax+b或二元扩域方程y2+xy=x3+ax2+b0
[0013]A5:计算 ^(e+xjmodn 公式一
[0014]即使用(e+x)对η求模。
[0015]若r=0 或 r+k=n 则返回 A3。
[0016]A6:计算 s=((l+dA)-1.(k-r.dA))modn 公式二
[0017]若s=0则返回A3。
[0018]其中,dA为上述用户A的私钥。
[0019]A7:将r、s的数据类型由整数转换为字节串,消息M的数字签名为(r,s)。
[0020]用户A可以是系统或设备,执行上述SM2数字签名生成算法的可以是设置于用户A内部的子系统、硬件模块、在用户A内可执行的软件模块等等,也可以是与用户A有通信连接、被用户A调用的系统或设备。
[0021]用户A具有长度为entlenA比特的可辨别标识IDa,记ENTLa是由整数entlenA转换而成的两个字节。在上述SM2数字 签名生成算法中,将G的坐标Xe、y(;和Pa的坐标xA、yA的数据类型转换为比特串,则上述Za=H256 (ENTLa Il IDa Il a Il b Il xG II yG II xA II yA)。其中,Pa为用户A的公钥,H256 Q为消息摘要长度为256比特的密码杂凑函数,如SM3密码杂凑算法。[0022]另外,在具体工程实现过程中,本领域技术人员通常会对公式二采用公式三和公式四两种变形,将公式二中(l+dAr求负整数指数幂运算转换为(l+dA)-1Hiodn求模逆运算,便于工程实现。
[0023]S= (((l+dA) _1modn).((k~r.dA)modn))modn 公式三
[0024]s= (((l+dA)_1modn).((k-(r.dA)modn)modn))modn 公式四
[0025]SM2数字签名生成算法是基于ECC算法理论实现的,实现过程中大整数乘法、大整数模乘运算等大整数运算是影响算法运算效率最为主要的因素,现有的SM2数字签名生成算法虽然能够满足一定的运算效率的需求,但如果希望进一步提高运算效率,现有技术中还没有相应的解决方案。

【发明内容】

[0026]本发明的目的是提供一种生成数字签名的方法及装置,以进一步提高基于SM2数字签名生成算法生成数字签名的运算效率。
[0027]本发明的目的是通过以下技术方案实现的:
[0028]一种生成数字签名的方法,包括:
[0029]装置生成满足有效性判定条件的数字签名参数r ;
[0030]所述装置利用私钥dA、取值范围为(l,n_l)的随机数k、所述数字签名参数r和椭圆曲线参数n,基于如下公式生成数字签名参数s:
[0031]S= ((l+dA).(r+k)-r)modn ;
[0032]所述装置判断生成的数字签名参数s是否为0,如果为0,重新生成满足有效性判定条件的数字签名参数r,并利用所述私钥dA、重新生成的取值范围为(l,n-l)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数S,直至所述数字签名参数s不为O ;
[0033]所述装置将最终得到的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,S)。
[0034]本发明实施例提供的方法,获取数字签名参数s时可以减少大整数运算的次数,从而提高基于SM2数字签名生成算法生成数字签名的运算效率。
[0035]较佳地,所述装置基于8=((1+(4)4.(r+k)-r)modn,生成数字签名参数s,包括:
[0036]所述装置将数字签名参数r与随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算;
[0037]所述装置将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0038]所述装置将求模运算与求模逆运算的运算结果进行大整数乘法运算;
[0039]所述装置将该大整数乘法运算结果减去数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0040]通过上述处理过程生成数字签名参数s,可减少I次大整数乘法或I次大整数模乘运算。
[0041]在上述任意实施例基础上,较佳地,生成数字签名参数s之前,该方法还可以包括:
[0042]所述装置获取r的有效性判定条件运算结果r+k,以便利用私钥dA、r的有效性判定条件运算结果r+k、所述数字签名参数r、和椭圆曲线参数η生成数字签名参数S。
[0043]生成数字签名参数s时,可以直接使用r的有效性判定条件运算结果(r+k),进一步提闻运算效率。
[0044]在上述任意实施例基础上,较佳地,生成数字签名参数s之前,该方法还可以包括:
[0045]所述装置获取r的有效性判定条件运算结果(r+k)modn,以便利用私钥dA、r的有效性判定条件运算结果(r+k)modn、所述数字签名参数r、和椭圆曲线参数η生成数字签名参数S。
[0046]由于避免了(r.dA)modn的运算,因此,可以减少I次大整数模乘运算。
[0047]一种生成数字签名的装置,包括:
[0048]参数输入接口单元,用于获取杂凑值Za和待签名的消息M ;
[0049]级联运算单元,用于将所述参数输入接口单元获取的杂凑值Za和待签名的消息M进行级联运算,生试斤
[0050]密码杂凑算法运算单元,用于将所述级联运算单元生成的及进行密码杂凑运算,生成消息摘要信息e ;
[0051]随机数发生器,用于生成取值范围为(l,n_l)的随机数k;
[0052]ECC算法运算单元,用于根据所述随机数发生器生成的随机数k进行椭圆曲线算法点乘运算(Xl,yi)=kG,得到椭圆曲线点横坐标X1,其中G为椭圆曲线参数;
[0053]数据类型转换单元,用于将所述密码杂凑算法运算单元生成的消息摘要信息e的数据类型转换为整数类型,还用于将所述ECC算法运算单元生成的椭圆曲线点横坐标X1的数据类型转换为整数类型;
[0054]大整数运算单元,用于利用所述数据类型转换单元进行数据类型转换的消息摘要信息e和椭圆曲线点横坐标X1,生成数字签名参数r ;
[0055]有效性判定单元,用于对所述大整数运算单元生成的数字签名参数r进行有效性判定;
[0056]如果所述数字签名参数r不满足有效性判定条件,所述随机数发生器重新生成取值范围为(1,n-Ι)的随机数k;所述ECC算法运算单元根据所述随机数发生器重新生成的随机数k重新得到椭圆曲线点横坐标X1 ;所述数据类型转换单元对重新得到的椭圆曲线点横坐标X1进行数据类型转换;所述大整数运算单元根据所述消息摘要信息e和重新生成的椭圆曲线点横坐标X1,重新生成数字签名参数r,并利用重新生成的数字签名参数r和重新生成的随机数k,所述有效性判定单元对重新生成的数字签名参数r进行有效性判定;
[0057]所述大整数运算单元还用于,利用私钥dA、所述随机数发生器生成的所述随机数k、所述数字签名参数r、和椭圆曲线参数n,基于如下公式生成数字签名参数s:S= ((l+dA).(r+k) _r) modn ;
[0058]所述有效性判定单元还用于,判断所述大整数运算单元生成的数字签名参数s是否为O ;
[0059]如果为0,所述随机数发生器重新生成取值范围为(1,n-Ι)的随机数k,所述大整数运算单元重新生成数字签名参数r,并在所述重新生成的数字签名参数r满足有效性判定条件时,利用所述私钥4、重新生成的取值范围为(1,n-Ι)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数s ;
[0060]所述数据类型转换单元还用于,将所述大整数运算单元最终生成的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,s);
[0061]参数输出接口单元,用于输出数字签名(r,S)。
[0062]本发明实施例提供的装置,获取数字签名参数s时可以减少大整数运算的次数,从而提高基于SM2数字签名生成算法生成数字签名的运算效率。
[0063]较佳地,生成数字签名参数s时,所述大整数运算单元具体用于:
[0064]将所述数字签名参数r与所述随机数发生器生成的所述随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算;
[0065]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0066]将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算;
[0067]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0068]通过上述处理过程生成数字签名参数s,可减少I次大整数乘法或I次大整数模乘运算。
[0069]在上述任意装置实施例基础上,较佳地,如果所述有效性判定单元使用数字签名参数r的有效性判定条件运算.结果r+k对数字签名参数r的有效性进行判定,所述大整数运算单元在生成所述数字签名参数r后,还用于利用生成的数字签名参数r和所述随机数发生器生成的所述随机数k,生成数字签名参数r的有效性判定条件运算结果r+k;
[0070]生成数字签名参数s时,所述大整数运算单元用于:
[0071]使用所述r的有效性判定条件运算结果r+k对椭圆曲线参数η进行求模运算;
[0072]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0073]将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算;
[0074]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0075]生成数字签名参数s时,可以直接使用r的有效性判定条件运算结果(r+k),进一步提闻运算效率。
[0076]在上述任意装置侧实施例基础上,较佳地,如果所述有效性判定单元使用数字签名参数r的有效性判定条件运算结果(r+k)modn对数字签名参数r的有效性进行判定,所述大整数运算单元在生成所述数字签名参数 后,还用于利用生成的数字签名参数r、所述随机数发生器生成的所述随机数k和椭圆曲线参数n,生成数字签名参数r的有效性判定条件运算结果(r+k) modn ;
[0077]生成数字签名参数s时,所述大整数运算单元用于:
[0078]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0079]将所述r的有效性判定条件运算结果(r+k) modn与所述求模逆运算结果进行大整数乘法运算;
[0080]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0081]由于避免了(r.dA)modn的运算,因此,可以减少I次大整数模乘运算。[0082]在上述任意实施例基础上,大整数运算单元所使用的私钥,既可以由该装置生成,也可以从外部获取。下面举例说明:
[0083]方式一:
[0084]所述装置还包括:
[0085]密钥生成单元,用于生成所述私钥dA ;
[0086]密钥存储单元,用于保存所述密钥生成单元生成的所述私钥dA ;所述大整数运算单元从所述密钥存储单元中获取所述私钥dA以生成数字签名参数S。
[0087]方式二:
[0088]所述参数输入接口单元还用于获取所述私钥dA ;所述大整数运算单元从所述参数输入接口单元获取所述私钥dA以生成数字签名参数S。
[0089]方式三:
[0090]所述装置还包括密钥存储单元;所述参数输入接口单元还用于获取所述私钥dA ;所述密钥存储单元用于保存所述参数输入接口单元获取的所述私钥dA ;所述大整数运算单元从所述密钥存储单元获取所述私钥dA以生成数字签名参数S。
【专利附图】

【附图说明】
[0091]图1为本发明实施例提供的第一种方法流程图;
[0092]图2为本发明实施例提供的第二种方法流程图;
[0093]图3为本发明实施例提供的第三种方法流程图;
[0094]图4为本发明实施例提供的装置结构示意图。
【具体实施方式】
[0095]本发明实施例提供了一种生成数字签名的技术方案,装置在生成满足有效性判定条件的数字签名参数r后,利用私钥dA、取值范围为(1,n-Ι)的随机数k、数字签名参数r和椭圆曲线参数η,基于如下公式生成数字签名参数s:s=((l+dA).(r+k)-r)modn,判断生成的数字签名参数s是否为0,如果为0,重新生成满足有效性判定条件的数字签名参数r,并利用所述私钥dA、重新生成的取值范围为(l,n-l)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数S,直至所述数字签名参数s不为0,将最终得到的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串后,得到数字签名(r,S)。获取数字签名参数s时可以减少大整数运算的次数,从而提高了基于SM2数字签名生成算法生成数字签名的运算效率。
[0096]下面将结合附图,对本发明实施例提供的技术方案进行详细描述。
[0097]本发明实施例提供的一种生成数字签名的方法如图1所示,具体包括如下操作:
[0098]步骤100、装置生成满足有效性判定条件的数字签名参数r。
[0099]其中,满足有效性判定条件是指,得到的数字签名参数r不为0,并且r+k不为η。η为椭圆曲线参数,k为取值范围是(I, n-Ι)的随机数。
[0100]可以但不仅限于采用SM2数字签名生成算法中计算r的方式生成满足有效性判定条件的数字签名参数r。
[0101]步骤110、该装置利用私钥4、上述随机数k、上述数字签名参数r和上述椭圆曲线参数η,基于如下公式生成数字签名参数s:
[0102]s=((l+dA).(r+k) _r) modn 公式五
[0103]其中,公式五是上述公式二的简化形式,基于公式五生成数字签名参数S,不用进行r.dA运算,可以减少一次大整数运算。
[0104]S= ((l+dA).(k- r.dA))modn
[0105]公式化简的原理如下:=((1+4)-1.(k-r.dA+r-r))modn
[0106]= ((l+dA).((r+k) - r (l+dA))) modn
[0107]= ((l+dA).(r+k) -r)modn
[0108]其中,私钥dA是数字签名使用者(例如上述用户A)的私钥。该数字签名使用者可以是系统或设备,具体的,数字签名使用者可以是用户设备(UE),也可以是参与身份认证的网络节点,如基站、移动性管理实体(MME )等等。
[0109]步骤120、该装置判断生成的数字签名参数s是否为0,如果不为0,执行步骤130,如果为0,重新生成满足有效性判定条件的数字签名参数r,并利用上述私钥dA、重新生成的取值范围为(1,n-Ι)的随机数k、重新生成的数字签名参数r、和上述椭圆曲线参数n,重新生成数字签名参数S,直至生成的数字签名参数s不为O。
[0110]步骤130、该装置将最终得到的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,S)。
[0111]执行上述操作生成数字签名的数字签名生成者可以是设置于数字签名使用者内部的子系统、硬件模块、在数字签名使用者内可执行的软件模块等等,也可以是与数字签名使用者有通信连接、被数字签名使用者调用的系统或设备。
[0112]对于数字签名使用者的私钥,如果数字签名生成者是设置于数字签名使用者内部的子系统、硬件模块、在数字签名使用者内可执行的软件模块等等,则数字签名生成者可以生成该密钥并保存。对于数字签名使用者的私钥,数字签名生成者也可以从数字签名使用者处获取并保存,还可以从数字签名使用者处获取并应用,但不保存。
[0113]在实际应用过程中,基于公式五,具体可以通过不同的实现方式得到数字签名参数S,从而减少一次大整数乘法运算或者大整数模乘运算。
[0114]一种优选的实现方式中,该装置利用私钥dA、随机数k、上述数字签名参数r、和椭圆曲线参数n,按照如下公式生成数字签名参数s:
[0115]S= (((l+dA) _1modn).((r+k)modn) -r)modn 公式六
[0116]该公式六是8=((1+( )-1.(r+k)-r)modn 的变形。
[0117]也就是说,上述装置将数字签名参数r与随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算;将私钥dA加I后对椭圆曲线参数η进行求模逆运算,将求模运算与求模逆运算的运算结果进行大整数乘法运算,将该大整数乘法运算结果减去数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0118]公式化简的原理如下:
[0119]S= ((l+dA).(r+k) _r)modn
[0120]=((( (l+dA) _1modn).((r+k) modn)) modn-rmodn) modn
[0121]=(( (l+dA) _1modn).( (r+k) modn) -r) modn
[0122]在该优选的实现方式中,在计算数字签名参数s时,利用该公式六实现。[0123]应当指出的是,生成数字签名参数s的具体实现方式不仅限于该优选实施例。在本发明实施例提出了简化的公式五后,基于公式五的具体实现公式是本领域技术人员不需要付出创造性劳动即可得到的,也在本发明的保护范围之内。
[0124]在上述任一实施例的基础上,为了进一步提高生成数字签名的运算效率,还可以在生成数字签名参数s之前,获取r的有效性判定条件运算结果r+k。该装置可以直接利用r的有效性判定条件运算结果r+k,私钥dA、上述数字签名参数r和椭圆曲线参数n,生成数字签名参数S。
[0125]在上述任一实施例的基础上,为了进一步提高生成数字签名的运算效率,还可以在生成数字签名参数s之前,获取r的有效性判定条件运算结果(r+k)modn。该装置可以直接利用r的有效性判定条件运算结果(r+k)modn,私钥dA、上述数字签名参数r和椭圆曲线参数n,生成数字签名参数S。该优选的实现方式中,根据有效性判定条件运算结果(r+k)modn判断r的有效性与根据有效性判定条件运算结果r+k判断r的有效性等效,其等效原理是:在SM2数字签名生成算法中,数字签名参数r和随机数k的取值范围均在(I,n-Ι)之间,因此r+k的取值范围在(2, 2n-2)之间,故(r+k)modn=0与r+k=n等效。相应的,在生成满足判定性条件的数字签名参数r的过程中,可以判断是否(r+k)Hiodn=O代替判断是否r+k=nο
[0126]假设待签名的消息为M,下面以公式六为例,结合图2对获取M的数字签名(r,s)的一种实现方式进行详细说明。该实现方式具体包括如下操作:
[0127]步骤200、将数字签名使用者的杂凑值与消息M进行级联运算,即:置=
[0128]步骤210、获取消息摘要信息e,即:计算e =>,并将e的数据类型由比特串转换为整数。
[0129]步骤220、用随机数发生器产生随机数k e [I, n-Ι]。
[0130]步骤230、计算椭圆曲线点(Xl,yi) = [k]G,结果X1为域元素,将X1的数据类型转换为整数。
[0131]步骤240、生成数字签名参数r,即:计算rKe+xjmodn 公式一
[0132]步骤250、对r进行有效性判定:假设t=r+k,判断r和t的取值,如果r=0或t=n,则r不满足有效性判定条件,返回步骤220,如果r古O且t古n,则r满足有效性判定条件,执行步骤260。
[0133]步骤260、利用数字签名使用者的私钥dA、r的有效性判定条件运算结果r+k、数字签名参数r、和椭圆曲线参数n,按照如下公式生成数字签名参数s:
[0134]S= (((l+dA) _1modn).(tmodn) -r)modn 公式七
[0135]应当指出的是,公式七即上述的公式六。区别仅在于,公式七表示的含义是:生成数字签名s时,不需要重复计算r+k,而是利用r的有效性判定条件运算结果r+k。
[0136]步骤270、判断s的取值是否为0,若s=0,返回步骤220,否则,执行步骤280。
[0137]步骤280、将得到的数字签名参数r、s的数据类型由整数转换为字节串,得到消息M的数字签名为(r,s)。
[0138]图2所示的实施例中,利用公式七生成数字签名参数S,可减少I次大整数乘法或I次大整数模乘运算,且在使用公式七生成数字签名参数s时,可以直接使用r的有效性判定条件运算结果(r+k),进一步提高运算效率。[0139]假设待签名的消息为M,下面以公式六为例,结合图3对获取M的数字签名(r,s)的一种实现方式进行详细说明。该实现方式具体包括如下操作:
[0140]步骤300、将数字签名使用者的杂凑值与消息M进行级联运算,即:置# = ZJM。
[0141]步骤310、获取消息摘要信息e,即:计算e=//,.(Λ?),并将e的数据类型由比特串转换为整数。
[0142]步骤320、用随机数发生器产生随机数k e [I, n-Ι]。
[0143]步骤330、计算椭圆曲线点(Xl,yi) = [k]G,结果X1为域元素,将X1的数据类型转换为整数。
[0144]步骤340、生成数字签名参数r,即:计算rKe+xjmodn 公式一
[0145]步骤350、对r进行有效性判定:假设t= (r+k) modn,判断r和t的取值,如果r=0或t=0,则r不满足有效性判定条件,返回步骤320,如果r古O且t古0,则r满足有效性判定条件,执行步骤360。
[0146]步骤360、利用数字签名使用者的私钥dA、r的有效性判定条件运算结果(r+k)modn、数字签名参数r、和椭圆曲线参数n,按照如下公式生成数字签名参数s:
[0147]S= (((l+dA) _1modn).t_r)modn 公式八
[0148]应当指出的是,公式八即上述的公式六。区别仅在于,公式八表示的含义是:生成数字签名s时,不需要重复计算(r+k)modn,而是利用r的有效性判定条件运算结果(r+k)modn ο
[0149]步骤370、判断s的取值是否为0,若s=0,返回步骤320,否则,执行步骤380。
[0150]步骤380、将得到的数字签名参数r、s的数据类型由整数转换为字节串,得到消息M的数字签名为(r, s)。
[0151]图3所示的实施例中,利用公式八生成数字签名参数S,可减少I次大整数乘法或I次大整数模乘运算,且在使用公式八生成数字签名参数s时,可以直接使用r的有效性判定条件运算结果(r+k)modn,进一步提高运算效率。
[0152]另外,需说明,利用本发明方案对生成数字签名的方法进行改进时,相对于公式三将节省一次大整数乘法运算,相对于公式四将节省一次大整数模乘运算。
[0153]基于与方法相同的发明构思,本发明实施例还提供一种生成数字签名的装置,其结构如图4所示,具体包括:
[0154]参数输入接口单元401,用于获取杂凑值Za和待签名的消息M。
[0155]参数输入接口单元401将获取的杂凑值Za和待签名的消息M输出给级联运算单元 402。
[0156]级联运算单元402,用于将所述参数输入接口单元401获取的杂凑值Za和待签名的消息M进行级联运算,生成A 3
[0157]级联运算单元402将生成的及输出给密码杂凑算法运算单元403。
[0158]密码杂凑算法运算单元403,用于将所述级联运算单元402生成的#进行密码杂凑运算,生成消息摘要信息e。
[0159]密码杂凑算法运算单元403将生成的消息摘要信息输出给数据类型转换单元406。[0160]随机数发生器404,用于生成取值范围为(l,n_l)的随机数k。
[0161]随机数发生器404将生成的随机数发送给ECC算法运算单元405。
[0162]ECC算法运算单元405,用于根据所述随机数发生器404生成的随机数k进行椭圆曲线算法点乘运算(Xl,Y1) =kG,得到椭圆曲线点横坐标X1,其中G为椭圆曲线参数。
[0163]ECC算法运算单元405将得到的椭圆曲线点横坐标X1输出给数据类型转换单元406。
[0164]数据类型转换单元406,用于将所述密码杂凑算法运算单元403生成的消息摘要信息e的数据类型转换为整数类型,还用于将所述ECC算法运算单元405生成的椭圆曲线点横坐标X1的数据类型转换为整数类型。
[0165]数据类型转换单元406将转换类型后的消息摘要信息e和椭圆曲线点横坐标X1输出给大整数运算单元407。
[0166]大整数运算单元407,用于利用所述数据类型转换单元406进行数据类型转换的消息摘要信息e和椭圆曲线点横坐标X1,生成数字签名参数r。
[0167]大整数运算单元407将生成的数字签名参数r输出给有效性判定单元408。
[0168]有效性判定单元408,用于对所述大整数运算单元407生成的数字签名参数r进行有效性判定。
[0169]如果所述数字签名参数r不满足有效性判定条件,所述随机数发生器404重新生成取值范围为(l,n-l)的随机数 k ;所述ECC算法运算单元405根据所述随机数发生器404重新生成的随机数k重新得到椭圆曲线点横坐标X1 ;所述数据类型转换单元406对重新得到的椭圆曲线点横坐标X1进行数据类型转换;所述大整数运算单元407根据所述消息摘要信息e和重新生成的椭圆曲线点横坐标X1,重新生成数字签名参数r,并利用重新生成的数字签名参数r和重新生成的随机数k,所述有效性判定单元408对重新生成的数字签名参数r进行有效性判定。
[0170]其中,如果所述数字签名参数! 不满足有效性判定条件,既可以由有效性判定单元408触发随机数发生器404重新生成随机数,也可以通过另外设置的控制单元触发随机数发生器404重新生成随机数。
[0171]所述大整数运算单元407还用于,利用私钥dA、所述随机数发生器404生成的所述随机数k、所述数字签名参数r、和椭圆曲线参数n,基于如下公式生成数字签名参数s:S= ((l+dA).(r+k) _r) modn ;
[0172]所述有效性判定单元408还用于,判断所述大整数运算单元407生成的数字签名参数s是否为O ;
[0173]如果为0,所述随机数发生器404重新生成取值范围为(1,n-Ι)的随机数k,所述大整数运算单元407重新生成数字签名参数r,并在所述重新生成的数字签名参数r满足有效性判定条件时,利用所述私钥dA、重新生成的取值范围为(1,n-Ι)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数s ;
[0174]所述数据类型转换单元406还用于,将所述大整数运算单元407最终生成的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,s);
[0175]参数输出接口单元409,用于输出数字签名(r,S)。
[0176]较佳地,生成数字签名参数s时,所述大整数运算单元407具体用于:[0177]将所述数字签名参数r与所述随机数发生器404生成的所述随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算;
[0178]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0179]将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算;
[0180]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0181]在基于图4所示的实施例基础上,较佳地,如果所述有效性判定单元408使用数字签名参数r的有效性判定条件运算结果r+k对数字签名参数r的有效性进行判定,所述大整数运算单元407在生成所述数字签名参数r后,还用于利用生成的数字签名参数r和所述随机数发生器404生成的所述随机数k,生成数字签名参数r的有效性判定条件运算结果r+k;
[0182]生成数字签名参数s时,所述大整数运算单元407用于:
[0183]使用所述r的有效性判定条件运算结果r+k对椭圆曲线参数η进行求模运算;
[0184]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0185]将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算;
[0186]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0187]在基于图4所示的实施例基础上,较佳地,如果所述有效性判定单元408使用数字签名参数r的有效性判定条件运算结果(r+k)modn对数字签名参数r的有效性进行判定,所述大整数运算单元407在生成所述数字签名参数r后,还用于利用生成的数字签名参数r、所述随机数发生器404生成的所述随机数k和椭圆曲线参数n,生成数字签名参数r的有效性判定条件运算结果(r+k) modn ;
[0188]生成数字签名参数s时,所述大整数运算单元407用于:
[0189]将私钥dA加I后对椭圆曲线参数η进行求模逆运算;
[0190]将所述r的有效性判定条件运算结果(r+k) modn与所述求模逆运算结果进行大整数乘法运算;
[0191]将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
[0192]在基于图4所示的任意实施例基础上,大整数运算单元407所使用的私钥dA可以由本装置生成,也可以从外部获取。下面举例说明:
[0193]方式一:
[0194]本发明实施例提供的装置还包括密钥生成单元和密钥存储单元。密钥生成单元用于生成所述私钥dA ;密钥存储单元用于保存所述密钥生成单元生成的所述私钥dA。
[0195]相应的,所述大整数运算单元407从所述密钥存储单元中获取所述私钥dA以生成数字签名参数S。
[0196]方式二:
[0197]参数输入接口单元401还用于获取所述私钥dA。
[0198]相应的,所述大整数运算单元407从所述参数输入接口单元401获取所述私钥dA以生成数字签名参数S。[0199]方式三:
[0200]本发明实施例提供的装置还包括密钥存储单元。
[0201]所述参数输入接口单元401还用于获取所述私钥dA ;所述密钥存储单元用于保存所述参数输入接口单元401获取的所述私钥dA。
[0202]相应的,所述大整数运算单元407从所述密钥存储单元获取所述私钥dA以生成数字签名参数S。
[0203]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0204]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0205]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0206]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0207]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0208]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种生成数字签名的方法,其特征在于,包括: 装置生成满足有效性判定条件的数字签名参数r ; 所述装置利用私钥dA、取值范围为(l,n-l)的随机数k、所述数字签名参数r、和椭圆曲线参数n,基于如下公式生成数字签名参数s:
S= ((l+dA).(r+k) -r)modn ; 所述装置判断生成的数字签名参数s是否为O,如果为O,重新生成满足有效性判定条件的数字签名参数r,并利用所述私钥七、重新生成的取值范围为(l,n-l)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数S,直至所述数字签名参数s不为O ; 所述装置将最终得到的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,S)。
2.根据权利要求1所述的方法,其特征在于,所述装置基于^(α+ΑΓ1.(r+k)-r)modn,生成数字签名参数s,包括: 所述装置将数字签名参数r与随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算; 所述装置将私钥dA加I后对椭圆曲线参数η进行求模逆运算; 所述装置将求模运算与求模逆运算的运算结果进行大整数乘法运算; 所述装置将该大整数乘法运算结果减去数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
3.根据权利要求1或2所述的方法,其特征在于,生成数字签名参数s之前,该方法还包括: 所述装置获取r的有效性判定条件运算结果r+k,以便利用私钥dA、r的有效性判定条件运算结果r+k、所述数字签名参数r、和椭圆曲线参数η生成数字签名参数S。
4.根据权利要求1或2所述的方法,其特征在于,生成数字签名参数s之前,该方法还包括: 所述装置获取r的有效性判定条件运算结果(r+k)modn,以便利用私钥dA、r的有效性判定条件运算结果(r+k)modn、所述数字签名参数r、和椭圆曲线参数η生成数字签名参数S。
5.一种生成数字签名的装置,包括: 参数输入接口单元,用于获取杂凑值Za和待签名的消息M ; 级联运算单元,用于将所述参数输入接口单元获取的杂凑值Za和待签名的消息M进行级联运算,生成? 密码杂凑算法运算单元,用于将所述级联运算单元生成的及进行密码杂凑运算,生成消息摘要信息e ; 随机数发生器,用于生成取值范围为(1,n-Ι)的随机数k ; ECC算法运算单元,用于根据所述随机数发生器生成的随机数k进行椭圆曲线算法点乘运算(X1, yi)=kG,得到椭圆曲线点横坐标X1,其中G为椭圆曲线参数; 数据类型转换单元,用于将所述密码杂凑算法运算单元生成的消息摘要信息e的数据类型转换为整数类型,还用于将所述ECC算法运算单元生成的椭圆曲线点横坐标X1的数据类型转换为整数类型; 大整数运算单元,用于利用所述数据类型转换单元进行数据类型转换的消息摘要信息e和椭圆曲线点横坐标X1,生成数字签名参数r ; 有效性判定单元,用于对所述大整数运算单元生成的数字签名参数r进行有效性判定; 如果所述数字签名参数r不满足有效性判定条件,所述随机数发生器重新生成取值范围为(1,n-Ι)的随机数k;所述ECC算法运算单元根据所述随机数发生器重新生成的随机数k重新得到椭圆曲线点横坐标X1 ;所述数据类型转换单元对重新得到的椭圆曲线点横坐标X1进行数据类型转换;所述大整数运算单元根据所述消息摘要信息e和重新生成的椭圆曲线点横坐标X1,重新生成数字签名参数r,并利用重新生成的数字签名参数r和重新生成的随机数k,所述有效性判定单元对重新生成的数字签名参数r进行有效性判定; 其特征在于,所述大整数运算单元还用于,利用私钥dA、所述随机数发生器生成的所述随机数k、所述数字签名参数r、和椭圆曲线参数n,基于如下公式生成数字签名参数s:S= ((l+dA).(r+k) _r ) modn ; 所述有效性判定单元还用于,判断所述大整数运算单元生成的数字签名参数s是否为O; 如果为0,所述随机数发生器重新生成取值范围为(1,n-ι)的随机数k,所述大整数运算单元重新生成数字签名参数r,并在所述重新生成的数字签名参数r满足有效性判定条件时,利用所述私钥dA、重新生成的取值范围为(1,n-Ι)的随机数k、所述重新生成的数字签名参数r、和所述椭圆曲线参数n,重新生成数字签名参数s ; 所述数据类型转换单元还用于,将所述大整数运算单元最终生成的数字签名参数r和不为O的数字签名参数s的数据类型转换为字节串,得到数字签名(r,s); 参数输出接口单元,用于输出数字签名(r,S)。
6.根据权利要求5所述的装置,其特征在于,生成数字签名参数s时,所述大整数运算单元具体用于: 将所述数字签名参数r与所述随机数发生器生成的所述随机数k进行大整数加法运算后,使用大整数加法运算结果对椭圆曲线参数η进行求模运算; 将私钥dA加I后对椭圆曲线参数η进行求模逆运算; 将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算; 将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
7.根据权利要求5所述的装置,其特征在于,如果所述有效性判定单元使用数字签名参数r的有效性判定条件运算结果r+k对数字签名参数r的有效性进行判定,所述大整数运算单元在生成所述数字签名参数r后,还用于利用生成的数字签名参数r和所述随机数发生器生成的所述随机数k,生成数字签名参数r的有效性判定条件运算结果r+k; 生成数字签名参数s时,所述大整数运算单元用于: 使用所述r的有效性判定条件运算结果r+k对椭圆曲线参数η进行求模运算; 将私钥dA加I后对椭圆曲线参数η进行求模逆运算;将所述求模运算结果与所述求模逆运算结果进行大整数乘法运算; 将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
8.根据权利要求5所述的装置,其特征在于,如果所述有效性判定单元使用数字签名参数r的有效性判定条件运算结果(r+k)modn对数字签名参数r的有效性进行判定,所述大整数运算单元在生成所述数字签名参数! 后,还用于利用生成的数字签名参数r、所述随机数发生器生成的所述随机数k和椭圆曲线参数n,生成数字签名参数r的有效性判定条件运算结果(r+k) modn ; 生成数字签名参数s时,所述大整数运算单元用于: 将私钥dA加I后对椭圆曲线参数η进行求模逆运算; 将所述r的有效性判定条件运算结果(r+k) modn与所述求模逆运算结果进行大整数乘法运算; 将所述大整数乘法运算结果减去所述数字签名参数r后对椭圆曲线参数η进行求模运算,得到数字签名参数S。
9.根据权利要求5?8任一项所述的装置,其特征在于,还包括: 密钥生成单元,用于生成所述私钥dA ; 密钥存储单元,用于保存所述密钥生成单元生成的所述私钥dA;所述大整数运算单元从所述密钥存储单元中获取所述私钥dA以生成数字签名参数S。
10.根据权利要求5?8任一项所述的装置,其特征在于: 所述参数输入接口单元还用于获取所述私钥dA ;所述大整数运算单元从所述参数输入接口单元获取所述私钥dA以生成数字签名参数s ;或者, 还包括密钥存储单元;所述参数输入接口单元还用于获取所述私钥dA ;所述密钥存储单元用于保存所述参数输入接口单元获取的所述私钥dA ;所述大整数运算单元从所述密钥存储单元获取所述私钥dA以生成数字签名参数S。
【文档编号】H04L9/32GK103427997SQ201310363349
【公开日】2013年12月4日 申请日期:2013年8月16日 优先权日:2013年8月16日
【发明者】李志勇, 万红涛, 颜湘 申请人:西安西电捷通无线网络通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1