[发明专利]一种基于加法密钥分割的SM2签名方法有效
申请号: | 201711068252.8 | 申请日: | 2017-11-03 |
公开(公告)号: | CN107623570B | 公开(公告)日: | 2020-12-04 |
发明(设计)人: | 袁峰;张立圆;封维端;张样攀 | 申请(专利权)人: | 北京无字天书科技有限公司 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/32;H04L9/30 |
代理公司: | 北京世誉鑫诚专利代理有限公司 11368 | 代理人: | 孙国栋 |
地址: | 100000 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于加法密钥分割的SM2签名方法。本方法提出将私钥拆分成两个私钥分量,一个在服务端,一个在客户端,通信双方均无法得到完整私钥,确保私钥的存储安全。进行签名运算时,需服务端和客户端共同参与,任何一方无法独立完成签名,从而确保私钥使用的安全性。 | ||
搜索关键词: | 一种 基于 加法 密钥 分割 sm2 签名 方法 | ||
【主权项】:
一种签名密钥生成方法,其特征在于,包括: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];dB=Σi=1myimodn;]]>v∈[1,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∈[1,n‑1];其中表示长度相等的两个比特串按比特的异或运算;S602服务端B计算(h0+yi)v‑1mod n,将计算结果记为f0,计算(h1+yi)v‑1mod n,将计算结果记为f1;即有:f0=(h0+yi)v‑1mod n;f1=(h1+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,计算将计算结果记为C1,并将C0和C1发送给客户端A;即有:k0=H([x]Y);k1=H([x](Y‑X));C0=f0⊕k0;]]>C1=f1⊕k1;]]>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。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京无字天书科技有限公司,未经北京无字天书科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711068252.8/,转载请声明来源钻瓜专利网。