数字签名、验签方法和区分交易签名和普通签名的方法

文档序号:7774346阅读:2695来源:国知局
数字签名、验签方法和区分交易签名和普通签名的方法
【专利摘要】本发明提供一种数字签名、验签方法和区分交易签名和普通签名的方法。包括:利用交易标识和普通标识分别进行SM3计算,获得第一交易杂凑值Z1和第一普通杂凑值Z2;将所述第一交易杂凑值Z1和第一普通杂凑值Z2分别与签名消息M连接后,进行SM3计算,获得第二交易杂凑值e1和第二普通杂凑值e2;使用用户私钥d对所述第二交易杂凑值e1和第二普通杂凑值e2分别进行签名运算,分别生成交易签名值(r,s)和普通签名值(r,s)。用相对应的用户身份标识ID进行杂凑并验签,能够区分SM2交易签名和普通签名,从而防止他人的骗签攻击。
【专利说明】数字签名、验签方法和区分交易签名和普通签名的方法
【技术领域】
[0001]本发明涉及信息安全领域。
【背景技术】
[0002]近年来,电子商务的迅猛发展需要从根本上解决真实身份识别及网络数据传输安全性等问题,带有液晶显示屏的UsbKey则应允而生。带有液晶显示屏的key增加了人机交互操作,增加了显示屏和按键,便于用户输入密码、核实显示的交易信息等。
[0003]带液晶显示的UsbKey在使用过程中会进行不同类型的签名,简单的可以分为交易签名和普通签名。其中交易签名需要将交易信息(如转入账户,转账金额等)显示到UsbKey的液晶屏上,并等待用户核对完信息并执行确定操作后才完成一次交易签名的过程。而普通签名则不需要液晶屏显示和用户确认。而攻击带液晶显示的UsbKey —种常用方式就是将交易信息的数据伪装成普通签名数据发给UsbKey进行签名以绕过液晶屏的显示,从而完成一次骗签。所以,对于带液晶显示的UsbKey来说如何正确区分交易签名和普通签名就显得尤为重要。
[0004]传统的RSA签名的身份认证方式在国家密码管理局的要求下要逐步被SM2签名算法所替换。SM2相比RSA算法有以下优点:安全性高,存储空间小,签名速度快,国产算法等特点。
[0005]在使用RSA签名算法时要和杂凑算法(MD5,Shal,SHAMD5, Sha256等)配合使用才能完成一次签名。因为可以和RSA配对的杂凑算法有多种,所以RSA签名时的交易签名和普通签名可以根据杂凑算法来区分。但是不同于RSA签名算法可以通过区分几种配套的杂凑算法来区分交易签名和非交易签名来防止骗签攻击。
[0006]SM2签名算法只能和SM3 —种杂凑算法配套使用,SM2签名不能通过杂凑算法来区分交易签名和非交易签名。所以需要一种新的方式来区分交易签名和普通签名,从而防止他人的骗签攻击。

【发明内容】

[0007]为了区分交易签名和普通签名,本发明提供一种数字签名、验签方法和区分交易签名和普通签名的方法。
[0008]为解决上述技术问题,本发明提供了如下技术方案:
[0009]一种数字签名的方法,包括:
[0010]利用用户身份标识ID进行SM3计算,获得第一杂凑值Z ;
[0011]将所述第一杂凑值Z和签名消息M连接后,进行SM3计算,获得第二杂凑值e ;
[0012]使用用户私钥d对所述第二杂凑值e进行签名运算,生成签名值(r,s)。
[0013]进一步地,所述用户身份标识ID为交易标识或普通标识,所述交易标识为进行交易签名时使用的用户身份标识ID,所述普通标识为进行普通签名时使用的用户身份标识ID0[0014]进一步地,所述利用用户身份标识ID进行SM3计算,获得第一杂凑值Z的步骤包括:
[0015]利用用户身份标识ID、部分椭圆曲线系统参数和用户公钥P进行SM3计算,获得第
一杂凑值Z。
[0016]进一步地,所述利用用户身份标识ID、部分椭圆曲线系统参数和用户公钥P进行SM3计算,获得第一杂凑值Z的步骤包括:
[0017]Z=SM3 (ENTL | | ID | a b | | xG | | yG | | xa | | ya)
[0018]其中:
[0019]ENTL表示的用户身份标识ID的比特长度 ;
[0020]ID为用户身份标识;
[0021]a, b为曲线系统参数;
[0022]XG, yG为捕圆曲线的基点G的坐标;
[0023]Xa, Ya为用户公钥P的坐标;
[0024]I I表示将数值连接。
[0025]进一步地,使用用户私钥d对所述第二杂凑值e进行签名运算,生成签名值(r,s)的步骤包括:
[0026]Al.将e的数据类型转换为整数;
[0027]A2.产生随机数k e [I, η-1];所述η为素数;
[0028]A3.计算椭圆曲线点(xl,yl) = [k]G,将Xl的数据类型转换为整数;其中,[k]G表示椭圆曲线的基点G的k倍点;
[0029]A4.计算 r=(e+xl)mod η,若 r=0 或 r+k=n 则返回 A2 ;
[0030]A5.计算 s=((l+d)、(k-r*d))mod η,若 s=0 则返回 Α2 ;其中,d 为用户私钥;
[0031]A6.将r,s的数据类型转换为字节串,获得消息M的签名值(r,s)。
[0032]一种验签的方法,包括:
[0033]使用用户公钥P对签名值(r,s)进行解签名运算,生成解密值;
[0034]判断所述解密值与第二杂凑值e是否相等,若相等,则验签成功,若不相等,则验签失败。
[0035]进一步地,使用用户公钥P对签名值(r,s)进行解签名运算,生成解密值的步骤包括:
[0036]B1.检验r e [l,n-l]是否成立,若不成立则验证通不过;所述η为素数;
[0037]Β2.检验s e [l,n-l]是否成立,若不成立则验证通不过;
[0038]B3.令 M,=Z||M;
[0039]B4.计算e’ =SM3(M’),将e’的数据类型转换为整数;
[0040]B5.将r, s的数据类型转换为整数,计算t=(r+s)mod η,若t=0,则验证通不过;
[0041]B6.计算椭圆曲线点(xl’,yl’)= [s]G+[t]P ;其中,[s]G表示椭圆曲线的基点G的s倍点,[t] P表示用户公钥P的t倍点;
[0042]B7.将xl’的数据类型转换为整数,计算R=(e’ +xl’ )mod n,检验R=r是否成立,若成立验证通过,否则验证不通过。
[0043]一种区分交易签名和普通签名的方法,包括:[0044]利用交易标识和普通标识分别进行SM3计算,获得第一交易杂凑值Zl和第一普通杂凑值Z2 ;
[0045]将所述第一交易杂凑值Zl和第一普通杂凑值Z2分别与签名消息M连接后,进行SM3计算,获得第二交易杂凑值el和第二普通杂凑值e2 ;
[0046]使用用户私钥d对所述第二交易杂凑值el和第二普通杂凑值e2分别进行签名运算,分别生成交易签名值(r,s)和普通签名值(r,s)。
[0047]本发明提供的方法在完成一个SM2算法的签名过程中,需要首先根据用户身份标识ID得出Z值,并对Z值和签名数据做SM3杂凑运算,之后再将杂凑结果进行SM2的运算,才算完成一个签名过程。
[0048]因为利用第一用户身份标识ID (交易标识)和第二用户身份标识ID (普通标识)分别进行签名运算,所以能够通过用户身份标识ID来区分交易签名和普通签名,在服务器端验签时,用相对应的用户身份标识ID进行杂凑并验签,能够区分SM2交易签名和普通签名,从而防止他人的骗签攻击。
【专利附图】

【附图说明】
[0049]图1为本发明实施例区分交易签名和普通签名的处理图;
[0050]图2为本发明实施例的数字签名的方法的流程图;
[0051]图3为本发明实施例与签名方法对应的验签方法的流程图;
[0052]图4为本发明实施例区分交易签名和普通签名的方法的流程图。
【具体实施方式】
[0053]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0054]如图2所示,本发明实施例的一种数字签名的方法,包括:
[0055]S01、利用用户身份标识ID进行SM3计算,获得第一杂凑值Z ;
[0056]S02、将所述第一杂凑值Z和签名消息M连接后,进行SM3计算,获得第二杂凑值e ;
[0057]S03、使用用户私钥d对所述第二杂凑值K进行签名运算,生成签名值(r,s);
[0058]S04、输出签名值(r,s)。
[0059]其中,所述用户身份标识ID包括交易标识和普通标识,所述交易标识为进行交易签名时使用的用户身份标识ID,所述普通标识为进行普通签名时使用的用户身份标识ID。
[0060]普通签名的过程和交易签名的过程一样,区别在于使用的用户身份标识ID不同。
[0061]用户身份标识ID,是指用户的可辨别标识,是一串Ascii字符,例如:zhangsanil63.COM, aaabbb 等。
[0062]步骤SOl是利用用户身份标识ID、部分椭圆曲线系统参数和用户公钥P进行SM3计算,获得第一杂凑值Z。
[0063]具体为:
[0064]Z=SM3 (ENTL | | ID | a b | | xG | | yG | | xa | | ya)
[0065]其中:[0066]ENTL为由2个字节表示的用户身份标识ID的比特长度;
[0067]ID为用户身份标识;
[0068]a, b为系统曲线参数;
[0069]XG, yG为椭圆曲线的基点G的坐标;
[0070]Xa,Ya为用户公钥P的坐标;
[0071]I I表示将数值连接。
[0072]步骤S03包括:
[0073]Al.按GM/T0003.1-20124.2.4和4.2.3给出的方法将e的数据类型转换为整数;
[0074]A2.产生随机数k e [I, η-1];所述η为素数;
[0075]A3.计算椭圆曲线点(xl,yl) = [k]G,按GM/T0003.1-2012的4.2.8给出的方法将xl的数据类型转换为整数;其中,[k]G表示椭圆曲线的基点G的k倍点;
[0076]A4.计算 r=(e+xl)mod η,若 r=0 或 r+k=n 则返回 A2 ;
[0077]A5.计算 S= ((1+d)(k-r*d))mod η,若 s=0 则返回 A2 ;其中,d 为用户私钥;
[0078]A6.按GM/T0003.1-20124.2.2给出的方法将r,s的数据类型转换为字节串,获得消息M的签名值(r,s)。
[0079]国密取 n=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 3333DF6B21C6052B 53BBF40939D54123。
[0080]如图3所示,本发明实施例的一种验签的方法,与上述数字签名的方法对应,包括:
[0081]S05、使用用户公钥P对签名值(r,s)进行解签名运算,生成解密值;
[0082]S06、判断所述解密值与第二杂凑值e是否相等,若相等,则验签成功,若不相等,则验签失败。
[0083]步骤S05包括:
[0084]B1.检验r e [l,n-l]是否成立,若不成立则验证通不过;所述η为素数;
[0085]Β2.检验s e [l,n-l]是否成立,若不成立则验证通不过;
[0086]B3.令 M,=Z||M;
[0087]B4.计算 e,=SM3 (Μ,),按 GM/T0003.1-2012 4.2.4 和 4.2.3 给出的方法将 e,的
数据类型转换为整数;
[0088]B5.按GM/T0003.1-2012 4.2.3给出的方法将r,s的数据类型转换为整数,计算t=(r+s)mod η,若t=0,则验证通不过;
[0089]B6.计算椭圆曲线点(xl’,yl’)= [s]G+[t]P ;其中,[s]G表示椭圆曲线的基点G的s倍点,[t] P表示用户公钥P的t倍点;
[0090]B7.按GM/T0003.1-2012 4.2.8给出的方法将xl’的数据类型转换为整数,计算R=(e’ +χ )mod η,检验R=r是否成立,若成立验证通过,否则验证不通过。
[0091]国密取 n=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 3333DF6B21C6052B 53BBF40939D54123。
[0092]如图4所示,本发明实施例的一种区分交易签名和普通签名的方法,包括:
[0093]利用交易标识和普通标识分别进行SM3计算,获得第一交易杂凑值Zl和第一普通杂凑值Z2 ;[0094]将所述第一交易杂凑值Zl和第一普通杂凑值Z2分别与签名消息M连接后,进行SM3计算,获得第二交易杂凑值el和第二普通杂凑值e2 ;
[0095]使用用户私钥d对所述第二交易杂凑值el和第二普通杂凑值e2分别进行签名运算,分别生成交易签名值(r,s)和普通签名值(r,s)。
[0096]其中,交易信息需要得到客户的确认才能继续,如图1所示,过程为:
[0097]A、利用用户身份标识ID进行SM3计算,获得第一杂凑值Z ;
[0098]B、判断参与数字签名运算的用户身份标识ID是否为交易标识;如果是则执行步骤C,如果否,则执行步骤D ;
[0099]C、输出交易信息并等待用户确认;客户确认交易则执行步骤D、客户取消交易则退出签名过程;
[0100]D、将所述第一杂凑值Z和签名消息连接后,进行SM3计算,获得第二杂凑值e ;
[0101]E、使用用户私钥d对所述第二杂凑值e进行签名运算,生成签名值;
[0102]F、输出签名值。
[0103]通过区分SM2交易签名和普通签名的方式,在交易签名时可以在Usbkey屏幕显示交易信息,待用户核对交易信息并确认以后,才完成本次的交易签名过程,防止他人的骗签攻击。
[0104]实施例:
[0105]如图1所示,交易签名和普通签名过程中用户使用不同的用户身份标识ID,即交易标识和普通标识,两种签名验签过程是一样的,区别在于用户身份标识ID不一样:
[0106]利用交易标识和普通标识分别进行SM3计算,获得第一交易杂凑值Zl和第一普通杂凑值Z2 ;
[0107]将所述第一交易杂凑值Zl和第一普通杂凑值Z2分别与签名消息M连接后,进行SM3计算,获得第二交易杂凑值el和第二普通杂凑值e2 ;
[0108]使用用户私钥d对所述第二交易杂凑值el和第二普通杂凑值e2分别进行签名运算,分别生成交易签名值(r,s)和普通签名值(r,s)。
[0109]本实施例中交易签名时用的ID固定为AAAA,普通签名用的ID固定为BBBB,那么在签名的时候,若判断用户ID为AAAA,则认为是交易签名,验签的时候,若是交易签名的验签,用户ID则是AAAA,否则是BBBB。通过事先约定好用户身份标识ID的值来区分交易签名和普通签名。
[0110]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
【权利要求】
1.一种数字签名的方法,其特征在于,包括: 利用用户身份标识ID进行SM3计算,获得第一杂凑值Z ; 将所述第一杂凑值Z和签名消息M连接后,进行SM3计算,获得第二杂凑值e ; 使用用户私钥d对所述第二杂凑值e进行签名运算,生成签名值(r,s)。
2.根据权利要求1所述的方法,其特征在于,所述用户身份标识ID为交易标识或普通标识,所述交易标识为进行交易签名时使用的用户身份标识ID,所述普通标识为进行普通签名时使用的用户身份标识ID。
3.根据权利要求1所述的方法,其特征在于,所述利用用户身份标识ID进行SM3计算,获得第一杂凑值Z的步骤包括: 利用用户身份标识ID、部分椭圆曲线系统参数和用户公钥P进行SM3计算,获得第一杂凑值Z。
4.根据权利要求3所述的方法,其特征在于,所述利用用户身份标识ID、部分椭圆曲线系统参数和用户公钥P进行SM3计算,获得第一杂凑值Z的步骤包括:
Z=SM3 (ENTL I I ID | a b | | xG | | yG | | xa | | ya) 其中: ENTL表示的用户身份标识ID的比特长度; ID为用户身份标识; a,b为曲线系统参数; XG? Yg为捕圆曲线的基点G的坐标; xa,Ya为用户公钥P的坐标; I表示将数值连接。
5.根据权利要求1所述的方法,其特征在于,使用用户私钥d对所述第二杂凑值e进行签名运算,生成签名值(r,s)的步骤包括: Al.将e的数据类型转换为整数; A2.产生随机数ke [I, η-1];所述η为素数; A3.计算椭圆曲线点(xl,yl) = [k]G,将Xl的数据类型转换为整数;其中,[k]G表示椭圆曲线的基点G的k倍点; A4.计算 r=(e+xl)mod η,若 r=0 或 r+k=n 则返回 A2 ; A5.计算s=((l+d)、(k-r*d))mod η,若s=0则返回A2 ;其中,d为用户私钥; A6.将r,s的数据类型转换为字节串,获得消息M的签名值(r,s)。
6.一种验签的方法,其特征在于:包括: 使用用户公钥P对签名值(r,s)进行解签名运算,生成解密值; 判断所述解密值与第二杂凑值e是否相等,若相等,则验签成功,若不相等,则验签失败。
7.根据权利要求6所述的方法,其特征在于, 使用用户公钥P对签名值(r,s)进行解签名运算,生成解密值的步骤包括: B1.检验re [l,n-l]是否成立,若不成立则验证通不过;所述η为素数; Β2.检验s e [l,n-l]是否成立,若不成立则验证通不过; B3.令 M’ =Z Μ;B4.计算e’ =SM3(M’),将e’的数据类型转换为整数; B5.将r, s的数据类型转换为整数,计算t=(r+s)mod n,若t=0,则验证通不过; B6.计算椭圆曲线点(χ1`,y1’)= [s]G+[t]P;其中,[s]G表示椭圆曲线的基点G的s倍点,[t] P表示用户公钥P的t倍点; B7.将χ1`的数据类型转换为整数,计算R=(e’ +χ1` )mod n,检验R=r是否成立,若成立验证通过,否则验证不通过。
8.—种区分交易签名和普通签名的方法,其特征在于:包括: 利用交易标识和普通标识分别进行SM3计算,获得第一交易杂凑值Zl和第一普通杂凑值Z2 ; 将所述第一交易杂凑值Zl和第一普通杂凑值Z2分别与签名消息M连接后,进行SM3计算,获得第二交易杂凑值el和第二普通杂凑值e2 ; 使用用户私钥d对所述第二交易杂凑值el和第二普通杂凑值e2分别进行签名运算,分别生成交易签名值(r,s)和普通签名值(r,s)。
【文档编号】H04L9/32GK103532721SQ201310505452
【公开日】2014年1月22日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】黄海波, 石明浩, 靳松 申请人:北京旋极信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1