CN117223252A - 嵌套阈值签名 - Google Patents
嵌套阈值签名 Download PDFInfo
- Publication number
- CN117223252A CN117223252A CN202280029290.5A CN202280029290A CN117223252A CN 117223252 A CN117223252 A CN 117223252A CN 202280029290 A CN202280029290 A CN 202280029290A CN 117223252 A CN117223252 A CN 117223252A
- Authority
- CN
- China
- Prior art keywords
- mic
- share
- participant
- signature
- participants
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 210000003918 fraction a Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/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
- H04L9/3255—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 using group based signatures, e.g. ring or threshold signatures
-
- 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
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- 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/321—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 a third party or a trusted authority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
一种要求参与者群组的子组中的至少一个参与者对阈值最优签名方案做出贡献的计算机实现的方法,其中有效签名包括第一签名组件和第二签名组件,其中每个参与者具有共享私钥的相应私钥份额、共享临时私钥的相应临时私钥份额、和所述第一签名组件,其中所述共享私钥只能使用至少第一阈值数量的相应私钥份额生成。
Description
技术领域
本公开涉及阈值数字签名,尤其涉及一种要求(即,确保)至少一个特定参与者对阈值签名方案做出贡献以生成阈值数字签名的方法。
背景技术
公钥密码学是一种使用密钥对的密码系统,该密钥对包括:私钥,其仅对私钥所有者已知;以及公钥,其是基于对应的私钥生成的,并且可以在不损害私钥安全性的情况下进行传播。
公钥密码学使得发送者能够使用接收者的公钥(即,与仅对接收者已知的私钥对应的公钥)来加密消息。该加密消息随后只能使用接收者的私钥进行解密。
类似地,发送者可以使用自己的私钥对消息进行签名,例如以证明该消息是由发送者发送的,和/或指示发送者同意该消息。签名者(即,生成签名的一方)使用他们的私钥基于该消息创建数字签名。基于消息创建数字签名意味着将该消息和私钥提供给基于该消息和私钥生成该签名的函数。该签名被添加到(例如,标记到)该消息中或以其他方式与该消息相关联。拥有签名者的对应公钥的任何人都可以使用同一消息以及该消息中的数字签名来验证签名是否有效创建,即签名是否确实是使用签名者的私钥创建的。除确保消息的真实性之外,数字签名还确保消息的完整性和不可否认性。也就是说,数字签名可以用于证明消息在使用该签名进行签名之后未更改,并且签名的创建者将来不能否认他们创建了该签名。
数字签名方案通常涉及三个过程,即算法。密钥生成算法用于生成随机私钥和对应的公钥。签名算法用于基于消息和私钥来生成签名。在给定公钥和消息的情况下,验证算法用于验证是否已使用对应的私钥并根据签名算法生成签名。
通常,共享秘密可以用于共享分布在参与者群组之间的数据项。每个参与者具有该秘密的不同份额。通常,只有当一定数量(称为“阈值”)的参与者提供其相应份额时才能重建该秘密,例如组合在一起以计算该秘密。共享秘密的常见用途是作为私钥-公钥对的共享私钥。也就是说,私钥可以分布在参与者群组之间,使得没有单个参与者能够访问该私钥。因此,没有单个参与者可以生成消息的有效签名。相反,一些或全部参与者必须共同生成该私钥才能生成该签名。
参与者可以使用阈值签名方案,而不是共享他们的私钥份额来生成签名。阈值签名方案允许群组中的阈值数量的参与者使用共享私钥的单独份额基于消息创建数字签名,而不向任何一个参与者提供该私钥。这里,数字签名是基于待签名消息生成的签名。在此类方案中,只有当阈值数量的参与者同意在消息中生成签名时,才能创建签名。使用较少数量的参与者生成签名的任何尝试都不会生成有效的签名。因此,该群组的有效签名(即,使用消息和共享私钥生成的签名)可证明具有阈值数量的人同意生成签名。这还意味着,任何攻击者都需要获取私钥的阈值数量的份额,才能使用该私钥伪造签名。
如果用于生成有效签名的阈值与共享私钥的阈值相同,则阈值签名方案被视为阈值最优(threshold-optimal)。
发明内容
阈值签名方案需要阈值数量的参与者做出贡献(即,参与)以生成有效签名。例如,一组参与者必须对阈值数量的签名份额做出贡献。在某些情况下,不仅需要阈值数量的参与者做出贡献,而且还需要阈值数量的特定参与者做出贡献。例如,在3/5(3-of-5)签名方案中,可能需要要求三个参与者中的一个是特定参与者,而不是简单地要求任何三个参与者做出贡献,使得除非该参与者做出贡献,否则其余四个参与者无法生成有效签名。
根据本文公开的一个方面,提供了一种要求参与者群组的子组中的至少一个参与者对阈值最优签名方案做出贡献的计算机实现的方法,其中有效签名包括第一签名组件和第二签名组件,其中每个参与者具有共享私钥的相应私钥份额、共享临时私钥的相应临时私钥份额、和所述第一签名组件,其中所述共享私钥只能是使用至少第一阈值数量的相应私钥份额来生成的,并且其中所述方法包括由属于所述子组的第一参与者执行以下步骤:获取所述第二签名组件的消息无关组件(MIC)的至少第二阈值数量的相应份额,其中所述MIC的每个相应份额是由相应参与者基于相应临时私钥份额、相应私钥份额和所述第一签名组件来生成的,其中所述MIC只能是使用所述MIC的至少所述第二阈值数量的相应份额来生成的,其中所述MIC的第一份额是由所述第一参与者生成的,并且其中仅所述子组中的一个或多个参与者能够利用所述MIC的所述相应份额;基于所获取的第二阈值数量的相应份额来生成所述MIC;以及,a)将所述MIC提供给协调者,以基于所述MIC和所述第二签名组件的消息相关组件(MDC)的所述第二阈值数量的相应份额来生成所述第二签名组件,所述MDC的每个相应份额是基于所述消息的哈希和相应临时私钥份额来生成的;和/或,)将所述MIC分割成多个二级MIC份额,其中需要第三阈值数量的所述二级MIC份额来生成所述MIC;以及将一个或多个相应二级MIC份额分配给所述群组中所述第三阈值数量的参与者中的相应参与者以生成所述MIC,并将所述MIC提供给协调者以生成所述第二签名组件。
本发明方案用于在阈值最优签名方案的签名协议期间要求一组特定参与者参与。在该方案中,有效签名由两个组件组成:第一签名组件,有时称为r组件;以及第二签名组件,有时称为s组件。反过来,所述s组件基于消息无关组件(MIC)和消息相关组件(MDC)。根据所述方案,有效签名(具体地,有效第二签名组件)需要由所述阈值数量的参与者对所述MIC的阈值数量的份额做出贡献,并且还需要有效MIC。已经认识到,通过将所述MIC的生成限制到所述参与者的子组,可以确保所述参与者子组中的至少一个参与者必须对所述方案做出贡献。如果所述参与者子组中没有参与者参与,则无法生成有效MIC,因此无法生成有效签名。相反,如果已经生成有效签名(其可以使用所述消息和与所述共享私钥对应的公钥来检查),则推断所述子组中的至少一个参与者一定已经做出贡献。
本发明方案在所述阈值签名方案中创建参与者的“嵌套阈值(nestedthreshold)”。也就是说,在可以生成相应MDC份额的所述参与者群组内,存在能够生成所述MIC并且因此需要生成有效签名的参与者子组。
从上面提到的3/5示例可以看出,所述方案可以在公司内用于生成重要文档(例如,合同)的签名。两个参与者可以是管理者,并且只有他们知道所述MIC,因此在创建签名的三个参与者中必须至少有一个管理者。不知道所述MIC的所述三个参与者无法创建签名。另一方面,如果三个参与者知道所述MIC,则只有两个参与者不知道所述MIC。为了创建签名,三个参与者的任何子集将必然包含知道所述MIC的参与者,因此在该示例中对谁可以签名没有限制。
在一些实施例中,一旦所述第一参与者计算所述MIC,则将其分割成多个“二级份额(secondary share)”,例如使用Shamir秘密共享方案(SSSS)对其分割。这些二级份额不同于从其他参与者接收并由所述第一参与者用来生成所述MIC的所述MIC的份额。为清晰起见,所述MIC的份额由参与者生成,然后用于生成所述MIC(例如,通过对所述MIC的所述份额进行内插)。然后,将由此产生的MIC分割成二级份额。需要所述MIC的阈值数量的二级份额来重建所述MIC。然后,将所述份额分发给参与者。在这种情况下,可以使用所述MIC的阈值数量的二级份额来重建所述MIC,然后将其提供给所述协调者,而不是要求所述第一参与者对所述MIC做出贡献。可以通过这种方式创建多个层级结构。例如,一家公司的所有者可以在CEO、CTO和CSO之间分发所述MIC,以便这三个参与者都必须参与签名。他们还可以根据单独的SSSS算法对其进行分割,并将二级份额分配给七个不同的管理者,其中至少五个管理者而不是三个高管管理者必须参与。
附图说明
为了帮助理解本公开的实施例并显示如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1示意性地示出了用于生成阈值签名的消息无关组件的示例性系统;
图2示意性地示出了用于生成阈值签名的消息无关组件的另一示例性系统;
图3示意性地示出了用于生成阈值签名的消息无关组件的示例性方法。
具体实施方式
1.加密概念
虽然就椭圆曲线密码学描述了以下示例,但是本发明并不限于任何一种特定的加密方案,并且通常可以应用于任何加密方案,例如RSA或其他公钥加密方案。
椭圆曲线群
椭圆曲线E满足以下等式:
y2=x3+ax+b mod p
其中和a,b是满足4a3+27b2≠0的常量。该椭圆曲线上的群被定义为满足该等式的元素集合(x,y)以及无穷远点/>该无穷远点是单位元素。对该群中元素进行的群运算称为椭圆曲线点加法,由+表示。该群由/>表示,其阶数由n表示。
该群运算可以用于定义对元素进行的另一种运算,称为点乘法,由·表示。对于点和标量/>点k·G被定义为与其自身相加k次的点G。
在椭圆曲线密码学中,私钥被定义为标量其中/>是集合{1,…,n-1}的符号,而对应的公钥是椭圆曲线上的点k·G。例如,在一些区块链协议中,椭圆曲线被选择作为secp256k1椭圆曲线,值a、b、和p完全由该曲线指定。在给定这些值的情况下,已经计算出该群的阶数n,在该曲线的情况下,该群的阶数是素数,并且secp256k1标准还指定了一个点G,该点将被用作该群的生成器。
椭圆曲线数字签名算法
为了使用私钥a在消息msg中创建签名,需要采取以下步骤:
1.计算消息摘要e=hash(msg),其中可以是任何哈希函数。例如,在一些示例中,hash(msg)=SHA256(SHA256(msg)),其中SHA256(■)是SHA-256哈希函数。应当注意的是,相比之下,该消息可以仅进行一次哈希处理,也可以使用相同或不同的哈希函数进行两次以上哈希处理。
2.选择一个随机整数k∈{1,…,n-1},其中n是椭圆曲线(例如,secp256k1曲线)的阶数。在下文中,k称为临时私钥。
3.计算与该临时私钥对应的临时公钥k·G=(Rx,Ry)。
4.计算r=Rxmod n。如果r=0,则返回步骤2。
5.计算临时密钥的乘法逆k-1mod n。
6.计算s=k-1(e+ar)mod n。如果s=0,则返回步骤2。
7.消息msg中的签名是(r,s)。
临时密钥必须保密,否则可以在给定消息和签名的情况下计算私钥。此外,每次生成签名时,必须使用不同的临时密钥。如果情况并非如此,则可以在给定两个不同的签名及其对应消息的情况下导出私钥a。
给定消息msg、公钥P=a·G和对应的签名(r,s),则可以通过完成以下步骤来验证签名:
1.计算消息摘要e=hash(msg),例如e=SHA256(SHA256(msg))。
2.计算以n为模数的s的乘法逆s-1。
3.计算j1=es-1mod n和j2=rs-1mod n。
4.计算点Q=j1·G+j2·P。
5.如果(无穷远点),则签名无效。
6.如果则使Q:=(Qx,Qy),然后计算u=Qxmod n。如果u=r,则签名有效。
在阈值签名方案中,该私钥a被分割为在阈值方案群中的参与者之间分发的密钥份额。
联合可验证随机秘密共享
假设N个参与者想要创建联合秘密,该联合秘密只能由该方案中的至少(t+1)个参与者重新生成。要创建共享秘密,请采取以下步骤:
1.参与者就每个参与者的唯一标签i达成一致。每个参与者i生成(t+1)个随机数
其中∈R表示集合中随机生成的元素,其中/>是集合{1,…,n-1}的符号。每个参与者具有t阶秘密多项式
fi(x)=ai0+ai1s+…+aitxtmod n,
其中i=1,…,N。应当注意的是,从现在开始省略符号mod n,并且假设对整数的所有算术运算都是以n为模数进行的。
2.每个参与者i将该值fi(j)发送给参与者j,例如仅使用与参与者j的安全通信通道。
3.每个参与者i根据以下等式计算自己的共享秘密多项式的秘密份额
共享秘密份额是采用形式(i,ai)的点,其中i是方案中的参与者标签。如步骤1-3中所述,对于参与者i,这种用于创建秘密份额a的方法在本文中由ai=JVRSS(i)表示。应当注意的是,“JVRSS”通常表示“联合验证随机秘密共享”,并且还包括步骤4和步骤5。然而,在本文中,JVRSS被理解为至少执行步骤1至步骤3,其中步骤4和步骤5是可选步骤。
此时,参与者已生成共享多项式,这些参与者中的每个参与者可以验证其他参与者已将正确的信息共享给所有参与者,同时验证所有参与者具有相同的共享多项式。这可以通过以下方式实现。
4.每个参与者i将混淆系数广播给所有参与者
aik·G,
其中k=0,…,t。
5.每个参与者i核实每个参与者j已通过以下方式正确计算多项式点fj(i):计算fj(i)•G,然后验证
如果所有参与者发现该等式对于每个多项式都成立,则该群可以共同确定他们均已创建相同的共享多项式。
重建共享秘密
假设参与者想要重建共享秘密a,该共享秘密是共享多项式的零阶。在给定采用以下形式的该多项式上的(t+1)个点的情况下,
(1,a1),…,((t+1),at+1),
然后,为了找到共享秘密a,需要计算
其可根据称为“拉格朗日插值法”的一般公式推导出。
公钥计算
在给定JVRSS的步骤4中共享的N个零阶私有多项式系数公钥ai0·G(其中i=1,…,N)的情况下,每个参与者使用以下等式计算共享公钥P
对应于共享秘密a。
共享秘密的加法
为了计算在N个参与者的群组之间共享的两个共享秘密的和,其中每个秘密多项式的阶数为t,而任何实体都不知道各个秘密,请采取以下步骤:
1.生成第一共享秘密a,其中参与者i的份额通过ai=JVRSS(i)得出,其中i=1,…,N,阈值为(t+1)。
2.生成第二共享秘密b,其中参与者i的份额通过bi=JVRSS(i)得出,阈值为(t+1)。
3.每个参与者i计算自己的加法份额
νi=ai+bimod n。
4.所有参与者将他们的加法份额vi广播给所有其他参与者。
5.每个参与者对份额vi中的至少(t+1)个份额进行内插以计算
v=interpolate(v1,…,vt+1)=a+b。
对于参与者i,这种用于将共享秘密相加的方法由ADDSS(i)表示,这会使得每个参与者i知道v=(a+b)。
共享秘密的乘积
为了计算在N个参与者的群组之间共享的两个共享秘密的乘积,其中每个秘密多项式的阶数为t,该组参与者需要采取以下步骤:
1.生成第一共享秘密a,其中参与者i的份额通过ai=JVRSS(i)得出,其中i=1,…,N。共享秘密多项式的阶数为t,这意味着(t+1)个参与者需要重新创建该共享秘密多项式。
2.生成第二共享秘密b,其中参与者i的份额通过bi=JVRSS(i)得出,并且共享秘密多项式的阶数再次为t。
3.每个参与者使用以下等式计算自己的乘法份额μi
μi=aibi。
4.所有参与者将他们的乘法份额μi广播给所有其他参与者。
5.每个参与者对0处份额μi中的至少(2t+1)个份额进行内插以计算
μ=interpolate(μ1,…,μ2t+1)=ab。
对于参与者i,这种用于计算两个共享秘密的乘积的方法在本文中由μ=ab=PROSS(i)表示。
共享秘密的逆
为了计算共享秘密a的逆,需要采取以下步骤:
1.所有参与者计算共享秘密的乘积PROSS(i),其结果是μ=ab mod n。
2.每个参与者计算μ的模逆,其结果是
μ-1=(ab)-1mod n。
3.每个参与者i通过计算以下内容来计算自己的逆秘密份额
对于参与者i,这种用于计算共享秘密的逆的方法由表示。
共享私钥生成与验证
为了计算N≥2t+1个参与者之间的共享私钥a,其中t+1个参与者需要创建签名,参与者通过阈值t+1执行JVRSS以及执行如上所述的公钥计算。结果是每个参与者i=1,…,N具有私钥份额ai和对应的共享公钥P=(a·G)。
临时密钥份额生成
为了根据签名中的要求生成临时密钥份额和对应的r,大小为N的群组(具有共享私钥a,阈值为(t+1))需要执行以下步骤:
1.生成共享秘密的逆份额其中需要(t+1)个份额才能重新创建。
2.每个参与者通过以下方式计算
使用在验证ki时共享的混淆系数,然后计算
r=x mod n。
3.每个参与者i存储
具有不同阈值的秘密的加法运算
在将阶数为t和t′的秘密相加的情况下,计算这两个秘密的和需要max(t,t′)+1个份额。原因在于,共享秘密的份额的加法运算步骤创建了新多项式的份额。这个新的加法多项式等同于两个共享秘密的单独多项式的加法运算结果。将两个多项式相加是将每个阶数x的对应系数相加。因此,加法多项式的阶数必须与两个多项式中的最高阶数相同。这可以推广到将两个以上多项式相加,其中所得到的多项式的阶数与具有最高阶数的单个多项式的阶数相同。
一旦计算出具有不同阈值的两个秘密的和,具有较高阈值的秘密的安全性会降低。这是因为,如果现在知道具有相应阈值t、t′的结果(a+b),并且假设t<t′,则可以使用t个份额计算a,然后计算(a+b)-a=b,因此已仅使用t个份额计算值b。该较低阈值在下文中称为b的“隐含阈值”。
具有不同阈值的秘密的乘法运算
在将具有阈值t和t′的两个秘密相乘的情况下,计算乘积需要t+t′+1个份额。在这种情况下,将两个多项式的份额相乘会得到新多项式的份额。这个新多项式是将两个单独多项式相乘得出的结果,因此该结果的阶数是两个单独多项式的阶数的和。
乘法运算还可以推广到任意数量的共享秘密,所得到的阈值是各个阈值加1的总和,即∑ρtρ+1,其中ρ遍历各个共享秘密。
与加法运算类似,将具有不同阈值的两个秘密相乘会得到具有较高阈值的秘密的隐含阈值。如前所述,如果知道ab,其中a具有阈值t且b具有阈值t′,并且t<t′,则a和b都可以使用t个份额来计算。首先,可以仅使用秘密的t个份额来计算a,并使用(ab)a-1求出b。
在一个步骤中组合共享秘密的加法运算和乘法运算
可以将上述内容概括为在一个步骤中计算加法运算和乘法运算的任意组合。假设N个参与者的群组想要计算结果ab+c,其中a、b、c是分别具有阈值(ta+1)、(tb+1)、(tc+1)的共享秘密。条件是max(ta+tb,tc)<N,也就是说,本发明方案中的参与者的数量必须大于秘密c的阶数与秘密a和b的乘法运算结果的阶数之间的最大值。
1.每个参与者i计算其分别具有阈值(ta+1)、(tb+1)、(tc+1)的秘密份额ai=JVRSS(i)、bi=JVRSS(i)和ci=JVRSS(i)。
2.每个参与者i计算份额λi=aibi+ci。
3.每个参与者i与其他参与者共享结果λi。
4.每个参与者对max(ta+tb,tc)+1个份额进行内插,以求出结果λ=int(λ1,…,λi,…)=ab+c。
这在根据以下一些实施例计算共享签名时完成。也就是说,对进行内插。上述用例基本如此,其中/>且/>在这种情况下,ta+tb=2t且tc=t,并且插值超过max(ta+tb,tc)+1=2t+1个份额。
2.嵌套阈值
图1示出了用于生成阈值签名的消息无关组件(MIC)的示例性系统100,更具体地,用于生成该阈值签名的组件的示例性系统100。如图所示,系统100包括多个(即,一组)参与者(例如,用户、机器等)102。参与者也可以称为当事方或实体。参与者102中的每一个操作相应的计算设备。
相应的参与者102的相应计算设备中的每一个包括相应的处理装置,所述处理装置包括一个或多个处理器,例如一个或多个中央处理单元(CPU)、加速器处理器(GPU)、专用处理器和/或现场可编程门阵列(FPGA)。相应计算设备还可以包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。相应计算机设备可以包括至少一个用户终端,例如台式电脑或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。替代地或附加地,相应计算设备可以包括一个或多个其他联网资源,例如经由用户终端访问的云计算资源(该云计算资源包括在一个或多个站点实现的一个或多个物理服务器设备的资源)。应当理解的是,被描述为由系统100的一方执行的任何动作可以由该方操作的相应计算设备执行。
参与者102中的每一个被配置为通过使用LAN或WAN连接的互联网或经由替代的有线或无线通信手段将数据传输给其他参与者102中的一个、一些或全部。除非上下文另有要求,否则对传输数据的参与者102的引用可以理解为:例如,经由两个参与者之间的安全通信信道单独将数据传输给其他参与者102;或者,例如,经由电子邮件或其他手段将数据广播给一组参与者。同样,除非上下文另有要求,否则每个参与者102可以原始形式传输数据,也可以加密形式传输数据。例如,在将数据发送给接收方参与者之前,可以使用该接收方参与者的公钥来加密数据。
在图1中,该组参与者包含五个参与者。应当理解的是,这仅仅是为了便于说明,并且通常该组可以包含任意数量的参与者。图1中还示出了该组参与者的子组(用虚线包围)。在该示例中,该子组由第一参与者和第二参与者组成,但这也仅仅是为了便于说明。应当注意的是,除非上下文另有要求,否则“第一”、“第二”等仅用作区分标签,并不一定意味着顺序、层级结构等。
系统100还包括协调者101。该协调者可以是该参与者子组中的一个参与者,例如第一参与者。或者,协调者101可以是单独的实体。如上结合参与者102所述,该协调者操作相应计算机设备。
协调者101是使用一组参与者102中的相应参与者生成的阈值数量的签名份额来发起签名的一方(见下面的描述)。换言之,协调者101在待签名消息中(亦即,为待签名消息)生成签名。同样,应当注意的是,在消息中生成签名意味着签名依赖于待签名消息,或者换句话说,签名是待签名消息的函数。协调者101还可以是将签名以及(可选地)消息发送给第三方103或以其他方式输出签名的一方。例如,第三方103可以是认证机构或其他形式的机构或其他用户。在其他示例中,例如,签名可以记录在数据库或其他文档中。在一些示例中,签名可以向公众提供,例如,记录在网站或其他可公开访问的媒体上。
协调者101可以将待签名消息传输给参与者102。消息可以传输给所有参与者102,也可以传输给参与者的子集(例如,阈值数量的参与者)。协调者101可以将消息传输给一个参与者,该参与者然后将消息转发给其他参与者中的一个、一些或全部参与者。消息可以使用LAN或WAN连接通过互联网传输,也可以通过替代的有线或无线通信方式传输。例如,消息可以通过协调者101与每个参与者102之间的安全通信通道单独地传输给每个参与者102,也可以通过电子邮件或其他方式整体广播给该组参与者。消息可以原始形式或加密形式传输。例如,消息可以进行一次或多次哈希处理。
参与者102中的一个或多个参与者可以通过替代方式(即,不从协调者101)获取消息。例如,消息可以由参与者102中的一个参与者生成,或以其他方式(例如,公开)提供。一个或多个参与者102可以从第三方103接收消息。获取消息的参与者102可以将消息(以原始或加密形式)传输给一个或多个其他参与者102。例如,第一参与者102可以将消息传输给其他参与者。
该组参与者中的每个参与者具有(例如,在存储器中存储)共享私钥的相应份额。该共享私钥实际上是数据项。
技术人员将熟悉用于生成私钥的份额的技术。作为说明性示例,每个参与者可以参与联合可验证秘密共享方案(JVRSS)以生成共享私钥的相应份额。例如,第一参与者102a可以被配置为,使用上述JVRSS技术,来生成私钥a的第一私钥份额a1。也就是说,第一参与者102a可以具有索引1,并且对于参与者1,使用a1=JVRSS(1)来生成第一私钥份额,其中该私钥由a表示。每个参与者102可以生成相应的私钥份额ai。例如,对于参与者2,第二参与者102b可以使用a2=JVRSS(2)来生成第二私钥份额,依此类推。
使用联合秘密共享方案生成第一私钥份额a1可以包括:生成一组数字然后生成第一多项式f1(x)=a10+a11x+…+a1txtmod n,其中该组数字是多项式的系数。其他参与者102中的每个参与者可以使用相应一组数字生成相应多项式。例如,第二参与者102b生成第二多项式f2(x)=a20+a21x+…+a2txtmod n。然后,参与者102将在每个其他参与者的索引处评估的相应函数的值传输给该其他参与者。例如,第一参与者102a评估第二参与者102b的f1(2),然后将该值传输给第二参与者102b;评估第三参与者102c的f1(3),然后将该值传输给第三参与者102c,依此类推。第一参与者102a获取其他参与者102生成的作为第一参与者的索引的函数的相应值。这些值可以通过互联网或通过其他方式传输。这些值可以通过相应参与者对之间的相应安全通信通道传输。一个或多个参与者102(例如,第一参与者102a)可以广播而不是直接传输他们的相应值。在从至少阈值数量的参与者获取至少阈值数量的值之后,第一参与者102a基于第一值和所获取的每个其他数据值(例如,f2(1)、f3(1)等)来生成第一私钥份额。
第一参与者102a可以基于一组混淆系数来计算对应的公钥a·G,其中这些系数用于生成每个参与者102的相应私钥份额ai。换言之,生成临时私钥份额ki时,每个参与者102可以与每个其他参与者102共享混淆系数aij·G。这些系数由所选椭圆曲线上的公共生成点·G进行混淆。这些混淆系数可以在参与者102之间直接传输,也可以广播给该组。例如,第一参与者102a可以广播混淆系数a10·G、a11·G、a12·G等。然后,与私钥对应的公钥可以通过以下等式计算
应当理解的是,不需要生成对应的公钥来生成私钥份额ai,因此,这是参与者102可以在他们选择的情况下实现的可选特征。
应当注意的是,私钥份额ai可以使用替代方法(即,不使用上述JVRSS方法)来生成。用于生成私钥的份额的方法本身在本领域中是公知的。类似地,用于分发私钥的份额(或其他此类数据)的方法本身在本领域中是公知的。也就是说,私钥份额ai可以多种方式生成。例如,分配者(dealer)(例如,参与者102中的受信任的参与者、或独立方)可以(例如使用Shamir的秘密共享方案来)生成和分发私钥份额ai中的一个、一些或全部私钥份额。WO2017145010A1中描述了可以用于生成和分发私钥份额ai的一种此类方案。
无论用于生成私钥份额的具体方法如何,参与者102的第一群组中的每一个具有(例如,存储)私钥a的相应私钥份额ai。
该组参与者中的每个参与者还具有(例如,在存储器中存储)共享临时密钥k的相应份额ki。例如,第一参与者具有第一临时密钥份额k1,第二参与者具有第二临时密钥份额k2,等等。该共享临时密钥的份额可以使用JVRSS、Shamir秘密共享方案或替代技术来生成。
除了相应私钥份额和相应临时密钥份额之外,该组参与者中的每个参与者还具有(例如,在存储器中存储)阈值签名的第一组件(“第一签名组件”)。这有时称为r值。为完整起见,第二签名组件有时称为s值,并将在下面详细描述。第一签名组件基于与共享临时密钥对应的公钥,并且更具体地,基于与共享临时密钥对应的公钥的x组件。例如,第一签名组件可以计算为r=x mod n,如预备知识部分中所述。
应当注意的是,除了存储其相应共享临时密钥份额之外,该组参与者中的一些或全部参与者可以存储共享临时密钥的逆份额在一些示例中,这计算为
现在返回到第二签名组件。根据阈值签名方案,第二签名组件基于消息无关组件(MIC)和消息相关组件(MDC)。只有当MDC的阈值数量的份额可用时,才能生成有效签名,其中,由于该方案的阈值最优性质,该阈值数量与共享私钥的阈值数量相同。因此,需要该组中至少阈值数量的参与者来生成MDC的相应份额,并将其相应份额提供给协调者101。由相应参与者生成的MDC的每个份额至少基于相应临时密钥份额和要签名的消息的哈希。由于每个参与者具有所需的数据(即,临时密钥份额和要签名的消息或其哈希),因此该组参与者中的任何参与者可以生成MDC的有效份额。在一些示例中,每个参与者可以根据生成MDC的份额,其中是e经过哈希处理的消息。然后,协调者可以基于MDC的至少阈值数量的份额(例如,通过对MDC的份额进行内插)来生成MDC。
因此,为了限制必须对签名方案做出贡献(即,参与)的一个或多个参与者,对可以生成MIC的参与者(应当记住的是,需要MIC才能生成有效签名)做出限制。具体地,只有子组中的那些参与者(“嵌套阈值”)能够生成MIC。下面将根据生成MIC的第一参与者102a来描述,但是该子组中的任何参与者(例如,第二参与者102b)通常可以相同方式生成MIC。
第一参与者102a基于第一临时密钥份额k1、第一私钥份额a1和第一签名组件r来生成MIC份额。例如,第一参与者可以根据生成MIC的第一份额,其中通常每个参与者(包括该组中的每个参与者)可以根据/>生成MIC的相应份额。
由于MIC的相应份额基于两个阈值份额(即,临时密钥份额和私钥份额),因此MIC需要计算第二阈值数量的份额,其中第二阈值不同于私钥份额的阈值数量。因此,第一参与者102a从其他参与者接收MIC的相应份额,直到第一参与者102a已经获取MIC的至少第二阈值数量的份额,包括由第一参与者102a生成的MIC的第一份额。然后,使用所获取的MIC的份额,第一参与者102a例如通过对MIC的至少第二阈值数量的份额进行内插来生成MIC。
通过要求只有该子组中的参与者能够接收MIC的相应份额,对可以生成MIC的参与者做出限制。也就是说,该组中不属于该子组(即,嵌套阈值)的参与者仅将其MIC的相应份额发送给该子组中的参与者。在一些示例中,这些参与者仅将其相应份额发送给第一参与者102a。无论第一参与者是否是该子组中的唯一参与者,情况都可能如此。如果该子组包括多个参与者,则第一参与者102a可以选择将其MIC的份额(MIC的第一份额)发送给该子组中的一个或多个其他参与者。优选地,该子组中的每个参与者接收MIC的所有份额,使得该子组中的每个参与者可以生成MIC。这样做是为了防止单点故障。
应当注意的是,由于MIC不需要知道消息,因此可以预先计算MIC。换句话说,可以在获取消息之前生成MIC。因此,可以预先计算多个不同的MIC,每个MIC用于生成不同的相应签名份额s1′,以对不同消息进行签名,其中素数(′)指示它是第一签名份额的不同实例。
在一些示例中,每个参与者102可以具有(例如,在存储器中存储)共享盲钥的相应份额。盲钥份额用于混淆或以其他方式“盲化”或“隐藏”另一密钥份额或数据项。也就是说,可以对第一密钥份额应用盲钥份额以隐藏第一密钥份额,使得可以在不泄露第一密钥份额的情况下共享所得到的密钥份额。在简单的示例中,第一密钥份额可以是100,并且盲钥份额可以是74,使得能够共享数量174。现在,在不知道盲钥份额为74的情况下,接收方无法确定第一密钥份额。应当理解的是,实际上,密钥份额的数量可能更大。可以使用JVRSS或替代技术来生成盲钥份额。在这些示例中,基于共享盲钥的相应份额来生成MIC的每个份额和MDC的每个份额。例如,第一参与者102a可以根据生成MIC的第一份额,并且可以根据/>生成MDC的第一份额。为了解盲钥份额的工作机制,以MDC的第一份额为例。如果不使用盲钥份额,则当协调者接收MDC的第一份额时,假设协调者可以访问消息或其哈希,协调者可以导出逆临时密钥份额。在某些情况下,这可能是有问题的。相反,在某些情况下,这可能没有问题,因此不需要使用盲钥份额。
在一些实施例中,第一参与者102a向协调者101发送MIC,以基于MDC和MIC来生成第二签名组件。此外,不排除第一参与者102a可以执行协调者101的角色,在这种情况下,不需要将MIC发送给不同的实体。然后,使用第一签名组件和第二签名组件(r,s)来生成完整的有效签名,例如(r,s=interpolate(s1,…,st+1)+λ),其中在这种情况下第一阈值是t+1。
然后,协调者101可以将签名广播或传输给一个或多个其他实体。附加地或替代地,例如,协调者可以将签名存储在电子邮件或其他文档中和/或将签名作为数字记录的一部分记录在电子邮件或其他文档中。例如,消息可以是区块链事务(transaction)的一部分或全部。签名可以包括在该区块链事务中(如果消息只是区块链事务的一部分),也可以包括在不同的区块链事务中。
在其他实施例中,如图2所示,第一参与者102a将MIC分割成多个二级MIC份额,而不是将MIC发送给协调者101(或生成第二签名组件)。应当注意的是,二级MIC份额不同于相应参与者生成的MIC份额,其可以称为主要MIC份额,以与第一参与者102a生成的二级MIC份额区分开来。可以使用Shamir秘密共享方案等(密钥)分割方案来分割二级MIC份额。可以使用其他方案来代替。分割MIC,使得需要至少第三阈值数量的二级MIC份额来重建MIC。
在将MIC分割成多个二级MIC份额之后,第一参与者102a将相应二级MIC份额中的一些或全部二级MIC份额发送给第二子组中的相应参与者。在一些示例中,第一参与者102a保留至少一个二级MIC份额。在一些示例中,除了第一参与者102a可以保留的那些二级MIC份额之外,第一参与者可以删除二级MIC份额中的一些或全部二级MIC份额。
在这些实施例中,创建第二子组,由此可以由第二子组中第三阈值数量的参与者创建MIC。第二子组可以不同于第一子组(如图2所示),或者第一子组中的一个或多个参与者也可以属于第二子组。如上所述,第二子组中至少第三阈值数量的参与者可以一起重建MIC,并将MIC提供给协调者101以生成第二签名组件。第二子组可以提名一位领导者来收集所需数量的二级MIC份额。
图3示出了用于生成阈值签名的消息无关组件的示例性方法300。在步骤S301中,第一参与者102a生成MIC的份额。在步骤S301中,第一参与者102a从一组中的相应参与者接收MIC的相应份额,直到第一参与者102a已经获取足够的份额来生成MIC。在步骤S303中,第一参与者102a生成MIC。在步骤S304中,第一参与者102a将MIC发送给协调者101。作为另一选项,在步骤S305中,第一参与者102a将MIC分割成二级MIC份额。然后,在步骤S306中,第一参与者102a将二级份额分发给第二子组中的参与者。
现在结合GB2005953.1中公开的阈值最优ECDSA签名方案来描述所述实施例的特定示例,其中需要一组N≥2t+1个参与者中的t+1个参与者的阈值来创建签名。通过利用签名可以被分割成消息相关组件和消息无关组件这一事实来实现最优性。预先计算消息无关项,这会导致只需要与参与者的私钥数量相同的阈值来创建签名,从而实现最优性。在该方案的一个版本中,可以预先计算消息无关组件,并将其添加到包含消息相关组件(MDC)的各个签名份额,对各个签名份额进行内插以创建有效签名。或者,可以在对签名份额本身进行内插之后添加MIC。明确地说,MIC是λ=k-1ar+β,其是通过对的2t+1个份额和定义为/>的签名份额进行内插来计算的,签名是
(r,s=interpolate(s1,…,st+1)+λ)。
该方案没有描述知道MIC的参与者,只是将MIC用于签名。为了创建通常的签名方案,其中N中的任何t+1可以进行签名,假设该MIC与所有参与者共享。然而,可以特定方式共享该MIC,以创建特定参与者参与签名的要求。
在以下场景中,由于至少一个参与者接收份额并计算结果λ,因此他们将始终知道MIC。
这样做的目的是创建参与者的子集,其中至少一个参与者必须参与签名。该子集的大小称为方案的嵌套阈值(nested threshold),并且假设该子集的大小至多为N-(t+1),否则所有子集将包含这些所需参与者中的一个参与者。为了实现参与者的该嵌套子集(nested subset),所有参与者仅将其份额λi发送到该嵌套子集。然后,该子集中的每个参与者可以使用对份额的插值显式地计算MICλ。然后,为了创建签名,参与者的该嵌套子集中的至少一个参与者必须出现在签名协议中,并且可以与签名的协调者共享值λ,然后该协调者能够使用
(r,s=interpolate(s1,…,st+1)+λ)来计算签名,其中
该嵌套子组的大小可以低至一个参与者。然而,在这种情况下,必须知道的是,这会在方案中产生单点故障,其中如果该值λ丢失,则需要重复协议以重新创建λ。
为了说明该嵌套阈值理念,以一家公司内部使用的3/5方案为例。两个参与者可以是管理者,并且只有他们知道MIC,因此在创建签名的三个参与者中必须至少有一个管理者。不知道所述MIC的所述三个参与者无法创建签名。另一方面,如果三个参与者知道MIC,则只有两个参与者不知道MIC。为了创建签名,三个参与者的任何子集将必然包含知道MIC的参与者。因此,对谁可以签名没有限制,这与通常的方法相同,即所有参与者都知道MIC。
可以创建参与者的多个嵌套子集。如上所述,始终会有至少一个参与者知道完整的MIC。知道MIC的任何参与者可以使用Shamir秘密共享方案(SSSS)将MIC分割成多个份额,这些份额可以在其他参与者之间分发。在这种情况下,知道完整的MIC的参与者必须出现在签名中,或者至少SSSS方案的阈值必须出现在较低层级结构中。可以通过这种方式创建多个层级结构。这通过引入多数参与者做出联合决策来减少对权限的依赖。例如,一家公司的所有者可以在CEO、CTO和CSO之间分发所述MIC,以便这三个参与者都必须参与签名。他们还可以根据单独的SSSS算法对其进行分割,并将其分配给七个不同的管理者,其中五个管理者而不是两个高管管理者必须参与。
下面描述用于为消息生成签名的示例性方法,以说明如何根据本发明实施例将其修改为要求特定参与者参与。步骤S401至步骤S408由该示例中阈值数量的参与者102中的每个参与者(包括第一参与者102a)执行。步骤S409由协调者101执行,该协调者也可以是执行步骤S401至步骤S408的参与者中的一个参与者。应当理解的是,这些步骤中的一些步骤可以省略,也可以按照不同的顺序执行。
示例性方法400使得能够在N≥2t+1个参与者的群组中创建阈值为(t+1)的共享秘密,其中签名阈值也是(t+1)。
设置:
在步骤S401中,每个参与者102计算共享私钥份额ai′和对应的公钥。上面已经描述了私钥份额ai′的生成。此时,每个参与者i具有秘密密钥份额和公钥(ai′,P),其中P是与共享私钥对应的公钥的符号。共享私钥的阈值为(t+1)。
预先计算:
在步骤S402中,每个参与者102计算共享临时密钥份额和对应的公钥。例如,每个参与者102可以使用JVRSS和预备知识部分给出的公钥计算来计算共享临时密钥。然后,每个参与者102可以基于临时私钥来计算逆份额。这会导致每个参与者具有逆份额阈值为(t+1)。
在步骤S403中,每个参与者102创建两个不同的共享盲钥份额。例如,每个参与者102可以创建两个共享秘密,使得参与者i具有份额αi=JVRSS(i)和βi=JVRSS(i),每个共享秘密的阈值为(t+1)。应当注意的是,在一些示例中,并不是所有共享秘密都需要具有相同的阈值。
在步骤S404中,每个参与者102计算中间份额,并将其中间份额广播给其他参与者。例如,每个参与者i可以计算中间份额该值的阈值为(2t+1)。
在步骤S405中,第一参与者102a至少基于中间份额来计算中间值。例如,第一参与者102a可以通过使用对(2t+1)个份额λ=interpolate(λ1,…,λ2t+1)=k-1ar+β的插值来计算中间值。
在步骤S406中,第一参与者102a知道并将其与私钥份额和对应的公钥(ai,P)一起存储。
应当注意的是,由于每个签名使用不同的临时密钥,因此可以一次设置多个临时密钥,即,可以重复步骤S402至步骤S406以在预先计算过程中创建多个临时密钥,并存储它们以供后续使用。这些操作可以同时执行,因此不需要额外的通信轮次。应当注意的是,优选地,应为每个签名使用不同的α和β值。
签名生成:
为了对消息msg进行签名,至少(t+1)个参与者必须执行步骤S407和步骤S408。在步骤S407中,至少阈值数量的参与者102获取待签名消息并计算消息摘要。例如,协调者101可以将请求发送给(t+1)个参与者,以在消息msg中创建签名份额。每个参与者i可以计算消息摘要e=hash(msg)。在一些示例中,该哈希函数是双SHA-256哈希函数。可以使用替代的哈希函数。
在步骤S408中,至少阈值数量的参与者102计算签名份额并将其发送给协调者101。例如,每个参与者i可以计算他们的签名份额然后将该签名份额(r,si)发送给协调者。应当注意的是,该值r可能不是由所有参与者发送的。
在步骤S409中,协调者101计算签名。例如,协调者101可以计算s=interpolate(s1,…,st+1)+λ=k-1e+k-1ar,最终计算签名(r,s)。这会生成预期的签名份额,因为β项会取消。该协议的类似变体可以如上所述描述何时将(kα)-1和r纳入计算中。
应当注意的是,秘密的阈值可以不同。换言之,执行签名生成方案时,a、k、α、β本身的阈值不必相同。例如,如果有六方组成的群组,并且三方需要创建签名和/或私钥,则从技术上讲,他们可以在k的阈值为四且其他共享秘密的阈值为三的情况下进行计算,并且他们将仍然拥有阈值最优方案。
应当注意的是,本发明可以应用于任何阈值签名方案(无论是最优还是非最优),并且不限于上述图4的示例。
一般而言,本发明的实施例能够用于在任何消息中生成签名。作为特定示例性用例,消息可以是区块链事务的一部分或全部。换言之,签名可以用于对区块链事务的一个或多个输入和/或一个或多个输出进行签名。例如,所生成的签名可以至少部分地用于解锁区块链事务的输出。作为特定示例,先前事务的输出可以是支付到公钥哈希(P2PKH)输出,该输出锁定到公钥哈希。为了解锁,引用P2PKH输出的后续事务的输入需要包括(未经哈希处理的)公钥以及基于与公钥对应的私钥生成的签名。
脚本中表示的“锁定脚本Locking script”和“解锁脚本Unlocking script”可以采取以下形式:
Locking script=OP_DUP OP_HASH160<Public KeyHash>OP_EQUAL OP_CHECKSIG
Unlocking script=<Signature><Public Key>
参考上述实施例,<Public Key>可以等同于P=a·G,并且<Signature>包括阈值签名s,其中上一个事务是待签名消息。应当注意的是,如上所述,ECDSA签名采用(r,s)形式。
应当注意的是,所描述的签名生成方法并不限于任何特定用例,并且通常可以用于基于任何消息来生成签名。对区块链事务的全部或部分进行签名仅是一个说明性示例。例如,所描述的方法可以用于签署和/或授权法律文档(例如,遗嘱、契据或其他合同)、一方或多方之间的通信、数字证书(例如,由认证机构颁发)、医学处方、银行转账或金融工具、抵押或贷款申请等。
作为一个特定示例,参与者群组(假设总共五个参与者)可以组成一家公司的董事会。公司的投票事项可能需要董事会的大多数成员(即,至少三个参与者)就特定投票达成一致。董事会可以使用所描述的签名生成方法来证明至少有三名董事会成员同意投票赞成某个特定结果。在该示例中,签名生成方案的阈值为3。换言之,至少三名董事会成员必须提供相应签名份额,以便协调者成功生成签名。如果签名成功生成,则至少阈值数量(即,三名)的董事会成员同意投票赞成该结果。因此,签名的成功生成作为投票记录,并证明董事会的大多数成员以特定方式投票。
本发明的另一个用例涉及数字证书(例如,根据X.509标准颁发的数字证书)领域。数字证书包含对某些数据进行签名的签名。数据通常可以是任意数据,但数字证书中包含的数据的一个特定示例是公钥。数字证书中的公钥通常称为“认证公钥”。数字证书的发行者(“认证机构”)可以对公钥的所有者执行一次或多次检查(例如,了解客户检查),并且如果检查成功,则认证机构颁发包括认证公钥的数字证书。用户可以使用认证公钥来证明自己便是他们所称的身份,例如,通过使用与认证公钥对应的私钥对消息进行签名。
认证机构的一种特殊用途是对HTTPS中使用的证书进行签名,以便在互联网上安全浏览。另一种常见用途是国家政府签发身份证,用于以电子方式签署文档。认证机构使用私钥对公钥(或任何其他待证明数据)进行签名。
3.结论
应当理解,上述实施例仅通过示例的方式进行描述。更一般地说,可根据下述任何一个或更多个语句提供一种方法、装置或程序。
语句1.一种计算机实现的方法,用于要求参与者群组的子组中的至少一个参与者对阈值最优签名方案做出贡献,其中有效签名包括第一签名组件和第二签名组件,其中每个参与者具有共享私钥的相应私钥份额、共享临时私钥的相应临时私钥份额、和所述第一签名组件,其中所述共享私钥仅能使用至少第一阈值数量的相应私钥份额来生成,并且其中所述方法包括由属于所述子组的第一参与者执行以下步骤:
获取所述第二签名组件的消息无关组件MIC的至少第二阈值数量的相应份额,其中所述MIC的每个相应份额是由相应参与者基于相应临时私钥份额、相应私钥份额和所述第一签名组件来生成的,其中所述MIC仅能使用所述MIC的至少所述第二阈值数量的相应份额来生成,其中所述MIC的第一份额是由所述第一参与者生成的,并且其中所述MIC的所述相应份额仅能被所述子组中的一个或多个参与者利用;
基于所获取的第二阈值数量的相应份额来生成所述MIC;以及,
a)将所述MIC提供给协调者,以基于所述MIC和所述第二签名组件的消息相关组件MDC的所述第二阈值数量的相应份额来生成所述第二签名组件,所述MDC的每个相应份额是基于所述消息的哈希和相应临时私钥份额来生成的;和/或,
b)将所述MIC分割成多个二级MIC份额,其中需要第三阈值数量的所述二级MIC份额来生成所述MIC;以及将一个或多个相应二级MIC份额分配给所述群组中所述第三阈值数量的参与者中的相应参与者以生成所述MIC,并将所述MIC提供给协调者以生成所述第二签名组件。
语句2.根据语句1所述的方法,所述方法包括:
生成所述MDC的第一份额;以及,
将所述MDC的所述第一份额提供给所述协调者,以生成所述第二签名组件。
语句3.根据语句1或2所述的方法,其中所述第一参与者包括所述协调者,并且其中所述方法包括:生成所述第二签名组件。
语句4.根据语句1或2所述的方法,其中所述协调者是第三方或所述参与者中的不同参与者。
语句5.根据前述任一项语句所述的方法,其中每个参与者具有盲钥的相应盲钥份额,其中所述MIC的每个相应份额是基于所述相应盲钥份额生成的,并且其中所述MDC的每个相应份额基于所述相应盲钥份额。
语句6.根据前述任一项语句所述的方法,其中所述子组包括多个参与者,并且其中a)包括将所述MIC的所述第一份额提供给所述子组中的一个、一些或全部其他参与者。
语句7.根据前述任一项语句所述的方法,其中所述子组包括多个参与者,并且其中所述子组中的每个参与者接收所述MIC的每个相应份额。
语句8.根据语句1至5中任一项所述的方法,其中所述子组由所述第一参与者组成。
语句9.根据前述任一项语句所述的方法,其中所述消息包括区块链事务的至少一部分。
语句10.根据前述任一项语句所述的方法,其中,所述群组的大小是N≥2t+1,并且所述子组的大小是N-(t+1),其中t是用于导出每个参与者的所述相应私钥份额的多项式的阶数,其中2t+1是所述第一阈值数量,t+1是所述第二阈值数量。
语句11.根据前述任一项语句所述的方法,其中每个参与者使用联合可验证随机秘密共享方案JVRSS来生成所述相应私钥份额、和所述相应临时私钥份额。
语句12.根据语句5或其任何从属语句所述的方法,其中每个参与者使用所述JVRSS来生成所述相应盲钥份额。
语句13.根据前述任一项语句所述的方法,其中所述方法包括所述的将所述MIC分割成所述多个二级MIC份额,并且其中所述的将所述MIC分割是使用Shamir秘密共享方案来执行的。
语句14.根据前述任一项语句所述的方法,其中所述签名是椭圆曲线数字签名算法ECDSA签名。
语句15.根据语句5和14所述的方法,其中所述MIC的每个份额被生成为其中ki是相应临时私钥份额,ai是相应私钥份额,βi是相应盲钥份额,r是所述第一签名组件,并且其中所述MDC的每个份额被生成为/>其中r是所述消息的所述哈希。
语句16.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及,
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据前述任一项语句所述的方法。
语句17.一种计算机程序,所述计算机程序被包含在计算机可读存储器上并且被配置为当在计算机设备上运行时,执行根据语句1至15中任一项所述的方法。
根据本文公开的另一方面,可提供一种方法,所述方法包括所述第一参与者和所述协调者的动作。
根据本文公开的另一方面,可提供一种系统,所述系统包括所述第一参与者和所述协调者的计算机设备。
根据本文公开的另一方面,可提供一种方法,所述方法包括每个参与者的动作。
根据本文公开的另一方面,可提供一种系统,所述系统包括每个参与者的计算机设备。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
Claims (17)
1.一种计算机实现的方法,用于要求参与者群组的子组中的至少一个参与者对阈值最优签名方案做出贡献,其中有效签名包括第一签名组件和第二签名组件,其中每个参与者具有共享私钥的相应私钥份额、共享临时私钥的相应临时私钥份额、和所述第一签名组件,其中所述共享私钥只能使用至少第一阈值数量的相应私钥份额生成,并且其中所述方法包括由属于所述子组的第一参与者执行以下步骤:
获取所述第二签名组件的消息无关组件MIC的至少第二阈值数量的相应份额,其中所述MIC的每个相应份额由相应参与者基于相应临时私钥份额、相应私钥份额和所述第一签名组件来生成,其中所述MIC只能使用所述MIC的至少所述第二阈值数量的相应份额生成,其中所述MIC的第一份额由所述第一参与者生成,并且其中所述MIC的所述相应份额仅能被所述子组中的一个或多个参与者利用;
基于所获取的第二阈值数量的相应份额来生成所述MIC;以及
a)将所述MIC提供给协调者,以基于所述MIC和所述第二签名组件的消息相关组件MDC的所述第二阈值数量的相应份额来生成所述第二签名组件,所述MDC的每个相应份额是基于所述消息的哈希和相应临时私钥份额来生成的;和/或
b)将所述MIC分割成多个二级MIC份额,其中需要第三阈值数量的所述二级MIC份额来生成所述MIC;以及将一个或多个相应二级MIC份额分配给所述群组中所述第三阈值数量的参与者中的相应参与者以生成所述MIC,并将所述MIC提供给协调者以生成所述第二签名组件。
2.根据权利要求1所述的方法,所述方法包括:
生成所述MDC的第一份额;以及
将所述MDC的所述第一份额提供给所述协调者,以生成所述第二签名组件。
3.根据权利要求1或2所述的方法,其中所述第一参与者包括所述协调者,并且其中所述方法包括:生成所述第二签名组件。
4.根据权利要求1或2所述的方法,其中所述协调者是第三方或所述参与者中的不同参与者。
5.根据前述任一项权利要求所述的方法,其中每个参与者具有盲钥的相应盲钥份额,其中所述MIC的每个相应份额是基于所述相应盲钥份额生成的,并且其中所述MDC的每个相应份额基于所述相应盲钥份额。
6.根据前述任一项权利要求所述的方法,其中所述子组包括多个参与者,并且其中a)包括将所述MIC的所述第一份额提供给所述子组中的一个、一些或全部其他参与者。
7.根据前述任一项权利要求所述的方法,其中所述子组包括多个参与者,并且其中所述子组中的每个参与者接收所述MIC的每个相应份额。
8.根据权利要求1至5中任一项所述的方法,其中所述子组由所述第一参与者组成。
9.根据前述任一项权利要求所述的方法,其中所述消息包括区块链事务的至少一部分。
10.根据前述任一项权利要求所述的方法,其中,所述群组的大小是N≥2t+1,并且所述子组的大小是N-(t+1),其中t是用于导出每个参与者的所述相应私钥份额的多项式的阶数,其中2t+1是所述第一阈值数量,t+1是所述第二阈值数量。
11.根据前述任一项权利要求所述的方法,其中每个参与者使用联合可验证随机秘密共享方案JVRSS来生成所述相应私钥份额、和所述相应临时私钥份额。
12.根据权利要求5或其任何从属权利要求所述的方法,其中每个参与者使用所述JVRSS来生成所述相应盲钥份额。
13.根据前述任一项权利要求所述的方法,其中所述方法包括所述的将所述MIC分割成所述多个二级MIC份额,并且其中所述的将所述MIC分割是使用Shamir秘密共享方案来执行的。
14.根据前述任一项权利要求所述的方法,其中所述签名是椭圆曲线数字签名算法ECDSA签名。
15.根据权利要求5和14所述的方法,其中所述MIC的每个份额被生成为其中ki是相应临时私钥份额,ai是相应私钥份额,βi是相应盲钥份额,r是所述第一签名组件,并且其中所述MDC的每个份额被生成为/>其中r是所述消息的所述哈希。
16.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据前述任一项权利要求所述的方法。
17.一种计算机程序,所述计算机程序被包含在计算机可读存储器上并且被配置为当在计算机设备上运行时,执行根据权利要求1至15中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2105992.8 | 2021-04-27 | ||
GB2105992.8A GB2606169A (en) | 2021-04-27 | 2021-04-27 | Nested threshold signatures |
PCT/EP2022/058085 WO2022228799A1 (en) | 2021-04-27 | 2022-03-28 | Nested threshold signatures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117223252A true CN117223252A (zh) | 2023-12-12 |
Family
ID=76193554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280029290.5A Pending CN117223252A (zh) | 2021-04-27 | 2022-03-28 | 嵌套阈值签名 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4331176A1 (zh) |
JP (1) | JP2024515092A (zh) |
CN (1) | CN117223252A (zh) |
GB (1) | GB2606169A (zh) |
WO (1) | WO2022228799A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR112018016234A2 (pt) | 2016-02-23 | 2019-01-02 | Nchain Holdings Ltd | método implementado por computador para controlar o acesso a um recurso, sistemas baseados em computador e método para controle de acesso a uma carteira digital |
-
2021
- 2021-04-27 GB GB2105992.8A patent/GB2606169A/en active Pending
-
2022
- 2022-03-28 JP JP2023564082A patent/JP2024515092A/ja active Pending
- 2022-03-28 CN CN202280029290.5A patent/CN117223252A/zh active Pending
- 2022-03-28 EP EP22718681.4A patent/EP4331176A1/en active Pending
- 2022-03-28 WO PCT/EP2022/058085 patent/WO2022228799A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
GB202105992D0 (en) | 2021-06-09 |
EP4331176A1 (en) | 2024-03-06 |
WO2022228799A1 (en) | 2022-11-03 |
GB2606169A (en) | 2022-11-02 |
JP2024515092A (ja) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230246825A1 (en) | Generating secret shares | |
CN115804061A (zh) | 生成共享私钥 | |
KR20230093432A (ko) | 서비스 거부 공격들의 식별 | |
WO2023072504A1 (en) | Threshold signature scheme | |
US20230163977A1 (en) | Digital signatures | |
US20240121109A1 (en) | Digital signatures | |
WO2023072502A1 (en) | Generating shared keys | |
WO2023036528A1 (en) | Generating shared cryptographic keys | |
CN117795901A (zh) | 生成数字签名份额 | |
CN117223252A (zh) | 嵌套阈值签名 | |
CN117837127A (zh) | 生成数字签名 | |
WO2023036534A1 (en) | Generating shared cryptographic keys | |
CN117837123A (zh) | 生成数字签名 | |
WO2023143880A1 (en) | Generating shared private keys |
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 |