[发明专利]基于SM2算法的签名方法有效
申请号: | 201710447438.8 | 申请日: | 2017-06-14 |
公开(公告)号: | CN107342855B | 公开(公告)日: | 2021-02-09 |
发明(设计)人: | 王永起;王珂 | 申请(专利权)人: | 山东同智伟业软件股份有限公司 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/30 |
代理公司: | 北京中济纬天专利代理有限公司 11429 | 代理人: | 刘杨 |
地址: | 250101 山东省济南市高新*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 sm2 算法 签名 方法 | ||
1.一种基于SM2算法的签名方法,它包括如下步骤:
步骤a:密钥生成,
客户端与服务端共享SM2椭圆曲线算法参数E(Fq)、G、n、Z,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上n阶的基点,Z为双方的共有身份标识;
客户端生成自身的子密钥a,服务端生成自身的子密钥b,客户端和服务端交互生成公钥P;
步骤b:签名运算;
其特征在于,
所述步骤a中,客户端与服务端均采用限制次幂方式生成随机子密钥a和b,使子密钥a和b的乘积小于n-2;计算a、b逆元交互处理,形成常量v,计算输出公钥P;
所述步骤b的签名运算包括以下步骤:
步骤b1:客户端根据待签原文M生成e,同时随机生成DH交互k11,将e和k11传输至服务端;
步骤b2:服务端随机生成DH交互k22发送至客户端,客户端和服务端协商临时密钥k,进而由客户端生成部分签名Q2;
步骤b3:客户端将Q2传输至服务端,服务端同步计算r和s,最终输出签名值[r,s];
DH,即Diffie-Hellman的首字母缩写,为密钥交换协议。
2.如权利要求1所述的基于SM2算法的签名方法,其特征在于,
所述步骤a中,采用限制次幂方式生成随机子密钥a和b的方法为:客户端与服务端共享的SM2椭圆曲线算法参数还包括c和T,c=log2n,且c取整数;T=2q(c/2),其中q函数为取整数函数;
使随机生成的子密钥a介于[1,T]之间,子密钥b介于[1,T]之间;
计算a、b逆元交互处理,形成常量v,计算输出公钥P的方法为:客户端计算a的逆元a-1mod n得到其值为V1;计算a[*]G得到其值为P1;将V1和P1发送至服务端;服务端计算b的逆元b-1 mod n得到其值为V2,计算(V1*V2)mod n的结果记为v;计算公钥信息P=P1[*]b[-]G;
其中,[*]为椭圆曲线点乘计算,[-]为椭圆曲线点减计算。
3.如权利要求1所述的基于SM2算法的签名方法,其特征在于,所述步骤b1包括:客户端将Z和M拼装成M’,计算HASH(M’),获取其结果为e;
客户端随机生成随机数k1,使得k1介于[1,n]之间,计算2k1 mod n作为k11。
4.如权利要求1所述的基于SM2算法的签名方法,其特征在于,所述步骤b2包括:
服务端随机生成随机数k2,使得k2介于[1,n]之间,计算2k2 mod n作为k22,服务端将k22发送至客户端;
此时客户端利用k22k1 mod n和服务端利用k11k2 mod n进行计算,均可得到相同的值为k;
在客户端,计算椭圆曲线上的点D(x,y)=k[*]G、计算(e+x)mod n得到r,若r是为0或r+k等于n则需要重新协商生成k,计算Q2=a*r,并将Q2发送至服务端;
其中,[*]为椭圆曲线点乘计算,[-]为椭圆曲线点减计算。
5.如权利要求1所述的基于SM2算法的签名方法,其特征在于,所述步骤b3包括:
服务端接收到Q2后,通过同样的计算公式,D(x,y)=k[*]G、计算(e+x)mod n得到r,[v*(k-Q2*b+r)]mod n,即可得到签名值s;若s等于0则需要重新生成k进行签名运算;运算后将[r,s]作为最终签名值输出;
其中,[*]为椭圆曲线点乘计算,[-]为椭圆曲线点减计算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东同智伟业软件股份有限公司,未经山东同智伟业软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710447438.8/1.html,转载请声明来源钻瓜专利网。