[发明专利]一种基于加法密钥分割的SM2签名方法有效
申请号: | 201711068252.8 | 申请日: | 2017-11-03 |
公开(公告)号: | CN107623570B | 公开(公告)日: | 2020-12-04 |
发明(设计)人: | 袁峰;张立圆;封维端;张样攀 | 申请(专利权)人: | 北京无字天书科技有限公司 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/32;H04L9/30 |
代理公司: | 北京世誉鑫诚专利代理有限公司 11368 | 代理人: | 孙国栋 |
地址: | 100000 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 加法 密钥 分割 sm2 签名 方法 | ||
1.一种签名密钥生成方法,其特征在于,包括:
S1客户端A生成自身的子私钥dA:客户端A产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dA,即有:dA∈[1,n-1],其中n表示椭圆曲线的基点G的阶;
S2服务端B生成自身的子私钥dB:服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数作为dB;
S3客户端A和服务端B约定一个正整数m,其中m≥112;
S4客户端A产生m-1个位于[1,n-1]之间的随机数,将产生的随机数作为xi,并计算令且取符号u,并令u=0;即有:xi∈[0,n-1];其中mod n表示模n运算;
S5服务端B产生m-1个位于[1,n-1]之间的随机数,将产生的随机数作为yi,并计算并令且产生一个位于[1,n-1]之间的随机数,将产生的随机数作为v;
即有:yi∈[0,n-1];
v∈[l,n-1];
S6对i=1,2,......,m执行如下过程:
S601客户端A产生一个0或1的随机数,将产生的随机数记为k,并产生一个位于[1,n-1]之间的随机数,将产生的随机数记为r,且令hk=xi,将(h0,h1)发送给服务端B;
即有:k∈{0,1};
r∈[l,n-1];
其中表示长度相等的两个比特串按比特的异或运算;
S602服务端B计算(h0+yi)v-1mod n,将计算结果记为f0,计算(hl+yi)v-1mod n,将计算结果记为f1;
即有:f0=(h0+yi)v-1mod n;
f1=(hl+yi)v-1mod n;
其中,v-1mod n表示使得v·y≡1(mod n)成立的唯一整数y,1≤y≤n-1;
S603服务端B产生一个位于[1,n-1]之间的随机数,将产生的随机数记为x,并计算[x]G,将计算结果记为X,且将X发送给客户端A;
即有:x∈[1,n-1];
X=[x]G;
其中[x]G表示椭圆曲线上点G的x倍点,x是正整数;
S604客户端A生成一个位于[1,n-1]之间的随机数,将产生的随机数记为y,并计算[y]G,将计算结果记为F,计算H(F),将计算结果记为key;
即有:y∈[1,n-1];
F=[y]G;
key=H(F);
其中,H为密码杂凑函数;
若k=0,则Y=F,若k≠0,则Y=X+F,并将Y发送给服务端B;
S605服务端B计算H([x]Y),将计算结果记为k0,计算H([x](Y-X)),将计算结果记为k1,计算将计算结果记为C0,计算f1+k1},将计算结果记为C1,并将Co和C1发送给客户端A;
即有:k0=H([x]Y);
kl=H([x](Y-X));
S7客户端A计算将计算结果记为fk,计算u+fk mod n,将计算结果记为u;
即有:P=[v-1]([u-1]G)-G;
S8服务端B将[v-1]G发送给客户端A,客户端A计算签名公钥[u-1]([v-1]G)-G,记为P;
即有:P=[u-1]([v-1]G)-G。
2.一种基于加法密钥分割的SM2签名方法,其特征在于,包括:
客户端A生成待签名消息M的消息摘要e和第一部分签名Q1,并将e和第一部分签名发送给服务端B,包括:
客户端A计算H(Z||M),将计算结果记为e,且生成一个位于[1,n-1]之间的随机数,将计算结果记为k1,并计算[kl](P+G),将计算结果记为Q1,将e和Q1发送给服务端B,其中,M为待签名的消息,Z是按照SM2算法对用户标识、标识长度、椭圆曲线参数、用户签名公钥等信息使用密码杂凑函数H计算的杂凑值;
服务端B生成第二部分签名r和第三部分签名s1,将r和s1发送给第一部分客户端A,包括:
服务端B生成一个位于[1,n-1]之间的随机数,将计算结果记为k2,计算椭圆曲线点[k2](P+G)+[kl](P+G),将计算结果记为(x1,y1},计算(e+xl)mod n,将计算结果记为r,其中,若r=0则返回步骤9,否则计算k2+rdB mod n,将计算结果记为s1,并将r,s1发送给客户端A;
客户端A根据Ql、r和s1生成完整签名(r,s)并输出,包括:
客户端A计算k1+rdA+s1-r mod n,将计算结果记为s,其中,若s=0或r+s=0mod n,则返回至客户端A生成待签名消息M的消息摘要e和第一部分签名Q1步骤进行重新计算,否则,消息M的数字签名为(r,s)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京无字天书科技有限公司,未经北京无字天书科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711068252.8/1.html,转载请声明来源钻瓜专利网。