[发明专利]一种轻量级SM2两方协同生成数字签名的方法有效
申请号: | 201910147366.4 | 申请日: | 2019-02-27 |
公开(公告)号: | CN110011803B | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 何德彪;张佳妮;冯琦;王婧;陈泌文 | 申请(专利权)人: | 武汉大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/08 |
代理公司: | 湖北武汉永嘉专利代理有限公司 42102 | 代理人: | 唐万荣;李丹 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 轻量级 sm2 协同 生成 数字签名 方法 | ||
1.一种轻量级SM2两方协同生成数字签名的方法,参与两方为P1、P2,其特征在于,包括以下步骤:
步骤1)签名参数初始化:产生整个签名过程所需的公开参数;所述参数包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、密码杂凑函数h(·);
其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,用于定义Fq上的一条椭圆曲线,n为素数,G为椭圆曲线的一个基点,其阶为n;
步骤2)生成分布式密钥:生成参与方P1,P2的签名私钥,签名验证公钥;具体如下:
2.1)参与方P1在Zn中随机选取一个整数x1作为自己的签名私钥,并分别通过公式(1),(2)计算中间变量X1,零知识证明参与方P1将发送给参与方P2;
X1=[x1]G (1),
其中,G为椭圆曲线的一个基点,用于生成关于x1是X1的一个椭圆曲线离散对数这个称述的零知识证明
2.2)参与方P2在Zn中随机选取一个整数x2作为自己的签名私钥,并分别通过公式(3),(4)计算中间变量X2,零知识证明参与方P2将发送给参与方P1;
X2=[x2]G (3),
其中,用于证明x2是关于X2的一个椭圆曲线离散对数;
2.3)参与方P1验证零知识证明是否合法,验证通过则通过公式(5)计算签名验证公钥Ppub;参与方P2验证零知识证明是否合法,若验证通过则通过公式(5)计算签名验证公钥Ppub;
2.4)参与方P1在Zn中随机选取两个整数a1,b1;参与方P2在Zn中随机选取两个整数a2,b2;Zn为整数0,1,...,n-1组成的集合;
2.5)参与方P1,P2通过同态操作或不经意传输运算分别获得加法分量z1,z2,使其满足z1+z2=(a1+a2)·(b1+b2)mod n;
步骤3)生成分布式签名:该步骤用于参与方P1,P2联合生成消息m的数字签名(r,s);具体过程如下:
3.1)参与方P1在Zn中随机选取两个整数k1,ρ1,并分别通过公式(6),(7)计算中间变量R1,零知识证明参与方P1将发送给参与方P2;
R1=[k1]G (6),
其中,用于证明k1是关于R1的一个椭圆曲线离散对数;
3.2)参与方P2在Zn中随机选取两个整数k2,ρ2,并分别通过公式(8),(9)计算中间变量R2,零知识证明参与方P2将发送给参与方P1;
R2=[k2]G (8),
其中,用于证明k2是关于R2的一个椭圆曲线离散对数;
3.3)参与方P1验证零知识证明是否合法,验证通过则使用公式(10)~(15)分别计算中间变量R,r,δ1,u1,v1,w1;参与方P1将(u1,v1,w1)发送给参与方P2;
计算公式如下:
r=e+rx mod n (11)
u1=x1-a1 mod n (13)
v1=δ1-a1 mod n (14),w1=ρ1-b1 mod n (15)
其中,e为密码杂凑函数h(·)作用于消息m的输出,即e=h(m);rx为R的横坐标,r为SM2签名的第一部分;
3.4)参与方P2验证零知识证明是否合法,验证通过则使用公式(10)~(11),(16)~(19)分别计算中间变量R,r,δ2,u2,v2,w2;参与方P2将(u2,v2,w2)发送给参与方P1;
计算公式如下:
u2=x2-a2 mod n (17)
v2=δ2-a2 mod n (18),w2=ρ2-b2 mod n (19)
3.5)参与方P1使用公式(20)~(24)分别计算中间变量u,v,w,α1,β1;参与方P1将(α1,β1)发送给参与方P2;
计算公式如下:
u=u1+u2 mod n (20),v=v1+v2 mod n (21)
w=w1+w2 mod n (22),
α1=x1w+ρ1u+z1-uw mod n (23)
β1=δ1w+ρ1v+z1-vw mod n (24)
3.6)参与方P2使用公式(20)~(22),(25)~(26)分别计算中间变量u,v,w,α2,β2;参与方P2将(α2,β2)发送给参与方P1;
计算公式如下:
α2=x2w+ρ2u+z2 mod n (25)
β2=δ2w+ρ2v+z2 mod n (26)
3.7)参与方P1通过公式(27)计算s′,为了保证最终结果的一致性,参与方P1选择s′和n-s′中的较小值作为SM2签名的第二部分,即s=min{s′,n-s′};
s′=(α1+α2)-1(β1+β2)-r mod n (27)
3.8)参与方P2通过公式(27)计算s′;为了保证最终结果的一致性,参与方P2选择s′和n-s′中的较小值作为SM2签名的第二部分,即s=min{s′,n-s′};
3.9)参与方P1更新a1,b1,z1,即分别令a1=k1,b1=ρ1,z1=α1,更新后的a1,b1,z1参与下一次的签名过程;
3.10)参与方P2更新a2,b2,z2,即分别令a2=k2,b2=ρ2,z2=α2,更新后的a2,b2,z2参与下一次的签名过程。
2.根据权利要求1所述的轻量级SM2两方协同生成数字签名的方法,其特征在于,所述步骤2)和步骤3)中,在参与方P1,P2的通信过程中,各参与方使用零知识证明来证明发送的数据是来自发送方。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910147366.4/1.html,转载请声明来源钻瓜专利网。