当前位置: 首页 > 专利查询>武汉大学专利>正文

一种基于两方协同的ECDSA数字签名方法技术

技术编号:20874978 阅读:45 留言:0更新日期:2019-04-17 11:14
本发明专利技术公开了一种基于两方协同的ECDSA数字签名方法,该方法包括:1)参与协同签名的签名方Alice和签名方Bob,各自生成对应的签名公私钥对和其他参数:2)Alice和Bob协同完成ECDSA签名,最终输出签名(r,s)。本发明专利技术方法在保证安全性和正确性的前提下,签名过程不引入同态加密、不经意传输等高开销的密码操作,使得签名方案在通信开销和计算开销上取得了良好的平衡,因此性能上显著地优于现有的所有ECDSA两方协同数字签名方法。

【技术实现步骤摘要】
一种基于两方协同的ECDSA数字签名方法
本专利技术涉及信息安全技术,尤其涉及一种基于两方协同的ECDSA数字签名方法。
技术介绍
数字签名时数字化环境下的对传统手写签名的模拟,可保障数字信息的不可伪造性、可认证性和完整性。通常情况下,一方生成数字签名,可以被其他方公开验证,随着互联网的发展,数字签名技术已经广泛应用于金融,商务、军事和外交等诸多领域。为了降低签名权利集中或签名密钥丢失的风险,一些特殊的文档(如高机密的文件)通常需要多人协同才能完成签名。针对这类问题,常见的解决方法是采用门限秘密共享方案,然而门限方案在实施过程中涉及到密钥恢复过程,并且需要有一个可信参与方或第三方持有该过程产生的完整、正确的私钥,使得持有完整私钥的参与方或第三方可以在其他参与方不知情的情况下完成签名,这在很大程度上打破了系统的安全性和公平性。为了解决这一问题,一些学者提出了两方协同、密钥无需恢复的两方ECDSA签名,然而现有的两方协同签名方案为了保证私钥的隐私性以及签名的正确性,必需引入计算开销非常高的同态加密算法(如Paillier加密)或通信开销非常高的不经意传输协议等,这使得算法在实际应用(尤其是通信开销和计算开销受限的设备)中的部署面临着巨大的挑战。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中的缺陷,提供一种基于两方协同的ECDSA数字签名方法。本专利技术解决其技术问题所采用的技术方案是:一种基于两方协同的ECDSA数字签名方法,包括以下步骤:1)参与协同签名的签名方Alice和签名方Bob,各自生成对应的签名公私钥对和其他参数:1.1)Alice随机选择一个大整数dA∈Zn作为私钥,计算对应的公钥DA=[dA]G;Bob随机选择一个大整数dB∈Zn作为私钥,计算对应的公钥DB=[dB]G;其中,G是ECDSA椭圆曲线的基点,n是阶,Zn为模大整数n的剩余类;1.2)Bob生成一个关于(dB,DB)离散对数关系的零知识证明π1,将(π1,DB)发送给Alice;1.3)Alice验证(π1,DB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DA+DB,并且生成一个关于(dA,DA)离散对数关系的零知识证明π2,将(π2,DA)发送给Bob;1.4)Bob验证(π2,DA)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DB+DA;1.5)Alice随机选择一对大整数aA,bA∈Zn;Bob随机选择一对大整数aB,bB∈Zn;1.6)Alice和Bob通过相关密码运算(如同态操作或不经意传输等手段)分别获得数据份额zA,zB,使得满足(zA+zB)modn=(aA+aB)·(bA+bB)modn;1.7)Alice和Bob协商一对或多对随机密钥,记随机密钥对为(mA,mB),使其满足mA+mB=1modn;2)Alice和Bob协同完成ECDSA签名,最终输出签名(r,s):2.1)Alice随机选择一对大整数kA,ρA∈Zn,计算RA=[kA]G;Bob随机选择一对大整数kB,ρB∈Zn,计算RB=[kB]G;其中,Zn为模大整数n的剩余类;2.2)Bob生成一个关于(kB,RB)离散对数关系的零知识证明π3,将(π3,RB)发送给Alice;2.3)Alice验证(π3,RB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算R=RA+RB=(rx,ry)和待签名消息的杂凑值e=h(M),r=rxmodn;并且生成一个关于(kA,RA)离散对数关系的零知识证明π4,将(π4,RA)发送给Bob;2.4)Bob验证(π4,RA)的正确性,如果不正确,终止方案执行过程;如果正确,则计算R=RB+RA=(rx,ry)和待签名消息的杂凑值e=h(M),r=rxmodn;2.5)Alice选择一对密钥(mA,mB),计算大整数δA=(mA·e+r·dA)modn,uA=(kA-aA)modn,vA=(δA-aA)modn,wA=(ρA-bA)modn;Bob计算大整数δB=(mB·e+r·dB)modn,uB=(kB-aB)modn,vB=(δB-aB)modn,wB=(ρB-bB)modn;2.6)Alice将计算的数据(uA,vA,wA)发送给Bob;Bob同理将数据(uB,vB,wB)发送给Alice;2.7)Alice计算u=(uA+uB)modn,v=(vA+vB)modn,w=(wA+wB)modn,αA=(kA·w+ρA·u+zA-u·w)modn,βA=(δA·w+ρA·v+zA-v·w)modn;Alice将kA,ρA,αA分别赋值给aA,bA,zA,即aA∶=kA,bA∶=ρA,zA∶=αA;当实际应用需求为Bob输出签名值时,Alice将数据(αA,βA)发送给Bob;若无需求,可选择不发送(αA,βA);2.8)Bob计算u=(uA+uB)modn,v=(vA+vB)modn,w=(wA+wB)modn,αB=(kB·w+ρB·u+zB)modn,βB=(δB·w+ρB·v+zB)modn;Bob将kB,ρB,αB分别赋值给aB,bB,zB,即aB∶=kB,bB∶=ρB,zB∶=αB;当实际应用需求为Alice输出签名值时,Bob将数据(αB,βB)发送给Alice,否则可选择不发送(αB,βB);2.9)当实际应用需求为Alice输出签名值时,Alice计算s=(αA+αB)-1(βA+βB)modn,输出最终的签名值(r,s);当实际应用需求为Bob输出签名值时,Bob计算s=(αA+αB)-1(βA+βB)modn,输出最终的签名值(r,s)。本专利技术产生的有益效果是:本专利技术实现了安全高效的SM2协同签名,签名过程中保证签名的两个参与方不会暴露各自的签名密钥,且签名必须由双方同时参与才能完成,从而提高了签名方案的安全性和公平性。同时,本专利技术考虑到签名在实际部署过程中的应用效能,取消了签名过程中复杂的密码操作,主要采用的是开销非常低的大整数模乘和大整数模加运算,从而大大提升了签名方案的性能附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1是本专利技术实施例的分布式密钥生成过程示意图;图2是本专利技术实施例的两方协同ECDSA签名过程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。本专利技术提出了一种基于两方协同的ECDSA数字签名方法,下面给出具体描述。符号及定义:Alice,Bob:计算签名的两个参与方;G:ECDSA椭圆曲线上的基点;h():密码杂凑函数;dA,dB:签名参与方Alice,Bob对应的私钥;DA,DB:签名参与方Alice,Bob对应的公钥;PAB:用于验证最终签名正确性的可公开公钥;M:待签名的消息;e:待签名的消息的杂凑值;n:基点G的阶(n是素因子);a·b:整数a,b相乘;modn:模n运算,例如,23mod7=2;kA,kB,ρA,ρB:签名参与方Alice,Bob选择的随机数;zA,zB:Alice和Bob各自对应的数据份额,满足关系式(zA+zB)modn=(aA+aB)本文档来自技高网...

【技术保护点】
1.一种基于两方协同的ECDSA数字签名方法,其特征在于,包括以下步骤:1)参与协同签名的签名方Alice和签名方Bob,各自生成对应的签名公私钥对和其他参数:1.1)Alice随机选择一个大整数dA∈Zn作为私钥,计算对应的公钥DA=[dA]G;Bob随机选择一个大整数dB∈Zn作为私钥,计算对应的公钥DB=[dB]G;其中,G是ECDSA椭圆曲线的基点,n是阶,Zn为模大整数n的剩余类;1.2)Bob生成一个关于(dB,DB)离散对数关系的零知识证明π1,将(π1,DB)发送给Alice;1.3)Alice验证(π1,PB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DA+DB,并且生成一个关于(dA,DA)离散对数关系的零知识证明π2,将(π2,DA)发送给Bob;1.4)Bob验证(π2,DA)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DB+DA;1.5)Alice随机选择一对大整数aA,bA∈Zn;Bob随机选择一对大整数aB,bB∈Zn;1.6)Alice和Bob通过运算分别获得数据份额zA,zB,使得满足(zA+zB)mod n=(aA+aB)·(bA+bB)mod n;1.7)Alice和Bob协商一对或多对随机密钥,记随机密钥对为(mA,mB),使其满足mA+mB=1mod n;2)Alice和Bob协同完成ECDSA签名,最终输出签名(r,s),并更新步骤1中的相关参数:aA,bA,zA,aB,bB,zB:2.1)Alice随机选择一对大整数kA,ρA∈Zn,计算RA=[kA]G;Bob随机选择一对大整数kB,ρB∈Zn,计算RB=[kB]G;其中,Zn为模大整数n的剩余类;2.2)Bob生成一个关于(kB,RB)离散对数关系的零知识证明π3,将(π3,RB)发送给Alice;2.3)Alice验证(π3,RB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算R=RA+RB=(rx,ry)和待签名消息的杂凑值e=h(M),r=rx mod n;并且生成一个关于(kA,RA)离散对数关系的零知识证明π4,将(π4,RA)发送给Bob;2.4)Bob验证(π4,RA)的正确性,如果不正确,终止方案执行过程;如果正确,则计算R=RB+RA=(rx,ry)和待签名消息的杂凑值e=h(M),r=rx mod n;2.5)Alice选择一对密钥对(mA,mB),计算大整数δA=(mA·e+r·dA)mod n,uA=(kA‑aA)mod n,vA=(δA‑aA)mod n,wA=(ρA‑bA)mod n;Bob计算大整数δB=(mB·e+r·dB)mod n,uB=(kB‑aB)mod n,vB=(δB‑aB)mod n,wB=(ρB‑bB)mod n;2.6)Alice将计算的数据(uA,vA,wA)发送给Bob;Bob同理将数据(uB,vB,wB)发送给Alice;2.7)Alice计算u=(uA+uB)mod n,v=(vA+vB)mod n,w=(wA+wB)mod n,αA=(kA·w+ρA·u+zA‑u·w)mod n,βA=(δA·w+ρA·v+zA‑v·w)mod n;Alice将kA,ρA,αA分别赋值给aA,bA,zA;当实际应用需求为Bob输出签名值时,Alice将数据(αA,βA)发送给Bob;若无需求,可选择不发送(αA,βA);2.8)Bob计算u=(uA+uB)mod n,v=(vA+vB)mod n,w=(wA+wB)mod n,αB=(kB·w+ρB·u+zB)mod n,βB=(δB·w+ρB·v+zB)mod n;Bob将kB,ρB,αB分别赋值给aB,bB,zB;当实际应用需求为Alice输出签名值时,Bob将数据(αB,βB)发送给Alice,否则可选择不发送(αB,βB);2.9)当实际应用需求为Alice输出签名值时,Alice计算s=(αA+αB)...

【技术特征摘要】
1.一种基于两方协同的ECDSA数字签名方法,其特征在于,包括以下步骤:1)参与协同签名的签名方Alice和签名方Bob,各自生成对应的签名公私钥对和其他参数:1.1)Alice随机选择一个大整数dA∈Zn作为私钥,计算对应的公钥DA=[dA]G;Bob随机选择一个大整数dB∈Zn作为私钥,计算对应的公钥DB=[dB]G;其中,G是ECDSA椭圆曲线的基点,n是阶,Zn为模大整数n的剩余类;1.2)Bob生成一个关于(dB,DB)离散对数关系的零知识证明π1,将(π1,DB)发送给Alice;1.3)Alice验证(π1,PB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DA+DB,并且生成一个关于(dA,DA)离散对数关系的零知识证明π2,将(π2,DA)发送给Bob;1.4)Bob验证(π2,DA)的正确性,如果不正确,终止方案执行过程;如果正确,则计算PAB=DB+DA;1.5)Alice随机选择一对大整数aA,bA∈Zn;Bob随机选择一对大整数aB,bB∈Zn;1.6)Alice和Bob通过运算分别获得数据份额zA,zB,使得满足(zA+zB)modn=(aA+aB)·(bA+bB)modn;1.7)Alice和Bob协商一对或多对随机密钥,记随机密钥对为(mA,mB),使其满足mA+mB=1modn;2)Alice和Bob协同完成ECDSA签名,最终输出签名(r,s),并更新步骤1中的相关参数:aA,bA,zA,aB,bB,zB:2.1)Alice随机选择一对大整数kA,ρA∈Zn,计算RA=[kA]G;Bob随机选择一对大整数kB,ρB∈Zn,计算RB=[kB]G;其中,Zn为模大整数n的剩余类;2.2)Bob生成一个关于(kB,RB)离散对数关系的零知识证明π3,将(π3,RB)发送给Alice;2.3)Alice验证(π3,RB)的正确性,如果不正确,终止方案执行过程;如果正确,则计算R=RA+RB=(rx,ry)和待签名消息的杂凑值e=h(M),r=rxmodn;并且生成一个关于(kA,RA)离散对数关系的零知识证明π4...

【专利技术属性】
技术研发人员:何德彪王婧冯琦张语荻林超
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1