[发明专利]一种多方联合生成SM2数字签名的方法有效
申请号: | 201811379398.9 | 申请日: | 2018-11-19 |
公开(公告)号: | CN109547199B | 公开(公告)日: | 2021-07-02 |
发明(设计)人: | 何德彪;冯琦;王婧;林超;张语荻;张佳妮 | 申请(专利权)人: | 武汉大学 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/30;H04L9/32 |
代理公司: | 湖北武汉永嘉专利代理有限公司 42102 | 代理人: | 唐万荣;李丹 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多方 联合 生成 sm2 数字签名 方法 | ||
1.一种多方联合生成SM2数字签名的方法,其特征在于,参与数字签名的所有参与方为P1,P2,…,Pτ,该方法包括以下步骤:
1)每个参与方分别产生自己的部分私钥,并借助理想函数得到共同的公钥;
其中,使用理想函数实现基本的运算操作,具体包括以下几个运算操作,其中,sid为特定标识符,用来标识变量或会话:
当收到某参与方Pi,i∈{1,…,τ}发来的(input,sid,ai),如果本地没有(sid,i,·),则保存(sid,i,ai);否则忽略此条消息;
当收到所有参与方发来的(input,sid,ai),i∈{1,…,τ},计算保存(sid,a),并把(input,sid)发送给所有参与方;
当收到所有参与方发来的(mult,sid1,sid2),i∈{1,…,τ},找出(sid1,a)和(sid1,b),计算并以(mult-out,sid1,sid2,c)的形式把结果发给所有参与方;如果没有保存的(sid1,a)或(sid1,b),则忽略此条消息;
当收到某参与方Pi,i∈{1,…,τ}发来的(affine,sid1,sid2,x,y)时,其中x,y是域内的常数,如果本地没有(sid1,a),则忽略此条消息;否则计算b=ax+y mod n,保存(sid2,b);
当收到所有参与方发来的(element-out,sid),i∈{1,…,τ},如果本地没有(sid,a),则忽略此条消息;否则计算A=aG,即,并以(element-out,sid,A)的形式把结果发给所有参与方;
步骤1)具体如下:
1.1)参与方Pi,i∈{1,…,τ},在中随机选择一个整数xi作为自己的部分私钥,发送(input,sidsk,xi)给理想函数其中,sidsk为唯一私钥标识符;
其中,为以整数n为阶的整数域;
1.2)若没有(sidsk,i,·),则保存(sidsk,i,xi);否则忽略此条消息;
1.3)若收到所有参与方发来的(input,sidsk,xi),
计算保存(sidsk,x),并把(input,sidsk)发送给所有参与方;
1.4)当所有参与方接收到返回的(input,sidsk)后,发送(element-out,sidsk)给
1.5)当收到所有参与方发来的(element-out,sidsk),如果没有(sidsk,x),则忽略此条消息;否则计算Q=xG,并以(element-out,sidsk,Q)的形式把结果发给所有参与方;其中,G为椭圆曲线点群的基点;
1.6)所有参与方从的返回中获得中间变量Q,计算Ppub=(Q-G)作为SM2的公钥,连同部分私钥xi一起安全保存;
2)由P1,P2,…,Pτ共同完成SM2数字签名;
2.1)Pi在中随机选择两个整数ki、ρi,发送(input,sidsig||1,ki)和(input,sidsig||2,ρi)给其中,整数整数并且分别由sidsig||1和sidsig||2唯一标识;sidsig为签名会话的标识符;
2.2)当收到某参与方Pi,i∈{1,…,τ}发来的(input,sidsig||1,ki)和(input,sidsig||2,ρi),如果没有(sidsig||1,i,·)和(sidsig||2,i,·),则保存(sidsig||1,i,ki)和(sidsig||2,i,ρi);否则忽略此条消息;
当收到所有参与方发来的(input,sidsig||1,ki)和(input,sidsig||2,ρi),i∈{1,…,τ},计算保存(sidsig||1,k)和(sidsig||2,ρ),并把(input,sidsig||1)和(input,sidsig||2)发送给所有参与方;
2.3)当参与方接收到(input,sidsig||1),(input,sidsig||2)后,Pi发送(mult,sidsk,sidsig||2)和(element-out,sidsig||1)给
2.4)当收到所有参与方发来的(mult,sidsk,sidsig||2),i∈{1,…,τ},找出(sidsk,x)和(sidsig||2,ρ),计算并以(mult-out,sidsk,sidsig||2,α)的形式把结果发给所有参与方;如果没有(sidsk,x)或(sidsig||2,ρ),则忽略此条消息;
当收到所有参与方发来的(element-out,sidsig||1),i∈{1,…,τ},如果没有(sidsig||1,k),则忽略此条消息;否则计算R=kG,并以(element-out,sidsig||1,R)的形式把结果发给所有参与方;
2.5)Pi从返回的(element-out,sidsig||1,R)和(mult-out,sidsk,sidsig||2,α)中获得第一个中间变量R,和第二个中间变量α,α=xρmod n;
2.6)令R=(rx,ry),Pi计算第一部分签名r=e+rx mod n,其中e是消息m的杂凑值,e=h(m);
2.7)Pi发送(affine,sidsig||1,sidsig||3,1,r)给标识符sidsig||3代表了第三个中间变量,等于k+r mod n;
2.8)当收到某参与方Pi,i∈{1,…,τ}发来的(affine,sidsig||1,sidsig||3,1,r)时,其中x,y是域内的常数,如果没有(sidsig||1,k),则忽略此条消息,否则计算b=k+rmod n,保存(sidsig||3,b);
2.9)Pi发送(mult,sidsig||2,sidsig||3)给
2.10)当收到所有参与方发来的(mult,sidsig||2,sidsig||3),i∈{1,…,τ},找出(sidsig||2,ρ)和(sidsig||3,b),计算β=ρb mod n=ρ(k+r)mod n并以(mult-out,sidsig||2,sidsig||3,β)的形式把结果发给所有参与方;如果没有(sidsig||2,ρ)或(sidsig||3,b),则忽略此条消息;
2.11)当返回(mult-out,sidsig||2,sidsig||3,β)时,Pi获得第四个中间变量β,β=ρ(k+r)mod n;
2.12)Pi计算第五个中间变量s′=α-1β-r mod n,为了保持签名一致,选取s=min{s′,n-s′}作为第二部分签名;
2.13)Pi利用SM2的数字签名验证算法验证产生的签名,若通过则公布关于消息m的SM2签名Sig=(r,s);
2.14)根据所有参与方Pi密钥对,联合生成SM2数字签名。
2.根据权利要求1所述的多方联合生成SM2数字签名的方法,其特征在于,所述步骤1)中,在P1,P2,…,Pτ之间的通信中,各参与方使用零知识证明和同态加密保证发送数据的隐私性并且证明发送的数据是来自发送方。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811379398.9/1.html,转载请声明来源钻瓜专利网。