[发明专利]无可信中心的分布式数字签名方法有效
申请号: | 201910271277.0 | 申请日: | 2019-04-04 |
公开(公告)号: | CN110061828B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 庞辽军;叩曼;魏萌萌;李慧贤 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | H04L9/00 | 分类号: | H04L9/00;H04L9/08;H04L9/30;H04L9/32 |
代理公司: | 西北工业大学专利中心 61204 | 代理人: | 王鲜凯 |
地址: | 710073 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 可信 中心 分布式 数字签名 方法 | ||
1.一种无可信中心的分布式数字签名方法,其特征在于包括以下步骤:
步骤一、第一个签名参与者ID1选取自己的子私钥d1∈{1,2,…,n-1}并秘密保存,然后按照下式,计算第一个公钥生成参数Q1,并将第一个公钥生成参数Q1发送给第二个签名参与者ID2:
Q1=d1G
其中,ID1表示第一个签名参与者,ID2表示第二个签名参与者,d1表示第一个签名参与者ID1的子私钥,Q1表示第一个公钥生成参数,G表示椭圆曲线上一个阶为n的基点,n为正整数,表示基点G的阶;
步骤二、第i个签名参与者IDi接收到第i-1个公钥生成参数Qi-1后,选取自己的子私钥di∈{1,2,…,n-1}并秘密保存,然后按照下式,计算第i个公钥生成参数Qi,并将第i个公钥生成参数Qi发送给第i+1个签名参与者IDi+1,i∈{2,3,…,t-1}:
Qi=diQi-1
其中,IDi表示第i个签名参与者,IDi+1表示第i+1个签名参与者,di表示第i个签名参与者IDi的子私钥,Qi-1表示第i-1个公钥生成参数,Qi表示第i个公钥生成参数,t是一个正整数,表示签名参与者的个数;
步骤三、第t个签名参与者IDt接收到第t-1个公钥生成参数Qt-1后,选取自己的子私钥dt∈{1,2,…,n-1}并秘密保存,然后按照下式,计算公钥Q,并将公钥Q广播给所有签名参与者:
Q=dtQt-1
其中,IDt表示第t个签名参与者,Qt-1表示第t-1个公钥生成参数,dt表示第t个签名参与者IDt的子私钥,Q表示公钥;
步骤四、第一个签名参与者ID1选取自己的秘密值k1∈{1,2,…,n-1},然后计算自己的秘密值k1在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值k1并重新计算自己的秘密值k1在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值k1,然后执行下一步骤;
其中,k1表示第一个签名参与者ID1的秘密值,表示第一个签名参与者ID1的秘密值k1在模n下的乘法逆元;
步骤五、按照下式,第一个签名参与者ID1计算第一个签名参数中间值R1,并将第一个签名参数中间值R1发送给第二个签名参与者ID2:
R1=k1G
其中,R1表示第一个签名参数中间值;
步骤六、第i个签名参与者IDi接收到第i-1个签名参数中间值Ri-1后,选取自己的秘密值ki∈{1,2,…,n-1},然后计算自己的秘密值ki在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值ki并重新计算自己的秘密值ki在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值ki,然后执行下一步骤;
其中,ki表示第i个签名参与者IDi的秘密值,表示第i个签名参与者IDi的秘密值ki在模n下的乘法逆元;
步骤七、按照下式,第i个签名参与者IDi计算第i个签名参数中间值Ri,并将第i个签名参数中间值Ri发送给第i+1个签名参与者IDi+1:
Ri=kiRi-1
其中,Ri表示第i个签名参数中间值,Ri-1表示第i-1个签名参数中间值;
步骤八、第t个签名参与者IDt接收到第t-1个签名参数中间值Rt-1后,选取自己的秘密值kt∈{1,2,…,n-1},然后计算自己的秘密值kt在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值kt并重新计算自己的秘密值kt在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值kt,然后执行下一步骤;
其中,kt表示第t个签名参与者IDt的秘密值,表示第t个签名参与者IDt的秘密值kt在模n下的乘法逆元;
步骤九、按照下式,第t个签名参与者IDt计算签名参数R:
R=ktRt-1=(xR,yR)
然后判断签名参数R是否为椭圆曲线上的零点,如果是,则返回步骤六,如果不是,则将签名参数R广播给所有的签名参与者;
其中,Rt-1表示第t-1个签名参数中间值,R表示签名参数,xR表示签名参数R的横坐标,yR表示签名参数R的纵坐标;
步骤十、第一个签名参与者ID1接收到签名参数R后,按照下式,计算第一部分签名r:
r=xRmod n
然后判断r=0是否成立,如果成立,则返回步骤三,如果不成立,则继续执行下一步骤;
其中,r表示第一部分签名,mod表示求模运算;
步骤十一、按照下式,第一个签名参与者ID1计算消息M的哈希值H,然后按照数据类型转换规则,将H转换成一个整数e;
H=hash(M)
其中,M表示消息,H表示消息M的哈希值,hash表示一个密码哈希算法,e表示哈希值H转换后的整数值;
步骤十二、第一个签名参与者ID1选择paillier同态加密算法的私钥sk和公钥pk,将私钥sk秘密保存,并将公钥pk公开;
其中,paillier表示同态加密算法,sk表示paillier同态加密算法的私钥,用来做解密运算,pk表示paillier同态加密算法的公钥,用来做加密运算;
步骤十三、按照下式,第一个签名参与者ID1计算第一个签名生成参数第一部分α1和第一个签名生成参数第二部分β1,然后将第一个签名生成参数第一部分α1和第一个签名生成参数第二部分β1发送给第二个签名参与者ID2:
其中,α1表示第一个签名生成参数第一部分,β1表示第一个签名生成参数第二部分,Epk(.)表示paillier同态加密算法的加密运算;
步骤十四、第i个签名参与者IDi接收到第i-1个签名生成参数第一部分αi-1和第i-1个签名生成参数第二部分βi-1后,按照下式,计算第i个签名生成参数第一部分αi和第i个签名生成参数第二部分βi,然后将第i个签名生成参数第一部分αi和第i个签名生成参数第二部分βi发送给第i+1个签名参与者IDi+1:
其中,αi表示第i个签名生成参数第一部分,βi表示第i个签名生成参数第二部分,αi-1表示第i-1个签名生成参数第一部分,βi-1表示第i-1个签名生成参数第二部分,×E表示paillier同态加密算法下的乘法同态运算;
步骤十五、第t个签名参与者IDt接收到第t-1个签名生成参数第一部分αt-1和第t-1个签名生成参数第二部分βt-1后,按照下式,计算第t个签名生成参数第一部分αt和第t个签名生成参数第二部分βt:
其中,αt表示第t个签名生成参数第一部分,βt表示第t个签名生成参数第二部分,αt-1表示第t-1个签名生成参数第一部分,βt-1表示第t-1个签名生成参数第二部分;
步骤十六、按照下式,第t个签名参与者IDt计算第二部分签名s在paillier同态加密下的密文C,然后将第二部分签名s在paillier同态加密下的密文C发送给第一个签名参与者ID1:
C=αt+Eβ2t+1
其中,s表示第二部分签名,C表示第二部分签名s在paillier同态加密下的密文,+E表示paillier同态加密算法下的加法同态运算;
步骤十七、按照下式,第一个签名参与者ID1计算第二部分签名s:
s=Dsk(C)mod n
其中,Dsk(.)表示paillier同态加密算法的解密运算;
步骤十八、按照下式,第一个签名参与者ID1计算签名验证参数R′,R′=(xR′,yR′):
R′=s-1(eG+rQ)
其中,R′表示签名验证参数,xR′表示签名验证参数R′的横坐标,yR′表示签名验证参数R′的纵坐标,s-1表示第二部分签名s在模n下的乘法逆元;
步骤十九、按照下式,第一个签名参与者ID1计算第一部分签名的验证参数r′:
r′≡xR′mod n
然后判断等式r′=r是否成立,如果成立,则执行下一步骤,如果不成立,则签名失败,返回步骤六;
其中,r′表示第一部分签名的验证参数,≡表示同余符号;
步骤二十、第一个签名参与者ID1提取签名(r,s),然后将签名(r,s)广播给所有签名参与者;
其中,(r,s)表示最终生成的签名。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910271277.0/1.html,转载请声明来源钻瓜专利网。