[发明专利]一种GOST数字签名生成方法及系统有效
申请号: | 201711040478.7 | 申请日: | 2017-10-30 |
公开(公告)号: | CN107682151B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 何德彪;张语荻 | 申请(专利权)人: | 武汉大学 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/32;H04L9/14 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 gost 数字签名 生成 方法 系统 | ||
1.一种GOST数字签名生成方法,其特征在于,包括:
分布式密钥对生成步骤:P1和P2两方参加算法生成,P1在集合{1,2,...,q-1}中随机选取私钥d1和随机数k1,P2在集合{1,2,...,q-1}中随机选取私钥d2和随机数k2,P1计算Q1=d1P并发给P2,P2同时生成Q2=d2P发给P1;
分布式GOST数字签名生成步骤:P1和P2可以同时计算出GOST数字签名的验证公钥Q=d1d2P;P1计算R1=k1P,使用同态加密方法加密d1和k1发送给P2,P2计算R2=k2P返回给P1;P2通过同态加密的性质,可以计算出rd1d2+ek1k2的密文并将此密文发送至P1,P1解密该密文,并计算签名的第一部分r,在签名验证通过后,P1公布完整的GOST数字签名(r,s);
所述分布式密钥对生成步骤具体包括:
步骤2.1、P1在集合{1,2,…,q-1}中选择第一个部分私钥d1,首先计算第一个部分公钥Q1=d1P,同时P1对Q1产生一个零知识证明π0,即证明d1是正确生成的;P1产生一个同态加密的公私钥对(pk,sk),在这里使用Paillier加密算法,加密d1,得到d1的密文Ckey=Encpk(d1),并生成对Ckey的零知识证明π1,即证明Ckey是d1的合法密文,并将Q1,Ckey,π0,π1发送给P2;
步骤2.2、P2在验证π0和π1的正确性后,在集合{1,2,...,q-1}中选择第二个部分私钥d2,计算第二个部分公钥Q2=d2P,和Q2的零知识证明π2并将Q2,π2发送给P1;P2计算出目标公钥Q=d2Q1=d1d2P,保存d2,Q,Ckey和pk;
步骤2.3、P1计算目标公钥Q=d1Q2=d1d2P,并保存d1,Q,pk和sk;
分布式GOST数字签名生成步骤具体包括:
步骤3.1、P1首先在集合{1,2,…,q-1}中选择第一个临时私钥k1,计算第一个临时公钥R1=k1P和k1的密文Cran=Encpk(k1),同时生成对R1的零知识证明π3和对Cran的零知识证明π4,即证明R1是由k1正确生成的,Cran是由k1正确加密得到的;P1将R1,Cran,π3,π4发送给P2;
步骤3.2、P2在收到R1,Cran,π3,π4后验证π3,π4,若验证通过则P2在集合{1,2,...,q-1}中选择第二个临时私钥k2,计算第二个临时公钥R2=k2P并生成对R2的零知识证明π5;P1通过R的x坐标xR计算签名的第一部分r=xRmod q,选择一个大的数ρ,再使用Ckey和Cran计算密文即C1=Encpk(ρ·q+rd1d2+ek1k2);P2计算目标临时公钥R=k2R1并将C1,R2,π5发送给P1;
步骤3.3、P1验证π5通过后,计算出目标临时公钥R=k1R2;P1使用自己的私钥sk对C1进行解密运算Decsk(C1)=rd1d2+ek1k2mod q;解密得到的结果rd1d2+ek1k2mod q即等于签名中第二部分s;P1再使用R的x坐标xR计算签名的第一部分r=xRmod q,此时P1使用目标公钥Q验证签名(r,s)的正确性,若签名正确则输出签名,否则终止协议。
2.一种GOST数字签名生成系统,其特征在于,包括:
分布式密钥对生成单元:P1和P2两方参加算法生成,P1在集合{1,2,...,q-1}中随机选取私钥d1和随机数k1,P2在集合{1,2,...,q-1}中随机选取私钥d2和随机数k2,P1计算Q1=d1P并发给P2,P2同时生成Q2=d2P发给P1,
分布式GOST数字签名生成单元:P1和P2同时计算出GOST数字签名的验证公钥Q=d1d2P;P1计算R1=k1P,使用同态加密方法加密d1和k1发送给P2,P2计算R2=k2P返回给P1;P2通过同态加密的性质,可以计算出rd1d2+ek1k2的密文并将此密文发送至P1,P1解密该密文,并计算签名的第一部分r,在签名验证通过后,P1公布完整的GOST数字签名(r,s);
所述分布式密钥对生成单元进行分布式密钥对生成的具体方法包括:
步骤2.1、P1在集合{1,2,…,q-1}中选择第一个部分私钥d1,首先计算第一个部分公钥Q1=d1P,同时P1对Q1产生一个零知识证明π0,即证明d1是正确生成的;P1产生一个同态加密的公私钥对(pk,sk),在这里使用Paillier加密算法,加密d1,得到d1的密文Ckey=Encpk(d1),并生成对Ckey的零知识证明π1,即证明Ckey是d1的合法密文,并将Q1,Ckey,π0,π1发送给P2;
步骤2.2、P2在验证π0和π1的正确性后,在集合{1,2,...,q-1}中选择第二个部分私钥d2,计算第二个部分公钥Q2=d2P,和Q2的零知识证明π2并将Q2,π2发送给P1;P2计算出目标公钥Q=d2Q1=d1d2P,保存d2,Q,Ckey和pk;
步骤2.3、P1计算目标公钥Q=d1Q2=d1d2P,并保存d1,Q,pk和sk;
分布式GOST数字签名生成单元进行分布式GOST数字签名生成的具体方法包括:
步骤3.1、P1首先在集合{1,2,…,q-1}中选择第一个临时私钥k1,计算第一个临时公钥R1=k1P和k1的密文Cran=Encpk(k1),同时生成对R1的零知识证明π3和对Cran的零知识证明π4,即证明R1是由k1正确生成的,Cran是由k1正确加密得到的;P1将R1,Cran,π3,π4发送给P2;
步骤3.2、P2在收到R1,Cran,π3,π4后验证π3,π4,若验证通过则P2在集合{1,2,...,q-1}中选择第二个临时私钥k2,计算第二个临时公钥R2=k2P并生成对R2的零知识证明π5;P1通过R的x坐标xR计算签名的第一部分r=xRmod q,选择一个大的数ρ,再使用Ckey和Cran计算密文即C1=Encpk(ρ·q+rd1d2+ek1k2);P2计算目标临时公钥R=k2R1并将C1,R2,π5发送给P1;
步骤3.3、P1验证π5通过后,计算出目标临时公钥R=k1R2;P1使用自己的私钥sk对C1进行解密运算Decsk(C1)=rd1d2+ek1k2mod q;解密得到的结果rd1d2+ek1k2mod q即等于签名中第二部分s;P1再使用R的x坐标xR计算签名的第一部分r=xRmod q,此时P1使用目标公钥Q验证签名(r,s)的正确性,若签名正确则输出签名,否则终止协议。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711040478.7/1.html,转载请声明来源钻瓜专利网。