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

技术编号:21898913 阅读:52 留言:0更新日期:2019-08-17 18:24
本发明专利技术公开了一种基于ECDSA的协同签名方法,其主要特色在于每一次协同签名都会更新通信双方的部分私钥,做到了高安全的一次一密。具体地说,第一通信方用自身的加法同态加密方案加密自身的ECDSA签名部分私钥并把它存储于第二通信方,第二通信方存储自身的部分私钥;通信双方均无法获得对方的部分私钥信息,只有两方联合才能对消息进行签名;签名完成后,第二通信方更新双方的部分私钥。而且,该协同签名方法仅需一次通信交互和少量的计算,从而保证了协同签名的高效可用性。因此,本发明专利技术以一种高效率、高安全的方式保护了ECDSA签名私钥的安全性。

A Cooperative Signature Method Based on ECDSA

【技术实现步骤摘要】
一种基于ECDSA的协同签名方法
本专利技术涉及信息安全
,具体涉及一种基于ECDSA的协同签名方法。
技术介绍
数字签名算法(DSA)由签名者对数据产生数字签名,由验证者验证签名的可靠性。每个签名者拥有一对密钥对,包含一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。数字签名能够保证信息传输的完整性,验证信息发送者的身份并防止交易中抵赖事件的发生。椭圆曲线数字签名算法(ECDSA)是一种应用于椭圆曲线并与DSA具有相似性质的签名方案。ECDSA数字签名算法通常被认为是最广泛标准化的基于椭圆曲线的数字签名算法。在ECDSA标准签名算法的使用过程中,若签名私钥只有签名者一方保管,往往存在着一定的泄露风险,一旦攻击者入侵签名者成功,则攻击者可随意伪造签名。因此,在许多数字签名应用场景中,签名密钥需要被互不信任的双方分别保存,且只有在双方合作的情况下才能生成签名,任何一方都无法独立生成数字签名。同态加密的良好性质可保护明文消息的机密性,通过对密文的运算操作代替对明文的运算操作并取得相同效果,比如:Paillier加密系统是由PascalPaillier于1999年提出的一个基于判定合数剩余类问题的加法同态加密方案,其安全性基于判定合数剩余问题的困难性,该方案支持多次加法同态运算。现有的协同ECDSA数字签名生成方案在实际应用中存在局限性,每一组参数只能使用一次,如果使用多次,就会导致ECDSA数字签名的生成过程中的随机数被重复使用,而ECDSA数字签名的随机数一旦被重复使用,就会泄露签名私钥。因此,现有的方法中每当需要产生一个新的数字签名时,需要重新选取参数,然后再协同生成数字签名,这一整个过程的通信和计算开销巨大,从而限制了其实用性。
技术实现思路
为了克服现有技术存在的缺陷与不足,本专利技术提供一种基于ECDSA的协同签名方法,本专利技术实现了互不信任的双方在不泄露各自私钥的前提下通过合作且只能通过合作才能生成数字签名,最大程度地保护了签名私钥的安全性;同时,同态加密使得双方各自签名私钥片可重复使用,大大降低密钥生成过程的计算量,提升签名效率。为了达到上述目的,本专利技术采用以下技术方案:本专利技术提供的基于ECDSA的协同签名方法,包括下述步骤:用户端A生成自身的签名协同数据PtKA,所述PtKA包括一对加法同态加密方案的公私钥对(PK,SK)、随机数kA以及RA;服务器端S生成自身的签名协同数据PtKS,所述PtKS包括用户端A的加法同态加密方案的公钥PK、随机数kS、用户A的签名私钥片的密文ekA及其更新值exA、服务器S的签名私钥片xS及其更新值otxS;用户端A计算待签名消息的哈希值h,并将身份标识IDA、待签名消息哈希值h以及PtKA中包含的承诺RA发送至服务器端S;服务器端S根据RA计算ECDSA签名的第一部分r,并根据h生成签名的临时第二部分ps,将r、ps以及PtKS中包含的密文exA发送至用户端A;用户端A根据exA、ps、r以及PtKA中包含的SK、kA计算输出ECDSA签名σ;最后,用户端A与服务器端S分别采用随机数发生器生成新随机数,进行部分私钥更新,并分别更新签名协同数据PtKA和PtKS。作为优选的技术方案,用户端A和服务器端S共享基于ECDSA的协同签名方法的椭圆曲线参数E(Fq)、G和q,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上阶为素数q的一个基点,q通常为256比特。作为优选的技术方案,所述用户端A生成自身的签名协同数据PtKA包括下述步骤:用户端A利用随机数发生器产生两个大素数p1、p2,其中p1,p2>q3,且满足gcd(p1p2,(p1-1)(p2-1))=1,函数gcd表示计算两个输入整数的最大公约数;用户端A利用随机数发生器产生xA,kA∈Zq和r1∈[1,N-1],其中xA为用户端A的签名私钥片,Zq为整数模q乘法群,r1为加法同态加密方案的随机数,[1,N-1]表示集合{1,2,K,N-1};用户端A进行如下计算:整数N=p1×p2;正整数g=N+1;最小公倍数λ=LCM(p1-1,p2-1),函数LCM表示计算两个输入整数的最小公倍数;群元素L(g,λ,N2,N)modN在整数模N乘法群ZN*中的乘法逆元:μ=L(g,λ,N2,N)-1modN;以xA为明文r1为随机数进行加法同态加密得到的用户端A签名私钥片的密文:承诺:RA=kA·G;承诺用于保护随机数kA,其中G表示椭圆曲线E上一个阶为素数的基点;用户端A向服务器端S发送IDA,g,N,N2,ekA并存储自身的签名协同数据PtKA={g,N,N2,λ,μ,kA,RA},其中IDA为用户端A的身份标识,(N,g)为加法同态加密方案的公钥PK,(λ,μ)为加法同态加密方案的私钥SK。作为优选的技术方案,所述服务器端S生成自身的签名协同数据PtKS包括下述步骤:服务器端S利用随机数发生器产生xS,kS,b0∈Zq和ρ∈[1,q4],其中b0和ρ为加法同态加密方案的随机数;服务器端S进行如下计算:服务器端S的签名公钥片PS=xS·G;域元素kSmodq在域Fq中的乘法逆元:以b0+ρ×q为明文ekA为随机数进行加法同态加密得到的密文:重要中间变量otxS=(xS-b0×kS)modq;服务器端S向用户端A发送PS并存储自身的签名协同数据PtKS={IDA,xS,g,N,N2,ekA,kS,exA,otxS}。作为优选的技术方案,该方法进一步包括下述步骤:用户端A接收PS后,计算ECDSA协同签名验证公钥pk=PS+xA·G,并将pk返回至服务器端S。作为优选的技术方案,所述用户端A计算待签名消息的哈希值h包括下述步骤:用户端A取出PtKA={g,N,N2,λ,μ,kA,RA},计算待签名消息m的哈希值h=H(m),其中函数H为密码杂凑函数;h是密码杂凑函数作用于消息m的输出值且为消息m的摘要信息。作为优选的技术方案,所述服务器端S根据RA计算ECDSA签名的第一部分r,并根据h生成签名的临时第二部分ps包括下述步骤:服务器端S利用用户端A的身份标识IDA检索数据库,取出数据PtKS={IDA,xS,g,N,N2,ekA,kS,exA,otxS};服务器端S计算承诺:(rx,ry)=R=kS·RA;rx表示点R在y轴方向的坐标;服务器端S计算ECDSA签名的第一部分:r=rxmodq;服务器端S计算签名的临时第二部分:ps=(kS)-1(h+r×otxS)modq。作为优选的技术方案,所述用户端A根exA、ps、r、SK和kA计算输出ECDSA签名σ包括下述步骤:用户端A计算重要中间变量otxA=(L(exA,λ,N2,N)×μmodN)modq;用户端A计算ECDSA签名的第二部分:s=(kA)-1(ps+r×otxA)modq;用户端A输出ECDSA签名σ=(r,s)。作为优选的技术方案,所述用户端A与服务器端S分别采用随机数发生器生成新的随机数,进行部分私钥更新,并分别更新签名协同数据PtKA和PtKS包括下述步骤:用户端A利用随机数发生器产生kA∈Zq,并计算RA=kA·G,然后把kA,RA写回到参数PtKA中,服务器端S利用随机数发生器产生kS,b0∈Zq和ρ∈本文档来自技高网
...

【技术保护点】
1.一种基于ECDSA的协同签名方法,其特征在于,包括下述步骤:用户端A生成自身的签名协同数据PtKA,所述PtKA包括一对加法同态加密方案的公私钥对(PK,SK)、随机数kA以及RA;服务器端S生成自身的签名协同数据PtKS,所述PtKS包括用户端A的加法同态加密方案的公钥PK、随机数kS、用户A的签名私钥片的密文ekA及其更新值exA、服务器S的签名私钥片xS及其更新值otxS;用户端A计算待签名消息的哈希值h,并将身份标识IDA、待签名消息哈希值h以及PtKA中包含的承诺RA发送至服务器端S;服务器端S根据RA计算ECDSA签名的第一部分r,并根据h生成签名的临时第二部分ps,将r、ps以及PtKS中包含的密文exA发送至用户端A;用户端A根据exA、ps、r以及PtKA中包含的SK、kA计算输出ECDSA签名σ;最后,用户端A与服务器端S分别采用随机数发生器生成新随机数,进行部分私钥更新,并分别更新签名协同数据PtKA和PtKS。

【技术特征摘要】
1.一种基于ECDSA的协同签名方法,其特征在于,包括下述步骤:用户端A生成自身的签名协同数据PtKA,所述PtKA包括一对加法同态加密方案的公私钥对(PK,SK)、随机数kA以及RA;服务器端S生成自身的签名协同数据PtKS,所述PtKS包括用户端A的加法同态加密方案的公钥PK、随机数kS、用户A的签名私钥片的密文ekA及其更新值exA、服务器S的签名私钥片xS及其更新值otxS;用户端A计算待签名消息的哈希值h,并将身份标识IDA、待签名消息哈希值h以及PtKA中包含的承诺RA发送至服务器端S;服务器端S根据RA计算ECDSA签名的第一部分r,并根据h生成签名的临时第二部分ps,将r、ps以及PtKS中包含的密文exA发送至用户端A;用户端A根据exA、ps、r以及PtKA中包含的SK、kA计算输出ECDSA签名σ;最后,用户端A与服务器端S分别采用随机数发生器生成新随机数,进行部分私钥更新,并分别更新签名协同数据PtKA和PtKS。2.根据权利要求1所述基于ECDSA的协同签名方法,其特征在于,用户端A和服务器端S共享基于ECDSA的协同签名方法的椭圆曲线参数E(Fq)、G和q,椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为椭圆曲线E上阶为素数q的一个基点,q通常为256比特。3.根据权利要求2所述基于ECDSA的协同签名方法,其特征在于,所述用户端A生成自身的签名协同数据PtKA包括下述步骤:用户端A利用随机数发生器产生两个大素数p1、p2,其中p1,p2>q3,且满足gcd(p1p2,(p1-1)(p2-1))=1,函数gcd表示计算两个输入整数的最大公约数;用户端A利用随机数发生器产生xA,kA∈Zq和r1∈[1,N-1],其中xA为用户端A的签名私钥片,Zq为整数模q乘法群,r1为加法同态加密方案的随机数,[1,N-1]表示集合{1,2,K,N-1};用户端A进行如下计算:整数N=p1×p2;正整数g=N+1;最小公倍数λ=LCM(p1-1,p2-1),函数LCM表示计算两个输入整数的最小公倍数;群元素L(g,λ,N2,N)modN在整数模N乘法群ZN*中的乘法逆元:μ=L(g,λ,N2,N)-1modN;以xA为明文r1为随机数进行加法同态加密得到的用户端A签名私钥片的密文:承诺:RA=kA·G;承诺用于保护随机数kA,其中G表示椭圆曲线E上一个阶为素数的基点;用户端A向服务器端S发送IDA,g,N,N2,ekA并存储自身的签名协同数据PtKA={g,N,N2,λ,μ,kA,RA},其中IDA为用户端A的身份标识,(N,g)为加法同态加密方案的公钥PK,(λ,μ)为加法同态加密方案的私钥SK。4.根据权利要求2所述基于ECDSA的协同签名方法,其特征在于,所述服务器端S生成自身的签...

【专利技术属性】
技术研发人员:马昌社龚征刘志杰姜枚
申请(专利权)人:广州安研信息科技有限公司
类型:发明
国别省市:广东,44

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

1