CN108964906B - 协同ecc的数字签名方法 - Google Patents
协同ecc的数字签名方法 Download PDFInfo
- Publication number
- CN108964906B CN108964906B CN201810796674.5A CN201810796674A CN108964906B CN 108964906 B CN108964906 B CN 108964906B CN 201810796674 A CN201810796674 A CN 201810796674A CN 108964906 B CN108964906 B CN 108964906B
- Authority
- CN
- China
- Prior art keywords
- participant
- signature
- share
- party
- ciphertext
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种协同ECC的数字签名方法,一个实施例中的方法包括:第一参与方计算待签名数据的摘要,获得数据摘要,并向第二参与方发送第一消息,所述第一消息携带所述数据摘要;第二参与方接收所述第一消息,并基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文;第二参与方向第一参与方发送第二消息,所述第二消息携带所述第一参与方签名份额密文;第一参与方解密第一参与方签名份额密文,获得第一参与方签名份额。本实施例避免了多次的数据交换和运算,减少了通信和计算的复杂度。
Description
技术领域
本申请涉及密码学技术领域,尤其涉及一种协同ECC的数字签名方法。
背景技术
协同计算是当代分布式网络中常见的计算模型;处于网络中相互不可信的参与方,需要在***露自己秘密的情况下协同计算出各方预定的任务,提供安全多方计算的隐私性,正确性等核心功能。基于协同计算思想的协同签名,成为协同计算过程中提供不可伪造功能的核心方式,其中,ECDSA签名算法作为国际认可的椭圆曲线数字签名算法,已经在全球范围内广泛使用,提供数字签名的完整性、可验证性和不可抵赖性等核心特征。然而,在某些应用场景下,为了保障签名过程的公平性和协作性,ECDSA签名数据需要在多方协作的情况下共同生成,并要保证该过程的隐私、正确和高效。而传统的解决方案普遍存在参与方通信和计算复杂度较高的情况。
发明内容
基于此,有必要提供一种协同ECC的数字签名方法。
一种协同ECC的数字签名方法,包括:
第一参与方计算待签名数据的摘要,获得数据摘要,并向第二参与方发送第一消息,所述第一消息携带所述数据摘要;
第二参与方接收所述第一消息,并基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文;
第二参与方向第一参与方发送第二消息,所述第二消息携带所述第一参与方签名份额密文;
第一参与方解密第一参与方签名份额密文,获得第一参与方签名份额。
基于如上所述的实施例中的方案,其在第一参与方获得待签名数据的数据摘要后,第二参与方基于该数据摘要以及第二参与方签名份额,通过合成的方式得到第一参与方签名份额密文,并发送给第一参与方。其通过具有同态性质的密码体制进行运算,避免了多次的数据交换和运算,减少了通信和计算的复杂度。
附图说明
图1为一个实施例中的协同ECC的数字签名方法的流程示意图;
图2是一个实施例中获得第一参与方签名份额密文的流程示意图;
图3是另一个实施例中获得第一参与方签名份额密文的流程示意图;
图4为一个实施例中协同ECC的数字签名方法的交互流程示意图;
图5为另一个实施例中协同ECC的数字签名方法的交互流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,一个实施例中的协同ECC的数字签名方法,包括下述步骤S11至步骤S14。
步骤S11:第一参与方计算待签名数据的摘要,获得数据摘要,并向第二参与方发送第一消息,所述第一消息携带所述数据摘要。
待签名数据是指需要参与方对其进行签名的数据,计算待签名数据的数据摘要的方式,可以采用任何可能的方式进行。
在一个实施例中,该第一消息还可以携带第一参与方持有的第一公钥份额以及第一参与方持有的第一临时公钥份额。其中,第一参与方持有的第一公钥份额与第二参与方持有的第二公钥份额,共同组成密钥对中的完整公钥。第一参与方与第二参与方可以加法共享该完整公钥,即完整公钥为第一公钥份额与第二公钥份额之和。第一参与方与第二参与方也可以乘法共享该完整公钥,即完整公钥为第一公钥份额与第二私钥份额之积。第一参与方与第二参与方也可以通过其他的方式共享该完整公钥,本实施例不做具体限定。第一参与方与第二参与方共享完整临时公钥的方式类似,即第一参与方与第二参与方可以加法共享完整临时公钥,也可以乘法共享完整临时公钥。
相应地,第一参与方持有的第一私钥份额,第二参与方持有第二私钥份额,第一私钥份额与第二私钥份额共同组成密钥对中的完整私钥。第一参与方与第二参与方可以加法共享该完整私钥,也可以乘法共享该完整私钥,也可以通过其他方式共享该完整私钥。
步骤S12:第二参与方接收所述第一消息,并基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文。
一个实施例中,在第一消息还携带第一参与方持有的第一公钥份额以及第一参与方持有的第一临时公钥份额的情况下,第二参与方还基于第一公钥份额以及第二参与方持有的第二私钥份额获得完整公钥,并基于第一临时公钥份额以及第二参与方持有的第二临时私钥份额获得完整临时公钥。
一个实施例中,第二参与方基于所述第一公钥份额以及第二参与方持有的第二私钥份额获得完整公钥,可以包括:第二参与方基于第二参与方持有的第二私钥份额,确定第二参与方持有的第二公钥份额;第二参与方基于所述第一公钥份额和所述第二公钥份额获得完整公钥。第二参与方基于所述第一临时公钥份额以及第二参与方持有的第二临时私钥份额获得完整临时公钥,可以包括:第二参与方基于第二参与方持有的第二临时私钥份额,确定第二参与方持有的第二临时公钥份额;第二参与方基于所述第一临时公钥份额和所述第二临时公钥份额获得完整临时公钥。
其中,第一参与方与第二参与方加法共享该完整公钥的情况下,完整公钥为第一公钥份额与第二公钥份额之和,在第一参与方与第二参与方乘法共享该完整公钥的情况下,完整公钥为第一公钥份额与第二私钥份额之积。第一参与方与第二参与方也可以通过其他的方式共享该完整公钥,本实施例不做具体限定。类似地,基于第一参与方与第二参与方对完整临时公钥的乘法共享或者加法共享,完整临时公钥可以是第一临时公钥份额与第二临时私钥份额的乘积,或者是第一临时公钥份额与第二临时公钥份额的和。
一个实施例中,第二参与方合成完整公钥之后,还生成与完整公钥对应的ECC数字证书。第二参与方可以基于完整临时公钥计算第二参与方签名份额。
一个实施例中,在第二参与方接收所述第一消息之后,第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成之前,还可以包括步骤:
第二参与方与第一参与方协同执行针对第一参与方签名参数密文的证明知识协议的证明和验证。
在一个实施例中,第一参与方还可以在上述证明知识协议的证明和验证的执行之前,确定第一参与方签名参数密文,确定的该第一参与方签名参数密文还可以传输到第二参与方。第一参与方可以通过各种可能的方式将第一参与方签名参数密文传输到第二参与方。
在本申请的一个具体实施例中,第一参与方可以在上述证明知识协议的证明的执行过程中确定第一参与方签名参数密文。
第一参与方签名参数密文可以采用各种可能的方式进行确定。
在一个实施例中,第一参与方签名参数密文可以包括:对第一私钥份额进行加密获得的第一私钥份额密文,以及对第一临时私钥份额进行加密获得的第一临时私钥份额密文。
此时,第二参与方与第一参与方协同执行对所述第一参与方签名参数密文的证明知识协议的证明和验证,可以包括:
第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第一临时私钥份额密文的证明知识协议的证明和验证。
其中,针对第一私钥份额密文和第一临时私钥份额密文的证明知识协议的证明和验证,两者可以不分先后顺序串行执行,或并行执行。
在一个实施例中,可以基于证明明文知识协议完成对第一私钥份额密文的证明知识协议的证明和验证。具体可以是基于第一参与方与第二参与方之间的交互完成对第一私钥份额密文的证明知识协议的证明和验证。此时,第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明知识协议的证明和验证,包括:
第一参与方基于第一私钥份额计算出第一私钥份额密文,计算第一参与方承诺,并向第二参与方发送第一证明消息,所述第一证明消息包括:所述第一私钥份额密文与所述第一参与方承诺;
第二参与方接收第一证明消息,选择第二参与方挑战,并将第二参与方挑战发送给第一参与方;
第一参与方接收第二参与方挑战,基于第二参与方挑战计算第一响应和第二响应,并向第二参与方发送第二证明消息,所述第二证明消息包括:所述第一响应和所述第二响应;
第二参与方接收第二证明消息,并在第二证明消息和第一证明消息满足预定的数学运算关系时,完成证明和验证的过程。
在一个实施例中,也可以在上述证明明文知识协议的基础上减少交互次数,来完成对第一私钥份额密文的证明知识协议的证明和验证。此时,第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明知识协议的证明和验证,包括:
第一参与方基于第一私钥份额计算出第一私钥份额密文,并计算第一参与方承诺;
第一参与方计算第一参与方挑战,基于第一参与方挑战计算第三响应和第四响应,并向第二参与方发送证明消息,所述证明消息包括:所述第一私钥份额密文、所述第一参与方承诺、所述第三响应和所述第四响应;
第二参与方计算第二参与方挑战,并基于第二参与方挑战,验证第一私钥份额密文和第一参与方承诺,与第三响应和第四响应之间满足预定的数学运算关系时,完成证明和验证的过程。
第二参与方与第一参与方协同执行对所述第一临时私钥份额密文的证明知识协议的证明和验证的过程,与第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明知识协议的证明和验证的过程类似,在此不再展开赘述。
在一个实施例中,第一参与方签名参数密文包括:对第一参与方生成的第一参与方签名因子进行加密获得的第一参与方签名因子密文。其中,第一参与方签名因子的数目可以结合实际需要进行设定,一个实施例中的第一参与方签名因子包括:第一参与方生成的第一签名因子和第三签名因子。此时,第一参与方签名因子密文包括:对第一签名因子加密获得的第一签名因子密文,以及对第三签名因子加密获得的第三签名因子密文。
第一签名因子和第三签名因子可以采用各种可能的方式生成。一个实施例中,第一参与方可以基于第一临时私钥份额计算出第一签名因子,并基于第一临时私钥份额和第一私钥份额计算出第三签名因子。在另一个实施例中,可以在第一参与方挑选一个盲化因子(本实施例中称为第二盲化因子)之后,第一参与方基于第一临时私钥份额、第二盲化因子计算出第一签名因子,并基于第一临时私钥份额、第一私钥份额和第二盲化因子计算出第三签名因子。
此时,第二参与方与第一参与方协同执行对所述第一参与方签名参数密文的证明知识协议的证明和验证,可以包括:
第二参与方与第一参与方协同执行对所述第一签名因子密文的证明知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第三签名因子密文的证明知识协议的证明和验证。
其中,针对第一签名因子密文和第三签名因子密文的证明知识协议的证明和验证,两者可以不分先后顺序串行执行,或并行执行。
以第一签名因子密文为例,第二参与方与第一参与方协同执行对所述第一签名因子密文的证明知识协议的证明和验证,可以包括:
第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第一签名因子密文的证明明文知识协议的证明和验证。
在一个实施例中,第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证时,具体可以是基于第一参与方与第二参与方之间的交互完成对第一签名因子密文的证明知识协议的证明和验证。此时,第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证,包括:
第一参与方计算第一签名因子密文,计算第一参与方承诺,并向第二参与方发送第一证明消息,第一证明消息包括:第一签名因子密文与第一参与方承诺;
第二参与方接收第一证明消息,选择第二参与方挑战,并将第二参与方挑战发送给第一参与方;
第一参与方接收第二参与方挑战,基于第二参与方挑战计算出第五响应,并向第二参与方发送第二证明消息,第二证明消息包括:第五响应;
第二参与方接收第二证明消息,并在第二证明消息和第一证明消息满足预定的数学运算关系时,完成证明和验证的过程。
在一个实施例中,也可以在上述证明零元知识协议的基础上减少交互次数,来完成对第一签名因子密文的证明知识协议的证明和验证。此时,第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证,包括:
第一参与方计算出第一签名因子密文,并计算第一参与方承诺;
第一参与方计算第一参与方挑战,基于第一参与方挑战计算第六响应,并向第二参与方发送证明消息,所述证明消息包括:所述第一签名因子密文、所述第一参与方承诺和所述第六响应;
第二参与方计算第二参与方挑战,并基于第二参与方挑战,验证第一签名因子密文、第一参与方承诺与第六响应之间满足预定的数学运算关系时,完成证明和验证的过程。
其中,第二参与方与第一参与方协同执行对所述第一签名因子密文的证明明文知识协议的证明和验证的过程,与上述证明明文知识协议的证明和验证的过程的原理相同,在此不再展开赘述。
在一个实施例中,第一参与方还生成同态密码机制的相关参数,第一参与方可以基于同态密码机制的相关参数进行相关加密,获得上述第一参与方签名参数密文。
一个实施例中,在第一参与方确定了第一参与方签名参数密文的情况下,第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文,可以采用下述方式进行:
第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文。
其中,在一个实施例中,如第一参与方签名参数密文包括第一私钥份额密文和第一临时私钥份额密文时,第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文,具体可以包括步骤S1211至步骤S1214。
步骤S1211:第二参与方确定第一盲化因子。
步骤S1212:第二参与方与第一参与方协同执行针对盲化临时签名份额密文的证明明文知识协议的证明和验证,所述盲化临时签名份额密文基于第一临时私钥份额密文、第二临时私钥份额以及第一盲化因子获得。
步骤S1213:第一参与方与第二参与方协同执行针对第一盲化签名份额密文进行证明明文知识协议的证明和验证;通过解密所述盲化临时签名份额密文,获得盲化临时签名份额;并基于盲化临时签名份额获得第一盲化签名份额,加密所述第一盲化签名份额获得所述第一盲化签名份额密文。一个实施例中,可以通过对所述盲化临时签名份额取逆,获得所述第一盲化签名份额。
步骤S1214:第二参与方计算第二参与方签名份额;并基于第一盲化因子、第一盲化签名份额密文、第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,获得第一参与方签名份额密文。
一个实施例中,在上述步骤S1214中,第二参与方基于第一盲化因子、第一盲化签名份额密文、第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,获得第一参与方签名份额密文,可以包括步骤S12141至步骤S12143。
步骤S12141:第二参与方基于第一盲化因子和第一盲化签名份额密文进行合成获得第一子签名份额密文。
步骤S12142:第二参与方对第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,得到第二子签名份额密文。
步骤S12143:第二参与方基于第一子签名份额密文和第二子签名份额密文进行合成,获得第一参与方签名份额密文。
在另一个实施例中,如第一参与方签名参数密文包括第一签名因子密文和第三签名因子密文时,第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文,具体可以包括步骤S1221至步骤S1222。
步骤S1221:第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要,生成第二参与方签名因子。
在一个实施例中,该第二参与方签名因子可以包括两个签名因子,本实施例中记为:第二签名因子和第四签名因子。其中,第二参与方可以基于第二临时私钥份额和数据摘要计算出第二签名因子,并基于第二临时私钥份额、第二私钥份额和第二参与方签名份额计算出第四签名因子。另一方面,第二参与方也可以挑选第三盲化因子后,基于第二临时私钥份额、数据摘要和第三盲化因子计算出第二签名因子,并基于第二临时私钥份额、第二私钥份额、第二参与方签名份额和第三盲化因子计算出第四签名因子。
在另一个实施例中,该第二参与方签名因子可以包括三个签名因子,本实施例中记为:第二签名因子、第四签名因子和第五签名因子。其中,第二参与方可以基于第二临时私钥份额和数据摘要计算出第二签名因子,并基于第二临时私钥份额和第二参与方签名份额计算出第四签名因子,并基于第二临时私钥份额、第二私钥份额和第二参与方签名份额计算出第五签名因子。另一方面,第二参与方也可以挑选第四盲化因子后,基于第二临时私钥份额、数据摘要和第四盲化因子计算出第二签名因子,基于第二临时私钥份额、第二参与方签名份额和第四盲化因子计算出第四签名因子,并基于第二临时私钥份额、第二私钥份额、第二参与方签名份额以及第四盲化因子计算出第五签名因子。
步骤S1222:第二参与方基于第一参与方签名因子密文以及第二参与方签名因子进行合成,获得第一参与方签名份额密文。
第二参与方基于第一参与方签名因子密文以及第二参与方签名因子进行合成的方式,可以采用任何可能的方式进行,本实施例不做具体限定。
步骤S13:第二参与方向第一参与方发送第二消息,所述第二消息携带所述第一参与方签名份额密文。
步骤S14:第一参与方解密第一参与方签名份额密文,获得第一参与方签名份额。
以下结合其中几个实施例进行详细解释说明。在该实施例中,参与双方(第一参与方与第二参与方,本实施例中分别记为参与方1和参与方2),双方约定椭圆曲线密码体制参数并选取阶为素数n的生成元G。其中,生成元G是椭圆曲线上的一个点,其作用是通过G运算生成椭圆曲线上的其他点,通过选取阶为素数n的生成元G,可以确保椭圆曲线上的运算可以基于椭圆曲线离散对数问题进行运算,确保安全性。
其中,第一参与方持有第一私钥份额d1,第二参与方持有第二私钥份额d2,第一私钥份额d1和第二私钥份额d2共同构成完整的私钥d。第一参与方持有第一临时私钥份额k1,第二参与方持有第二临时私钥份额k2,第一临时私钥份额k1和第二临时私钥份额k2共同构成完整的临时私钥k。
基于私钥和临时私钥的构造形式的不同,可以有不同的方式。例如私钥可以通过加法共享的方式构造获得,也可以通过乘法共享的方式构造获得。相应地,临时私钥可以通过加法共享的方式构造获得,也可以通过乘法共享的方式构造获得。
以下分别以临时私钥分别由加法共享和乘法共享为例,分别进行说明。
实施例一:临时私钥形如加法共享。
一个实施例中,基于加法分享来构造出临时私钥的方式,也可以称为形如加法共享。在通过加法分享来构造出临时私钥时,其形式可记为k=k1+k2。
在加法分享构造出临时私钥的前提下,可通过加法分享来构造出私钥,其形式可记为d=d1+d2;也可以通过乘法分享构造出私钥,其形式可记为d=d1d2。其中d是共享私钥,是一份完整的私钥,d1是参与方1持有的私钥份额(本申请实施例中记为第一私钥份额),d2是参与方2持有的私钥份额(本申请实施例中记为第二私钥份额)。k是临时共享私钥,是一份完整的临时私钥,k1是参与方1持有的临时私钥份额(本申请实施例中记为第一临时私钥份额),k2是参与方2持有的临时私钥份额(本申请实施例中记为第二临时私钥份额)。
因此,在本实施例中,可以包含两种方案:其中一种为加法分享临时私钥k=k1+k2和加法分享私钥d=d1+d2;另外一种为加法分享临时私钥k=k1+k2和乘法分享私钥d=d1d2。
参考图4所示,在该实施例中,在具体实施时,参与方1对待签名数据M进行摘要运算,获得数据摘要e=H(M)。随后,参与方1生成参与方1持有的第一私钥份额d1∈[1,n-1],该第一私钥份额d1可通过随机的方式生成,并基于持有的第一私钥份额d1计算参与方1的第一公钥份额D1=d1G。参与方1还生成参与方1持有的第一临时私钥份额k1∈[1,n-1],并基于持有的第一临时私钥份额k1计算参与方1的第一临时公钥份额K1=k1G。其中,G为椭圆曲线密码体制参数中阶为素数n的生成元,该生成元G可以由参与方1与参与方2共同约定。参与方1还调用同态密码体制的密钥生成算法KeyGen生成密钥对(pk,sk)。
然后,参与方1向参与方2发送第一消息,该第一消息携带数据摘要e、第一公钥份额D1和第一临时公钥份额K1。
参与方2接收到参与方1发送的第一消息后,与参与方1协同执行针对第一参与方签名参数密文的证明知识协议的证明和验证阶段。在本实施例中,第一参与方签名参数密文包括第一私钥份额密文和第一临时私钥份额密文。一个实施例中,第一私钥份额密文和第一临时私钥份额密文可以在证明知识协议的证明过程中生成,其中,参与方1对第一私钥份额d1进行加密,获得第一私钥份额密文,并对第一临时私钥份额k1进行加密,获得第一临时私钥份额密文。具体的加密方式可以采用任何可能的方式进行,以Enc表示加密算法,获得的第一私钥份额密文可记为de=Enc(d1),获得的第一临时私钥份额密文可记为ke=Enc(k1)。
在执行证明知识协议的证明和验证时,可以采用不同的证明知识协议。例如,证明明文知识协议。在证明明文知识协议中,在***露秘密信息的前提下,证明者向验证者证明知道密文c对应的明文m,满足一定的关系,例如REnc={((c,pk),(m,r))|c=Encpk(m,r)}。此时,在该过程中,参与方2接收到参与方1发送的第一消息后,参与方1作为证明者,参与方2作为验证者,完成证明明文知识协议的证明和验证。
由于证明明文知识协议涉及到两种类型,一种为交互型,用PPK(c,m)表示;一种为非交互型,用NIPPK(c,m)表示。
交互型的证明明文知识协议PPK(c,m)的原理如下所述。在证明阶段,证明者基于明文m计算出密文c,并计算出承诺B。一个实施例中计算出的密文c可以是c=gmrnmod n2,承诺B可以是B=gxunmod n2,其中g、r、n均是同态密码体制的相关参数,x∈Zn,随后,证明者将密文c和承诺B发送给验证者。验证者选择随机挑战q∈Zn并发送给证明者。证明者接收到随机挑战q∈Zn之后,结合明文m和挑战q∈Zn计算出响应w和Z,一个实施例中计算出的响应w和Z可以为:w=(x+qm)mod n和Z=urqgtmod n2,其中t满足条件x+qm=w+tn。然后,证明者将计算出的响应w和Z发送给验证者。在验证阶段,验证者计算接收到的密文c和承诺B,与此次接收的响应w和Z,是否满足一定的数学运算关系,一个应用示例中可计算gwZnmodn2是否等于Bcqmod n2。如果满足(例如上述示例中gwZnmod n2等于Bcqmod n2),则表明密文c是明文m的加密。
具体在本实施例中,详细的基于交互型的证明明文知识协议PPK(c,m),针对第一参与方签名参数密文(本实施例中为第一私钥份额密文和第一临时私钥份额密文)进行证明知识协议的证明和验证时,对第一私钥份额密文和第一临时私钥份额密文的证明和验证可以不分先后顺序,并行执行。
以对第一私钥份额密文进行证明和验证为例,详细的基于交互型的证明明文知识协议的证明和验证的详细过程可以包括如下步骤A1至步骤A4。
步骤A1:参与方1作为证明者,基于第一私钥份额计算出第一私钥份额密文,并计算承诺(本实施例中称为第一参与方承诺),并向参与方2发送第一证明消息,第一证明消息包括:第一私钥份额密文与第一参与方承诺。
步骤A2:参与方2作为验证者,接收第一证明消息,并选择随机挑战(本实施例中称为第二参与方挑战),并将第二参与方挑战发送给参与方1。
步骤A3:参与方1接收第二参与方挑战,并基于第二参与方挑战计算出响应w和Z,本实施例中将基于参与方2返回的挑战生成的w和Z分别称为第一响应和第二响应,并向参与方2发送第二证明消息,第二证明消息包括:第一响应和第二响应。
一个应用示例中,可以基于明文m和第二参与方挑战计算出第一响应,并基于第二参与方挑战和同态密码体制的相关参数计算出第二响应。
步骤A4:参与方2接收第二证明消息,并在第二证明消息和第一证明消息满足一定的数学运算关系时,证明参与方1知道第一私钥份额密文对应的明文,完成证明和验证的过程。其中,第二证明消息和第一证明消息满足的数学运算关系,可以是第一私钥份额密文和第一参与方承诺,与第一响应和第二响应之间满足的数学运算关系,以上述示例中为例,例如可以是gwZnmod n2等于Bcqmod n2。
基于交互型的证明明文知识协议对第一临时私钥份额密文的证明和验证过程,可以与上述基于交互型的证明明文知识协议对第一私钥份额密文的证明和验证过程类似,在此不再展开赘述。
非交互型的证明明文知识协议NIPPK(c,m)的原理如下所述。在证明阶段,证明者基于明文m计算出密文c,并计算出承诺B。一个实施例中计算出的密文c可以是c=gmrnmodn2,承诺B可以是B=gxunmod n2,其中g、r、n均是同态密码体制的相关参数,x∈Zn,随后,证明者计算挑战q,只要能够保证挑战q的随机性和不确定性,证明者可以通过任何可能的方式计算出挑战q,例如一个实施例中可通过哈希函数计算出挑战q,例如q=H(c||B)mod n,其中H(·)是安全哈希函数,并计算响应w和Z,一个实施例中计算出的响应w和Z可以为:w=(x+qm)mod n和Z=urqgtmod n2,其中t满足条件x+qm=w+tn。然后,证明者将c、B、w和Z发送给验证者。在验证阶段,验证者计算挑战q=H(c||B)mod n,并计算接收到的密文c和承诺B,与接收到的响应w和Z,是否满足一定的数学运算关系,一个应用示例中可计算gwZnmod n2是否等于Bcqmod n2;如果满足(例如上述示例中gwZnmod n2等于Bcqmod n2),则表明密文c是明文m的加密。
具体在本实施例中,详细的基于非交互型的证明明文知识协议NIPPK(c,m),针对第一参与方签名参数密文(本实施例中为第一私钥份额密文和第一临时私钥份额密文)进行证明知识协议的证明和验证时,对第一私钥份额密文和第一临时私钥份额密文的证明和验证可以不分先后顺序,并行执行。
以对第一私钥份额密文进行证明和验证为例,详细的基于非交互型的证明明文知识协议的证明和验证的详细过程可以包括如下步骤B1至步骤B3。
步骤B1:参与方1作为证明者,基于第一私钥份额计算出第一私钥份额密文,并计算承诺(本实施例中称为第一参与方承诺)。
步骤B2:参与方1作为证明者,计算挑战(本实施例中称为第一参与方挑战),并基于第一参与方挑战计算响应w和Z,本实施例中将基于参与方1自身生成的挑战生成的w和Z分别称为第三响应和第四响应,并向参与方2发送证明消息,证明消息包括:第一私钥份额密文、第一参与方承诺、第三响应和第四响应。
一个应用示例中,可以基于明文m和第一参与方挑战计算出第三响应,并基于第一参与方挑战和同态密码体制的相关参数计算出第四响应。
步骤B3:参与方2计算挑战(本实施例中称为第二参与方挑战),其中,第二参与方挑战与第一参与方挑战相等,并基于第二参与方挑战,验证第一私钥份额密文和第一参与方承诺,与第三响应和第四响应之间满足一定的数学运算关系时,以上述示例中为例,例如可以是gwZnmod n2等于Bcqmod n2,证明参与方1知道第一私钥份额密文对应的明文,完成证明和验证的过程。
基于非交互型的证明明文知识协议对第一临时私钥份额密文的证明和验证过程,可以与上述基于非交互型的证明明文知识协议对第一私钥份额密文的证明和验证过程类似,在此不再展开赘述。
据此,在本实施例中,在执行针对第一参与方签名参数密文(本实施例中为第一私钥份额密文和第一临时私钥份额密文)的证明知识协议的证明和验证阶段时,可以结合上述方式证明和验证第一私钥份额密文是第一参与方的第一私钥份额的加密,第一临时私钥份额密文是第一临时私钥份额的加密。
如果证明明文知识协议的验证失败,则结束流程并退出。如果证明明文知识协议的验证通过,则进入后续的步骤。
参与方2生成第二私钥份额d2∈[[1,n-1],该第二私钥份额d2可通过随机的方式生成,并基于第二私钥份额d2和第一公钥份额D1获得完整公钥D。一个实施例中,完整公钥D可以是被参与方1和参与方2乘法共享,此时D=d2D1=d1d2G=dG。另一个实施例中,完整公钥D可以是被参与方1和参与方2加法共享,此时,也可以是基于第二私钥份额d2计算出第二公钥份额D2=d2G之后,基于第一公钥份额D1和第二公钥份额D2获得完整公钥D=D1+D2=(d1+d2)G=dG。获得完整公钥D后,生成与完整公钥D对应的ECC数字证书。
参与方2生成第二临时私钥份额k2∈[1,n-1],该第二临时私钥份额k2∈[1,n-1]可通过随机的方式生成,并基于第二临时私钥份额k2计算出第二临时公钥份额K2=k2G之后,基于第一临时公钥份额K1和第二临时公钥份额K2获得完整临时公钥K=K1+K2=(k1+k2)G=kG=(x1,y1)。
随后,参与方2挑选临时随机数作为盲化因子x′∈[1,n-1](本实施例中记为第一盲化因子),并对第一临时私钥份额密文ke=Enc(k1)、第二临时私钥份额k2∈[1,n-1]以及第一盲化因子x′∈[1,n-1]进行合成,获得盲化临时签名份额密文:reversee=(ke·Enc(k2))x′=(Enc(k1)·Enc(k2))x′=Enc((k1+k2)x′mod n)。
随后,参与方2作为证明者,参与方1作为验证者,参与方2与参与方1对盲化临时签名份额密文进行证明知识协议的证明和验证。
其中,在进行证明知识协议的证明和验证时,可以进行证明明文知识协议的证明和验证。如上所述,可以采用交互型的证明明文知识协议PPK(c,m)进行,也可以采用非交互型的证明明文知识协议NIPPK(c,m)进行。具体的对盲化临时签名份额密文reversee进行证明明文知识协议的证明和验证的原理,与上述证明明文知识协议的原理相同,此处不再展开赘述。
如果证明知识协议的验证失败,则结束流程并退出。如果证明知识协议的验证通过,则进入后续的步骤。
参与方1解密盲化临时签名份额密文reversee,得到盲化临时签名份额reverse=Dec(Enc(reversee))=(k1+k2)x′mod n。随后,参与方1基于盲化临时签名份额reverse获得第一盲化签名份额reverse′。在基于盲化临时签名份额reverse获得第一盲化签名份额reverse′时,可以采用任何可能的方式进行,在一个实施例中,可以通过对盲化临时签名份额reverse取逆,从而获得第一盲化签名份额reverse′,即reverse′=((k1+k2)x′)-1mod n=(k1+k2)-1x′-1mod n。获得第一盲化签名份额reverse′之后,参与方1对第一盲化签名份额reverse′进行加密,获得第一盲化签名份额密文reverse′e=Enc(reverse′)。
随后,参与方1作为证明者,参与方2作为验证者,参与方1与参与方2对第一盲化签名份额密文reverse′e进行证明知识协议的证明和验证。
其中,在进行证明知识协议的证明和验证时,可以进行证明明文知识协议的证明和验证。如上所述,可以采用交互型的证明明文知识协议PPK(c,m)进行,也可以采用非交互型的证明明文知识协议NIPPK(c,m)进行。具体的对第一盲化签名份额密文reverse′e进行证明明文知识协议的证明和验证的原理,与上述证明明文知识协议的原理相同,此处不再展开赘述。
如上所述,由于证明知识协议涉及交互型PPK(c,m)和非交互型NIPPK(c,m)。因此,在采用交互型的证明知识协议时,则执行PPK(reverse′e,reverse′)的证明和验证,在采用非交互型的证明知识协议时,则执行NIPPK(reverse′e,reverse′)的证明和验证。
如果证明知识协议的验证失败,则结束流程并退出。如果证明知识协议的验证通过,则进入后续的步骤。
参与方2计算第二参与方签名份额,该第二参与方签名份额可以是ECC签名份额,该第二参与方签名份额可基于完整临时公钥K=(x1,y1)的参数x1而定,如第二参与方签名份额为r=x1mod n。若计算结果为r=0,则参与方2返回上述生成第二临时私钥份额的步骤,重新生成新的第二临时私钥份额,并重复上述过程。否则,进入后续的步骤。
随后,参与方2对第一盲化因子x′和第一盲化签名份额密文reverse′e进行合成得到第一子签名份额密文s′1,其中的一个合成计算方式可以记为:
参与方2对第一私钥份额密文de、第二私钥份额d2、第二参与方签名份额r和数据摘要e进行合成,得到第二子签名份额密文s′2。
一个实施例中,在完整公钥D被参与方1和参与方2加法共享的情况下,可记为:
另一个实施例中,在完整公钥D被参与方1和参与方2乘法共享的情况下,可以记为:
参与方2对第一子签名份额密文s′1和第二子签名份额密文s′2进行合成,获得第一参与方签名份额密文se,可记为se=s′1·s′2=Enc(k-1(e+dr)mod n)。
随后,参与方2向参与方1发送第二消息,第二消息包括第二参与方签名份额r和第一参与方签名份额密文se。
参与方1接收该第二消息,对第一参与方签名份额密文se进行解密,从而获得第一参与方签名份额s=Dec(Enc(se))=k-1(e+dr)mod n。如果获得的第一参与方签名份额s=0,则返回上述参与方2生成第二临时私钥份额的步骤,参与方2重新生成新的第二临时私钥份额,并重复上述过程。否则,获得的由第二参与方签名份额r和第一参与方签名份额s组成的签名对(r,s)就是合法的ECC签名。
实施例二:临时私钥形如乘法共享。
一个实施例中,基于乘法分享来构造出临时私钥的方式,也可以称为形如乘法共享。在通过乘法分享来构造出临时私钥时,其形式可记为k=k1*k2。
在乘法分享构造出临时私钥的前提下,可通过乘法分享来构造出私钥,其形式可记为d=d1d2;也可以通过加法分享来构造出私钥,其形式可记为d=d1+d2。其中d是共享私钥,是一份完整的私钥,d1是参与方1持有的私钥份额(本申请实施例中记为第一私钥份额),d2是参与方2持有的私钥份额(本申请实施例中记为第二私钥份额)。k是临时共享私钥,是一份完整的临时私钥,k1是参与方1持有的临时私钥份额(本申请实施例中记为第一临时私钥份额),k2是参与方2持有的临时私钥份额(本申请实施例中记为第二临时私钥份额)。
因此,在本实施例中,可以包含两种方案:其中一种为乘法分享临时私钥k=k1*k2和乘法分享私钥d=d1d2;另外一种为乘法分享临时私钥k=k1*k2和加法分享私钥d=d1+d2。
在该实施例中,参考图5所示,在具体实施时,参与方1对待签名数据M进行摘要运算,获得数据摘要e=H(M)。随后,参与方1生成参与方1持有的第一私钥份额d1∈[1,n-1]。该第一私钥份额d1可通过随机的方式生成,并基于持有的第一私钥份额计算参与方1的第一公钥份额D1=d1G。参与方1还生成参与方1持有的第一临时私钥份额k1∈[1,n-1],并基于持有的第一临时私钥份额k1计算参与方1的第一临时公钥份额K1=k1G。参与方1还调用同态密码体制的密钥生成算法KeyGen生成密钥对(pk,sk)。
然后,参与方1向参与方2发送第一消息,该第一消息携带数据摘要e、第一公钥份额D1和第一临时公钥份额K1。
参与方2接收到参与方1发送的第一消息后,与参与方1协同执行针对第一签名因子密文和第三签名因子密文的证明知识协议的证明和验证阶段。在本实施例中,第一参与方签名参数密文包括第一签名因子密文和第三签名因子密文。
一个实施例中,第一签名因子密文和第三签名因子密文可以在证明知识协议的证明过程中生成。在证明知识协议的证明和验证的过程中,参与方1计算出第一签名因子密文和第三签名因子密文。
在另一个实施例中,参与方1也可以在挑选盲化因子x(本实施例中记为第二盲化因子)后,基于第一临时私钥份额k1和第二盲化因子x计算出第一签名因子u,如并基于第一临时私钥份额k1、第一私钥份额d1以及第二盲化因子x计算出第三签名因子v,如可以理解,在实际技术应用中,也可以采用其他的方式计算出第一签名因子u和第三签名因子v。
随后,参与方1加密第一签名因子u,获得第一签名因子密文,并加密第三签名因子v,获得第三签名因子密文。具体的加密方式可以采用任何可能的方式进行,以Enc表示加密算法,获得的第一签名因子密文可记为ue=Enc(u),获得的第三签名因子密文可记为ve=Enc(v)。
在执行证明知识协议的证明和验证时,可以采用不同的证明知识协议。例如,本实施例中可以完成证明零元知识协议的证明和验证后,再完成证明明文知识协议的证明和验证。证明明文知识协议的协议原理在上述实施例中已经说明,在此不再赘述。
证明零元知识协议中,在***露秘密信息的前提下,证明者向验证者证明密文c是零元0的加密,满足一定的关系,例如:LZero={((c,pk),(0,r))|c=Encpk(0,r)}。此时,在该过程中,参与方2接收到参与方1发送的第一消息后,参与方1作为证明者,参与方2作为验证者,完成证明零元知识协议的证明和验证。
由于证明零元知识协议涉及到两种类型,一种为交互型,用PZK(c,m)表示;一种为非交互型,用NIPZK(c,m)表示。
交互型的证明零元知识协议PZK(c,m)的原理如下所述。在证明阶段,证明者基于明文m计算密文c,并计算出承诺B。一个实施例中计算出的密文c可以是c=gmrnmod n2(如果m=0,则c=rnmod n2),承诺B可以是B=unmod n2,其中g、r、n均是同态密码体制的相关参数,随后,证明者将密文c和承诺B发送给验证者。验证者选择随机挑战q∈Zn并发送给证明者。证明者接收到随机挑战q∈Zn之后,结合挑战q∈Zn计算出响应Z,一个实施例中计算出的响应Z可以为:Z=urqmod n2。随后,证明者将计算出的响应Z发送给验证者。在验证阶段,验证者计算接收到的密文c、承诺B与此次接收的响应Z,是否满足一定的数学运算关系,一个应用示例中可计算Znmod n2是否等于Bcqmod n2;如果相等,则表明密文c是零元0的加密。
具体在本实施例中,详细的基于交互型的证明零元知识协议PZK(c,m),针对第一参与方签名参数密文(本实施例中为第一签名因子密文和第三签名因子密文)进行证明知识协议的证明和验证时,对第一签名因子密文和第三签名因子密文的证明和验证可以不分先后顺序,并行执行。
以对第一签名因子密文进行证明和验证为例,详细的基于交互型的证明零元知识协议PZK(c,m)的证明和验证的详细过程可以包括如下步骤C1至步骤C4。
步骤C1:参与方1作为证明者,计算出第一签名因子密文,并计算承诺(本实施例中称为第一参与方承诺),并向参与方2发送第一证明消息,第一证明消息包括:第一签名因子密文与第一参与方承诺。
步骤C2:参与方2作为验证者,接收第一证明消息,并选择随机挑战(本实施例中称为第二参与方挑战),并将第二参与方挑战发送给参与方1。
步骤C3:参与方1接收第二参与方挑战,并基于第二参与方挑战计算出响应Z,本实施例中将基于参与方2返回的挑战生成的Z称为第五响应,并向参与方2发送第二证明消息,第二证明消息包括:第五响应。
一个实施例中,可以与第二参与方挑战和同态密码体制的相关参数计算出第五响应。
步骤C4:参与方2接收第二证明消息,并在第二证明消息和第一证明消息满足一定的数学运算关系时,证明参与方1知道第一签名因子密文对应的明文,完成证明和验证的过程。其中,第二证明消息和第一证明消息满足的运算关系,可以是第一签名因子密文和第一参与方承诺,与第五响应之间满足的数学运算关系,以上述示例中为例,例如可以是Znmodn2是否等于Bcqmod n2。
基于交互型的证明零元知识协议对第三签名因子密文的证明和验证过程,可以与上述基于交互型的证明零元知识协议对第一签名因子密文的证明和验证过程类似,在此不再展开赘述。
非交互型的证明零元知识协议NIPZK(c,m)的原理如下所述。在证明阶段,证明者基于明文m计算出密文c,并计算出承诺B。一个实施例中计算出的密文c可以是c=gmrnmodn2(如果m=0,则c=rnmod n2),承诺B可以是B=unmod n2,其中g、r、n均是同态密码体制的相关参数,随后,证明者计算挑战q,只要能够保证挑战q的随机性和不确定性,证明者可以通过任何可能的方式计算出挑战q,例如一个实施例中可通过哈希函数计算出挑战q,例如q=H(c||B)mod n,其中H(·)是安全哈希函数,并计算响应Z,一个实施例中计算出的响应Z可以为:Z=urqmod n2。然后,证明者将c、B和Z发送给验证者。在验证阶段,验证者计算挑战q=H(c||B)mod n,并计算接收到的密文c和承诺B,与接收到的响应Z,是否满足一定的数学运算关系,一个应用示例中可计算Znmod n2是否等于Bcqmod n2;如果相等,则表明密文c是零元0的加密。
具体在本实施例中,详细的基于非交互型的证明零元知识协议NIPZK(c,m),针对第一参与方签名参数密文(本实施例中为第一签名因子密文和第三签名因子密文)进行证明知识协议的证明和验证时,对第一签名因子密文和第三签名因子密文的证明和验证可以不分先后顺序,并行执行。
以对第一签名因子密文进行证明和验证为例,详细的基于非交互型的证明零元知识协议NIPZK(c,m)的证明和验证的详细过程可以包括如下步骤D1至步骤D4。
步骤D1:参与方1作为证明者,计算出第一签名因子密文,并计算承诺(本实施例中称为第一参与方承诺)。
步骤D2:参与方1作为证明者,计算挑战(本实施例中称为第一参与方挑战),并基于第一参与方挑战计算响应Z,本实施例中将基于参与方1自身生成的挑战生成的Z称为第六响应,并向参与方2发送证明消息,证明消息包括:第一签名因子密文、第一参与方承诺和第六响应。
一个应用示例中,可以基于第一参与方挑战和同态密码体制的相关参数计算出第六响应。
步骤D3:参与方2计算挑战(本实施例中称为第二参与方挑战),其中第二参与方挑战与第一参与方挑战相等,并基于第二参与方挑战,验证第一签名因子密文和第一参与方承诺,与第六响应之间满足一定的数学运算关系时,以上述示例中为例,例如可以是Znmodn2是否等于Bcqmod n2,证明参与方1知道第一签名因子密文对应的明文,完成证明和验证的过程。
基于非交互型的证明零元知识协议对第三签名因子密文的证明和验证过程,可以与上述基于非交互型的证明零元知识协议对第一签名因子密文的证明和验证过程类似,在此不再展开赘述。
据此,在本实施例中,在执行针对第一签名因子密文和第三签名因子密文的证明知识协议的证明和验证阶段时,可以结合上述方式,先进行针对第一签名因子密文和第三签名因子密文执行证明零元知识协议的证明和验证,如果证明零元知识协议的验证成功,则结束流程并退出,如果证明零元知识协议的验证失败,再针对第一签名因子密文和第三签名因子密文执行证明明文知识协议的证明和验证,如果证明明文知识协议的验证失败,则结束流程并退出。如果证明明文知识协议的验证通过,则进入后续的步骤。
参与方2生成第二私钥份额d2∈[1,n-1],该第二私钥份额d2可通过随机的方式生成,并基于第二私钥份额d2和第一公钥份额D1获得完整公钥D。一个实施例中,完整公钥D可以是被参与方1和参与方2乘法共享,此时D=d2D1=d1d2G=dG。另一个实施例中,完整公钥D可以是被参与方1和参与方2加法共享,此时,也可以是基于第二私钥份额d2计算出第二公钥份额D2=d2G之后,基于第一公钥份额D1和第二公钥份额D2获得完整公钥D=D1+D2=(d1+d2)G=dG。获得完整公钥D后,生成与完整公钥D对应的ECC数字证书。
参与方2生成第二临时私钥份额k2∈[1,n-1],该第二临时私钥份额k2∈[1,n-1]可通过随机的方式生成,并基于第二临时私钥份额k2和第一临时公钥份额K1获得完整临时公钥K=k2K1=k1k2G=kG=(x1,y1)。
随后,参与方2计算第二参与方签名份额,该第二参与方签名份额可以是ECC签名份额,该第二参与方签名份额可基于完整临时公钥K=(x1,y1)的参数x1而定,如第二参与方签名份额为r=x1mod n。若计算结果为r=0,则参与方2返回上述生成第二临时私钥份额的步骤,重新生成新的第二临时私钥份额,并重复上述过程。否则,进入后续的步骤。
随后,参与方2计算出第一参与方签名份额密文se。
一个实施例中,在完整公钥D被参与方1和参与方2乘法共享的情况下,参与方2可通过下述方式计算出第一参与方签名份额密文se。
参与方2计算第二签名因子a和第四签名因子b。一个实施例中,可以基于第二临时私钥份额k2和数据摘要e计算出第二签名因子a,如并基于第二临时私钥份额k2、第二私钥份额d2和第二参与方签名份额r计算出第四签名因子b,如在另一个实施例中,参与方2也可以在挑选盲化因子y(本实施例中称为第三盲化因子)后,基于第二临时私钥份额k2、数据摘要e和第三盲化因子y计算出第二签名因子a,如并基于第二临时私钥份额k2、第二私钥份额d2、第二参与方签名份额r和第三盲化因子y计算出第四签名因子b,如可以理解,在实际技术应用中,也可以采用其他的方式计算出第二签名因子a和第四签名因子b。
随后,参与方2基于第一签名因子密文ue、第二签名因子a、第三签名因子密文ve以及第四签名因子b进行合成,获得第一参与方签名份额密文se。可记为:
在另一个实施例中,在完整公钥D被参与方1和参与方2加法共享的情况下,参与方2可通过下述方式计算出第一参与方签名份额密文se。
参与方2计算第二签名因子a、第四签名因子b以及第五签名因子c。
一个应用实施例中,可以基于第二临时私钥份额k2和数据摘要e计算出第二签名因子a,如并基于第二临时私钥份额k2和第二参与方签名份额r计算出第四签名因子b,如并基于第二临时私钥份额k2、第二私钥份额d2和第二参与方签名份额r计算出第五签名因子c,如
在另一个应用实施例中,参与方2也可以在挑选盲化因子z(本实施例中称为第四盲化因子)后,基于第二临时私钥份额k2、数据摘要e和第四盲化因子z计算出第二签名因子a,如并基于第二临时私钥份额k2、第二参与方签名份额r和第四盲化因子z计算出第四签名因子b,如并基于第二临时私钥份额k2、第二私钥份额d2、第二参与方签名份额r以及第四盲化因子z计算出第五签名因子c,如可以理解,在实际技术应用中,也可以采用其他的方式计算出第二签名因子a、第四签名因子b和第五签名因子c。
此时,在计算出了第二签名因子a、第四签名因子b和第五签名因子c的情况下,参与方2可基于第一签名因子密文ue、第二签名因子a、第三签名因子密文ve、第四签名因子b以及第五签名因子c进行合成,获得第一参与方签名份额密文se。可记为:
在获得第一参与方签名份额密文se之后,参与方2向参与方1发送第二消息,第二消息包括第二参与方签名份额r和第一参与方签名份额密文se。
参与方1接收该第二消息,对第一参与方签名份额密文se进行解密,从而获得第一参与方签名份额s=Dec(Enc(se))=k-1(e+dr)mod n。如果获得的第一参与方签名份额s=0,则返回上述参与方2生成第二临时私钥份额的步骤,参与方2重新生成新的第二临时私钥份额,并重复上述过程。否则,获得的由第二参与方签名份额r和第一参与方签名份额s组成的签名对(r,s)就是合法的ECC签名。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (20)
1.一种协同ECC的数字签名方法,其特征在于,包括:
第一参与方计算待签名数据的摘要,获得数据摘要,并向第二参与方发送第一消息,所述第一消息携带所述数据摘要;
第二参与方接收所述第一消息;
第二参与方与第一参与方协同执行针对第一参与方签名参数密文的证明知识协议的证明和验证,所述第一参与方签名参数密文包括:对第一私钥份额进行加密获得的第一私钥份额密文,以及对第一临时私钥份额进行加密获得的第一临时私钥份额密文;
第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文;
第二参与方向第一参与方发送第二消息,所述第二消息携带所述第一参与方签名份额密文;
第一参与方解密第一参与方签名份额密文,获得第一参与方签名份额;
第二参与方与第一参与方协同执行对所述第一参与方签名参数密文的证明知识协议的证明和验证,包括:第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明知识协议的证明和验证;第二参与方与第一参与方协同执行对所述第一临时私钥份额密文的证明知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第一私钥份额密文的证明明文知识协议的证明和验证,包括:
第一参与方基于第一私钥份额计算出第一私钥份额密文,并计算第一参与方承诺;
第一参与方计算第一参与方挑战,基于第一参与方挑战计算第三响应和第四响应,并向第二参与方发送证明消息,所述证明消息包括:所述第一私钥份额密文、所述第一参与方承诺、所述第三响应和所述第四响应;
第二参与方计算第二参与方挑战,并基于第二参与方挑战,验证第一私钥份额密文和第一参与方承诺,与第三响应和第四响应之间满足预定的运算关系时,完成证明和验证的过程。
2.根据权利要求1所述的方法,其特征在于,第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文,包括:
第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文。
3.根据权利要求2所述的方法,其特征在于,第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文,包括:
第二参与方确定第一盲化因子;
第二参与方与第一参与方协同执行针对盲化临时签名份额密文的证明明文知识协议的证明和验证,所述盲化临时签名份额密文基于第一临时私钥份额密文、第二临时私钥份额以及第一盲化因子进行合成获得;
第一参与方与第二参与方协同执行针对第一盲化签名份额密文进行证明明文知识协议的证明和验证;通过解密所述盲化临时签名份额密文,获得盲化临时签名份额;并基于盲化临时签名份额获得第一盲化签名份额,加密所述第一盲化签名份额获得所述第一盲化签名份额密文;
第二参与方计算第二参与方签名份额;并基于第一盲化因子、第一盲化签名份额密文、第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,获得第一参与方签名份额密文。
4.根据权利要求3所述的方法,其特征在于:第一参与方对所述盲化临时签名份额取逆,获得所述第一盲化签名份额。
5.根据权利要求3所述的方法,其特征在于,第二参与方基于第一盲化因子、第一盲化签名份额密文、第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,获得第一参与方签名份额密文,包括:
第二参与方基于第一盲化因子和第一盲化签名份额密文进行合成获得第一子签名份额密文;
第二参与方对第一私钥份额密文、第二私钥份额、第二参与方签名份额和数据摘要进行合成,得到第二子签名份额密文;
第二参与方基于第一子签名份额密文和第二子签名份额密文进行合成,获得第一参与方签名份额密文。
6.根据权利要求1所述的方法,其特征在于,所述第一参与方签名参数密文包括:第一参与方对第一参与方生成的第一参与方签名因子进行加密获得的第一参与方签名因子密文。
7.根据权利要求1所述的方法,其特征在于,第二参与方基于完整临时公钥计算第二参与方签名份额。
8.根据权利要求1所述的方法,其特征在于,所述第一消息还携带第一参与方持有的第一公钥份额以及第一参与方持有的第一临时公钥份额;
第二参与方基于所述第一公钥份额以及第二参与方持有的第二私钥份额获得完整公钥,并基于所述第一临时公钥份额以及第二参与方持有的第二临时私钥份额获得完整临时公钥。
9.一种协同ECC的数字签名方法,其特征在于,包括:
第一参与方计算待签名数据的摘要,获得数据摘要,并向第二参与方发送第一消息,所述第一消息携带所述数据摘要;
第二参与方接收所述第一消息;
第二参与方与第一参与方协同执行针对第一参与方签名参数密文的证明知识协议的证明和验证,所述第一参与方签名参数密文包括:第一参与方对第一参与方生成的第一参与方签名因子进行加密获得的第一参与方签名因子密文,所述第一参与方签名因子包括:第一参与方生成的第一签名因子和第三签名因子,所述第一参与方签名因子密文包括:第一签名因子密文和第三签名因子密文;
第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要进行合成,获得第一参与方签名份额密文;
第二参与方向第一参与方发送第二消息,所述第二消息携带所述第一参与方签名份额密文;
第一参与方解密第一参与方签名份额密文,获得第一参与方签名份额;
第二参与方与第一参与方协同执行对所述第一参与方签名参数密文的证明知识协议的证明和验证,包括:第二参与方与第一参与方协同执行对所述第一签名因子密文的证明知识协议的证明和验证;第二参与方与第一参与方协同执行对所述第三签名因子密文的证明知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第一签名因子密文的证明知识协议的证明和验证,包括:第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证;第二参与方与第一参与方协同执行对所述第一签名因子密文的证明明文知识协议的证明和验证;
第二参与方与第一参与方协同执行对所述第一签名因子密文的证明零元知识协议的证明和验证,包括:
第一参与方计算出第一签名因子密文,并计算第一参与方承诺;
第一参与方计算第一参与方挑战,基于第一参与方挑战计算第六响应,并向第二参与方发送证明消息,所述证明消息包括:所述第一签名因子密文、所述第一参与方承诺和所述第六响应;
第二参与方计算第二参与方挑战,并基于第二参与方挑战,验证第一签名因子密文、第一参与方承诺与第六响应之间满足预定的运算关系时,完成证明和验证的过程。
10.根据权利要求9所述的方法,其特征在于:
第一参与方基于第一临时私钥份额计算出第一签名因子;
第一参与方基于第一临时私钥份额和第一私钥份额计算出第三签名因子。
11.根据权利要求9所述的方法,其特征在于:
第一参与方挑选第二盲化因子;
第一参与方基于第一临时私钥份额、第二盲化因子计算出第一签名因子;
第一参与方基于第一临时私钥份额、第一私钥份额和第二盲化因子计算出第三签名因子。
12.根据权利要求9至11任意一项所述的方法,其特征在于,第二参与方基于第二参与方的第二参与方签名份额、所述第一参与方签名参数密文以及所述数据摘要进行合成,获得第一参与方签名份额密文,包括:
第二参与方基于第二参与方的第二参与方签名份额以及所述数据摘要,生成第二参与方签名因子;
第二参与方基于第一参与方签名因子密文以及第二参与方签名因子进行合成,获得第一参与方签名份额密文。
13.根据权利要求12所述的方法,其特征在于,第二参与方签名因子包括第二签名因子和第四签名因子。
14.根据权利要求13所述的方法,其特征在于,第二参与方生成第二参与方签名因子,包括:
第二参与方基于第二临时私钥份额和数据摘要计算出第二签名因子;
第二参与方基于第二临时私钥份额、第二私钥份额和第二参与方签名份额计算出第四签名因子。
15.根据权利要求13所述的方法,其特征在于,第二参与方生成第二参与方签名因子,包括:
第二参与方挑选第三盲化因子;
第二参与方基于第二临时私钥份额、数据摘要和第三盲化因子计算出第二签名因子;
第二参与方基于第二临时私钥份额、第二私钥份额、第二参与方签名份额和第三盲化因子计算出第四签名因子。
16.根据权利要求12所述的方法,其特征在于,第二参与方签名因子包括第二签名因子、第四签名因子和第五签名因子。
17.根据权利要求16所述的方法,其特征在于,第二参与方生成第二参与方签名因子,包括:
第二参与方基于第二临时私钥份额和数据摘要计算出第二签名因子;
第二参与方基于第二临时私钥份额和第二参与方签名份额计算出第四签名因子;
第二参与方基于第二临时私钥份额、第二私钥份额和第二参与方签名份额计算出第五签名因子。
18.根据权利要求16所述的方法,其特征在于,第二参与方生成第二参与方签名因子,包括:
第二参与方挑选第四盲化因子;
第二参与方基于第二临时私钥份额、数据摘要和第四盲化因子计算出第二签名因子;
第二参与方基于第二临时私钥份额、第二参与方签名份额和第四盲化因子计算出第四签名因子;
第二参与方基于第二临时私钥份额、第二私钥份额、第二参与方签名份额以及第四盲化因子计算出第五签名因子。
19.根据权利要求9所述的方法,其特征在于,第二参与方基于完整临时公钥计算第二参与方签名份额。
20.根据权利要求19所述的方法,其特征在于,所述第一消息还携带第一参与方持有的第一公钥份额以及第一参与方持有的第一临时公钥份额;
第二参与方基于所述第一公钥份额以及第二参与方持有的第二私钥份额获得完整公钥,并基于所述第一临时公钥份额以及第二参与方持有的第二临时私钥份额获得完整临时公钥。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810796674.5A CN108964906B (zh) | 2018-07-19 | 2018-07-19 | 协同ecc的数字签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810796674.5A CN108964906B (zh) | 2018-07-19 | 2018-07-19 | 协同ecc的数字签名方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108964906A CN108964906A (zh) | 2018-12-07 |
CN108964906B true CN108964906B (zh) | 2021-05-28 |
Family
ID=64482015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810796674.5A Active CN108964906B (zh) | 2018-07-19 | 2018-07-19 | 协同ecc的数字签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108964906B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111565108B (zh) * | 2020-07-15 | 2020-11-24 | 北京信安世纪科技股份有限公司 | 签名处理方法、装置及*** |
CN113158258B (zh) * | 2021-03-31 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于椭圆曲线的协同签名方法、装置和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106789087A (zh) * | 2017-01-26 | 2017-05-31 | 数安时代科技股份有限公司 | 确定消息的数据摘要、基于多方的数字签名的方法及*** |
CN107682151A (zh) * | 2017-10-30 | 2018-02-09 | 武汉大学 | 一种gost数字签名生成方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016200885A1 (en) * | 2015-06-08 | 2016-12-15 | Blockstream Corporation | Cryptographically concealing amounts transacted on a ledger while preserving a network's ability to verify the transaction |
-
2018
- 2018-07-19 CN CN201810796674.5A patent/CN108964906B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685651A (zh) * | 2016-12-22 | 2017-05-17 | 北京信安世纪科技有限公司 | 一种客户端和服务端协作生成数字签名的方法 |
CN106789087A (zh) * | 2017-01-26 | 2017-05-31 | 数安时代科技股份有限公司 | 确定消息的数据摘要、基于多方的数字签名的方法及*** |
CN107682151A (zh) * | 2017-10-30 | 2018-02-09 | 武汉大学 | 一种gost数字签名生成方法及*** |
Non-Patent Citations (3)
Title |
---|
Fast Multiparty Threshold ECDSA with Fast Trustless Setup;Rosario Gennaro;《CCS"18-Session 6C: Crypto 3》;20180131;全文 * |
Fast secure two-party ecdsa signing;Yehuda Lindell;《Advances in Cryptology –CRYPTO 2017. Lecture Notes in Computer Science》;20170729;第10402卷;正文2-6节 * |
Yehuda Lindell.Fast secure two-party ecdsa signing.《Advances in Cryptology –CRYPTO 2017. Lecture Notes in Computer Science》.2017,第10402卷第613-644页. * |
Also Published As
Publication number | Publication date |
---|---|
CN108964906A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667625B (zh) | 协同sm2的数字签名方法 | |
CN107707358B (zh) | 一种ec-kcdsa数字签名生成方法及*** | |
Blake-Wilson et al. | Authenticated Diffe-Hellman key agreement protocols | |
US6490352B1 (en) | Cryptographic elliptic curve apparatus and method | |
US8918648B2 (en) | Digital signature and key agreement schemes | |
Schindler et al. | Ethdkg: Distributed key generation with ethereum smart contracts | |
CN114157427B (zh) | 基于sm2数字签名的门限签名方法 | |
Chang et al. | A threshold signature scheme for group communications without a shared distribution center | |
CN113507374B (zh) | 门限签名方法、装置、设备以及存储介质 | |
Fiore et al. | Making the Diffie-Hellman protocol identity-based | |
Al-Riyami | Cryptographic schemes based on elliptic curve pairings | |
WO2014205570A1 (en) | Key agreement protocol | |
JP2005253083A (ja) | 新しいフェア・ブラインド署名プロセス | |
CN104301108A (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN110011803A (zh) | 一种轻量级sm2两方协同生成数字签名的方法 | |
CN111030821B (zh) | 一种基于双线性映射技术的联盟链的加密方法 | |
US20160352689A1 (en) | Key agreement protocol | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
CN108964906B (zh) | 协同ecc的数字签名方法 | |
Wang et al. | Dynamic threshold ECDSA signature and application to asset custody in blockchain | |
CN108768634B (zh) | 可验证加密签名生成方法和*** | |
US20050135610A1 (en) | Identifier-based signcryption | |
EP2363976A1 (en) | Improved digital signature and key agreement schemes | |
CN116915414A (zh) | 一种实现门限签名的方法、计算机设备和存储介质 | |
WO2016187690A1 (en) | Key agreement protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |