[发明专利]密钥分布式生成的数字签名方法有效

专利信息
申请号: 201910271243.1 申请日: 2019-04-04
公开(公告)号: CN110061847B 公开(公告)日: 2021-05-04
发明(设计)人: 庞辽军;叩曼;魏萌萌;李慧贤 申请(专利权)人: 西安电子科技大学
主分类号: H04L9/32 分类号: H04L9/32;H04L9/00
代理公司: 西北工业大学专利中心 61204 代理人: 王鲜凯
地址: 710073 陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种密钥分布式生成的数字签名方法,用于解决现有数字签名方法效率低的技术问题。技术方案是在密钥生成阶段,t个签名参与者选取自己的子私钥,通过与第一个签名参与者的交互完成私钥的生成。在签名阶段,t个签名参与者依次利用自己持有的子私钥进行分布式签名,然后由第t个签名参与者在同态加密条件下完成签名第二部分的合成,再由第一个签名参与者完成最终的签名合成与验证。本发明利用paillier同态加密算法,每个签名参与者不需要利用零知识证明来保证签名的正确性,最后的签名验证只需要一个椭圆曲线上的点加运算和两个椭圆曲线上的点乘运算,与背景技术t次零知识证明相比,提高了计算效率。
搜索关键词: 密钥 分布式 生成 数字签名 方法
【主权项】:
1.一种密钥分布式生成的数字签名方法,其特征在于包括以下步骤:步骤一、第一个签名参与者ID1选取自己的子私钥d1∈{1,2,…,n‑1},然后计算自己的子私钥d1在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的子私钥d1∈{1,2,…,n‑1}并重新计算自己的子私钥d1在模n下是否存在乘法逆元直到找到一个存在乘法逆元的子私钥d1,然后执行下一步骤;其中,ID1表示第一个签名参与者,d1表示第一个签名参与者ID1的子私钥,表示第一个签名参与者ID1的子私钥d1在模n下的乘法逆元,n为正整数,表示椭圆曲线基点的阶;步骤二、按照下式,第一个签名参与者ID1计算自己的子公钥Q1和伪子公钥Q1′,然后将子公钥Q1和伪子公钥Q1′都广播给所有签名参与者:Q1=d1G其中,Q1表示第一个签名参与者ID1的子公钥,Q1′表示第一个签名参与者ID1的伪子公钥,G表示椭圆曲线上一个阶为n的基点;步骤三、接收到第一个签名参与者ID1的子公钥Q1和伪子公钥Q1′后,第i个签名参与者IDi选取自己的子私钥di∈{1,2,…,n‑1},然后按照下式,计算自己的伪子公钥Qi′,并将伪子公钥Qi′发送给第一个签名参与者ID1,i=2,3,...,t:Qi′=diQ1′其中,IDi表示第i个签名参与者,di表示第i个签名参与者IDi的子私钥,Qi′表示第i个签名参与者IDi的伪子公钥,t为正整数,表示签名参与者IDi的数目;步骤四、第一个签名参与者ID1在接收到所有签名参与者的伪子公钥Qi′后,按照下式,依次计算每一个签名参与者IDi的子公钥Qi,然后将所有计算出的子公钥Qi公开:Qi=d1Qi′其中,Qi表示第i个签名参与者IDi的子公钥;步骤五、每一个签名参与者IDi接收到第一个签名参与者ID1公开的子公钥Qi后,验证等式Qi=diG是否成立,如果每一个签名参与者的验证结果都是成立,则执行下一步骤,如果有任何一个签名参与者的验证结果是不成立,则返回步骤一;步骤六、按照下式,每一个签名参与者IDi计算签名公钥Q并对签名公钥Q进行公开:其中,Q表示签名公钥,∑表示求和操作;步骤七、第一个签名参与者ID1选取自己的秘密值k1∈{1,2,…,n‑1},然后计算自己的秘密值k1在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值k1∈{1,2,…,n‑1}并重新计算自己的秘密值k1在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值k1,然后执行下一步骤;其中,k1表示第一个签名参与者ID1的秘密值,表示第一个签名参与者ID1的秘密值k1在模n下的乘法逆元;步骤八、按照下式,第一个签名参与者ID1计算第一个签名参数中间值R1,并将第一个签名参数中间值R1发送给第二个签名参与者ID2:R1=k1G其中,R1表示第一个签名参数中间值,ID2表示第二个签名参与者;步骤九、第i个签名参与者IDi接收到第i‑1个签名参数中间值Ri‑1后,选取自己的秘密值ki∈{1,2,…,n‑1},然后计算自己的秘密值ki在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值ki∈{1,2,…,n‑1}并重新计算自己的秘密值ki在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值ki,然后执行下一步骤,i=2,3,…,t‑1;其中,ki表示第i个签名参与者IDi的秘密值,表示第i个签名参与者IDi的秘密值ki在模n下的乘法逆元;步骤十、按照下式,第i个签名参与者IDi计算第i个签名参数中间值Ri,并将第i个签名参数中间值Ri发送给第i+1个签名参与者IDi+1,i=2,3,…,t‑1:Ri=kiRi‑1其中,Ri表示第i个签名参数中间值,Ri‑1表示第i‑1个签名参数中间值,IDi+1表示第i+1个签名参与者;步骤十一、第t个签名参与者IDt接收到第t‑1个签名参数中间值Rt‑1后,选取自己的秘密值kt∈{1,2,…,n‑1},然后计算自己的秘密值kt在模n下是否存在乘法逆元如果存在,则执行下一步骤,如果不存在,则重新选取自己的秘密值kt∈{1,2,…,n‑1}并重新计算自己的秘密值kt在模n下是否存在乘法逆元直到找到一个存在乘法逆元的秘密值kt,然后执行下一步骤;其中,IDt表示第t个签名参与者,kt表示第t个签名参与者IDt的秘密值,表示第t个签名参与者IDt的秘密值kt在模n下的乘法逆元;步骤十二、按照下式,第t个签名参与者IDt计算签名参数R,然后判断签名参数R是否为椭圆曲线上的零点,如果是,则返回步骤六,如果不是,则将签名参数R广播给所有的签名参与者:R=ktRt‑1=(xR,yR)其中,Rt‑1表示第t‑1个签名参数中间值,R表示签名参数,xR表示签名参数R的横坐标,yR表示签名参数R的纵坐标;步骤十三、第i个签名参与者IDi接收到签名参数R后,按照下式,计算第一部分签名r:r=xR modn然后判断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=Epk(rd1 modn)其中,α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=2,3,…,t‑1:βi=Epk(rdi mod n)+Eβi‑1其中,αi表示第i个签名生成参数第一部分,βi表示第i个签名生成参数第二部分,αi‑1表示第i‑1个签名生成参数第一部分,βi‑1表示第i‑1个签名生成参数第二部分,×E表示paillier同态加密算法下的乘法同态运算,+E表示paillier同态加密算法下的加法同态运算;步骤十八、第t个签名参与者IDt接收到第t‑1个签名生成参数第一部分αt‑1和第t‑1个签名生成参数第二部分βt‑1后,按照下式,计算第t个签名生成参数第一部分αt和第t个签名生成参数第二部分βtβt=Epk(rdt mod n)+Eβt‑1其中,αt表示第t个签名生成参数第一部分,βt表示第t个签名生成参数第二部分,αt‑1表示第t‑1个签名生成参数第一部分,βt‑1表示第t‑1个签名生成参数第二部分,dt表示第t个签名参与者IDt的子私钥;步骤十九、第t个签名参与者IDt选取秘密混淆值ρ∈{1,2,…,n‑1},然后计算秘密混淆值ρ在模n下是否存在乘法逆元ρ‑1,如果存在,则执行下一步骤,如果不存在,则重新选取秘密混淆值ρ∈{1,2,…,n‑1}并重新计算秘密混淆值ρ在模n下是否存在乘法逆元ρ‑1,直到找到一个存在乘法逆元ρ‑1的秘密混淆值ρ,然后执行下一步骤;其中,ρ表示秘密混淆值,ρ‑1表示秘密混淆值ρ在模n下的乘法逆元;步骤二十、按照下式,第t个签名参与者IDt计算第t+1个签名生成参数第二部分βt+1,然后将第t+1个签名生成参数第二部分βt+1发送给第t‑1个签名参与者IDt‑1其中,βt+1表示第t+1个签名生成参数第二部分,IDt‑1表示第t‑1个签名参与者;步骤二十一、按照下式,第i个签名参与者IDi计算第2t‑i+1个签名生成参数第二部分β2t‑i+1,然后将第2t‑i+1个签名生成参数第二部分β2t‑i+1发送给第i‑1个签名参与者IDi‑1,i=t‑1,t‑2,…,2:其中,β2t‑i+1表示第2t‑i+1个签名生成参数第二部分,β2t‑i表示第2t‑i个签名生成参数第二部分;步骤二十二、按照下式,第一个签名参与者ID1计算第2t个签名生成参数第二部分β2t,然后将第2t个签名生成参数第二部分β2t发送给第t个签名参与者IDt其中,β2t表示第2t个签名生成参数第二部分,β2t‑1表示第2t‑1个签名生成参数第二部分;步骤二十三、按照下式,第t个签名参与者IDt计算第2t+1个签名生成参数第二部分β2t+1:β2t+1=β2t×Eρ‑1其中,β2t+1表示第2t+1个签名生成参数第二部分;步骤二十四、按照下式,第t个签名参与者IDt计算第二部分签名s在paillier同态加密下的密文C,然后将第二部分签名s在paillier同态加密下的密文C发送给第一个签名参与者ID1:C=αt+E β2t+1其中,s表示第二部分签名,C表示第二部分签名s在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′=r是否成立,如果成立,则执行下一步骤,如果不成立,则签名失败,返回步骤六:r′≡xR′mod n其中,r′表示第一部分签名的验证参数,≡表示同余符号;步骤二十八、第一个签名参与者ID1提取签名(r,s),然后将签名(r,s)广播给所有签名参与者;其中,(r,s)表示最终生成的签名。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201910271243.1/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top