CN117917041A - 生成共享加密密钥 - Google Patents
生成共享加密密钥 Download PDFInfo
- Publication number
- CN117917041A CN117917041A CN202280060168.4A CN202280060168A CN117917041A CN 117917041 A CN117917041 A CN 117917041A CN 202280060168 A CN202280060168 A CN 202280060168A CN 117917041 A CN117917041 A CN 117917041A
- Authority
- CN
- China
- Prior art keywords
- share
- private key
- shared secret
- shared
- participant
- 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 85
- 238000012545 processing Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 2
- 238000009795 derivation Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement 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/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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/065—Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Telephonic Communication Services (AREA)
Abstract
一种生成共享私钥的份额的计算机实现的方法,其中参与者群组中的每个参与者具有主私钥的相应份额,并且其中所述方法由所述群组中的第一参与者执行并且包括:生成第一共享秘密的第一份额,其中所述群组中的每个其他参与者生成所述第一共享秘密的相应份额;以及,基于所述主私钥的第一份额和所述第一共享秘密的所述第一份额来生成第一共享私钥的第一份额。
Description
技术领域
本公开涉及一种生成共享私有密钥的份额的方法。该份额可以用于生成数字签名的份额,例如用于对区块链事务(transaction)进行签名。
背景技术
通常,共享秘密可以用于共享分布在参与者群组之间的数据项。每个参与者具有该秘密的不同份额。通常,只有当一定数量(称为“阈值”)的参与者提供其相应份额时才能重建该秘密,例如组合在一起以计算该秘密。
公钥密码学是一种使用密钥对的密码系统,该密钥对包括:私钥,其仅对私钥所有者已知;以及公钥,其是基于对应的私钥生成的,并且可以在不损害私钥安全性的情况下进行传播。
公钥密码学使得发送者能够使用接收者的公钥(即,与仅对接收者已知的私钥对应的公钥)来加密消息。该加密消息随后只能使用接收者的私钥进行解密。
类似地,发送者可以使用自己的私钥对消息进行签名,例如以证明该消息是由发送者发送的,和/或指示发送者同意该消息。签名者(即,生成签名的一方)使用他们的私钥基于该消息创建数字签名。基于消息创建数字签名意味着将该消息和私钥提供给基于该消息和私钥生成该签名的函数。该签名被添加到(例如,标记到)该消息中或以其他方式与该消息相关联。拥有签名者的对应公钥的任何人都可以使用同一消息以及该消息中的数字签名来验证签名是否有效创建,即签名是否确实是使用签名者的私钥创建的。除确保消息的真实性之外,数字签名还确保消息的完整性和不可否认性。也就是说,数字签名可以用于证明消息在使用该签名进行签名之后未更改,并且签名的创建者将来不能否认他们创建了该签名。
数字签名方案通常涉及三个过程,即算法。密钥生成算法用于生成随机私钥和对应的公钥。签名算法用于基于消息和私钥来生成签名。在给定公钥和消息的情况下,验证算法用于验证是否已使用对应的私钥并根据签名算法生成签名。
共享秘密的常见用途是作为私钥-公钥对的共享私钥。也就是说,私钥可以分布在参与者群组之间,使得没有单个参与者能够访问该私钥。因此,没有单个参与者可以生成消息的有效签名。相反,一些或全部参与者必须共同生成该私钥才能生成该签名。
参与者可以使用阈值签名方案,而不是共享他们的私钥份额来生成签名。阈值签名方案允许群组中的阈值数量的参与者使用共享私钥的单独份额基于消息创建数字签名,而不向任何一个参与者提供该私钥。这里,数字签名是基于待签名消息生成的签名。在此类方案中,只有当阈值数量的参与者同意在消息中生成签名时,才能创建签名。使用较少数量的参与者生成签名的任何尝试都不会生成有效的签名。因此,该群组的有效签名(即,使用消息和共享私钥生成的签名)可证明具有阈值数量的人同意生成签名。这还意味着,任何攻击者都需要获取私钥的阈值数量的份额,才能使用该私钥伪造签名。
发明内容
加密密钥通常用于认证、授权和加密。例如,加密密钥可以用于在双方之间创建安全通信信道,或者授权消息(例如区块链事务等)。在每种情况下,为每个协议执行生成新密钥是有益的,例如为每个要授权(即,签名)的消息生成新密钥。同样,出于安全和隐私原因,建议避免在公共分类账(例如区块链)上重复使用密钥。因此,一方可能需要许多密钥。一种用于导出密钥的技术被描述于比特币改进提案(BIP)32标准中,该技术使得能够进行确定性非对称密钥导出。在国际专利申请WO2017/145016中描述了另一种用于生成确定性密钥的技术。
这两种技术都是从主私钥导出密钥。然而,通过从主密钥导出确定性密钥,所述主密钥丢失或被盗可能导致灾难性后果,例如失去对所述密钥控制的任何数字资产的访问。一种减轻这种单点故障的方法是使用阈值签名。这种方法使得能够跨多个参与者生成签名,只要涉及阈值数量的诚实参与者即可。
希望提供一种用于生成共享私钥的份额的新技术,其可以用于生成阈值签名等用途。共享私钥具有阈值,这意味着如果至少阈值数量的参与者贡献了相应签名份额,则可以生成所述私钥。这同样适用于阈值签名。这样即可清除单点故障问题。
根据本文公开的一个方面,提供了一种计算机实现的方法,用于生成共享私钥的份额,其中一组参与者中的每个参与者具有主私钥的相应份额,并且其中所述方法由所述一组参与者中的第一参与者执行并且包括:生成第一共享秘密的第一份额,其中所述一组参与者中的每个其他参与者生成所述第一共享秘密的相应份额;以及,基于所述主私钥的第一份额和所述第一共享秘密的所述第一份额来生成第一共享私钥的第一份额。
所述一组参与者(例如,用户)中的每个参与者具有主私钥的相应份额。从没有任何单个参与者能够访问所述主私钥的意义上说,所述主私钥在所述一组参与者之间共享,但是如果有足够的参与者贡献他们的相应份额,则可以生成所述主私钥。生成所述主私钥所需的参与者的数量称为密钥的阈值。
所述主私钥可以用于(例如,经由阈值加密来)加密消息和生成签名(即,阈值签名)。然而,存在希望不使用所述主私钥进行加密、签名生成等的情况。因此,优选地导出基于所述主私钥的附加私钥。这些导出的密钥通常称为子密钥。为了生成第一子密钥,参与者生成共享秘密(即,整数等秘密数据)。也就是说,每个参与者生成所述共享秘密的相应份额。然后,每个参与者根据其所述主私钥的相应份额和所述共享秘密的相应份额来生成子私钥的相应份额。可以类似的方式导出许多附加子密钥。
因此,本发明提供了一种生成共享私钥的结构的方法,其中每个共享私钥确定性地从共享主私钥导出,从而允许仅从所述共享主私钥和随机数值重新生成所述共享私钥,继而避免单点故障问题。
附图说明
为了帮助理解本公开的实施例并显示如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是示出用于实现本发明的各实施例的系统的示意性框图;
图2示意性地示出了通过确定性密钥导出技术获得的公钥的示例性层级结构。
具体实施方式
1.加密预备知识
虽然就椭圆曲线密码学描述了以下示例,但是本发明并不限于任何一种特定的加密方案,并且通常可以应用于任何加密方案,例如RSA或其他公钥加密方案。
1.1椭圆曲线群
椭圆曲线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,该点将被用作该群的生成器。
1.2椭圆曲线数字签名算法
为了使用私钥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=Rx mod n。如果r=0,则返回步骤2。
5.计算临时密钥的乘法逆k-1 mod 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-1 mod n和j2=rs-1 mod n。
4.计算点Q=j1·G+j2·P。
5.如果(无穷远点),则签名无效。
6.如果则使Q:=(Qx,Qy),然后计算u=Qx mod n。如果u=r,则签名有效。
在阈值签名方案中,该私钥a被分割为在阈值方案群中的参与者之间分发的密钥份额。
1.3联合可验证随机秘密共享
假设N个参与者想要创建联合秘密,该联合秘密只能由该方案中的至少(t+1)个参与者重新生成。要创建共享秘密,请采取以下步骤:
1.参与者就每个参与者的唯一标签i达成一致。每个参与者i生成(t+1)个随机数
其中∈R表示集合中随机生成的元素,其中/>是集合{1,…,n-1}的符号。每个参与者具有t阶秘密多项式
fi(x)=ai0+ai1x+…+aitxt mod 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,然后验证
如果所有参与者发现该等式对于每个多项式都成立,则该群可以共同确定他们均已创建相同的共享多项式。
1.4重建共享秘密
假设参与者想要重建共享秘密a,该共享秘密是共享多项式的零阶。在给定采用以下形式的该多项式上的(t+1)个点的情况下,
(1,a1),…,((t+1),at+1),
然后,为了找到共享秘密a,需要计算
其可根据称为“拉格朗日插值法”的一般公式推导出。
1.5公钥计算
在给定JVRSS的步骤4中共享的N个零阶私有多项式系数公钥ai0·G(其中j=1,…,N)的情况下,每个参与者使用以下等式计算共享公钥P
对应于共享秘密a。
1.6共享秘密的加法
为了计算在N个参与者的群组之间共享的两个共享秘密的和,其中每个秘密多项式的阶数为t,而任何实体都不知道各个秘密,请采取以下步骤:
1.生成第一共享秘密a,其中参与者i的份额通过ai=JVRSS(i)得出,其中i=1,…,N,阈值为(t+1)。
2.生成第二共享秘密b,其中参与者i的份额通过bi=JVRSS(i)得出,阈值为(t+1)。
3.每个参与者i计算自己的加法份额
vi=ai+bi mod n。
4.所有参与者将他们的加法份额vi广播给所有其他参与者。
5.每个参与者对份额vi中的至少(t+1)个份额进行内插以计算
v=interpolate(v1,…,vt+1)=a+b。
对于参与者i,这种用于将共享秘密相加的方法由ADDSS(i)表示,这会使得每个参与者i知道v=(a+b)。
1.7共享秘密的乘积
为了计算在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)表示。
1.8共享秘密的逆
为了计算共享秘密a的逆,需要采取以下步骤:
1.所有参与者计算共享秘密的乘积PROSS(i),其结果是μ=ab mod n。
2.每个参与者计算μ的模逆,其结果是
μ-1=(ab)-1 mod n。
3.每个参与者i通过计算以下内容来计算自己的逆秘密份额
对于参与者i,这种用于计算共享秘密的逆的方法由表示。
1.9共享私钥生成与验证
为了计算N≥2t+1个参与者之间的共享私钥a,其中t+1个参与者需要创建签名,参与者通过阈值t+1执行JVRSS以及执行如上所述的公钥计算。结果是每个参与者i=1,…,N具有私钥份额ai和对应的共享公钥P=(a·G)。
1.10临时密钥份额生成
为了根据签名中的要求生成临时密钥份额和对应的r,大小为N的群组(具有共享私钥a,阈值为(t+1))需要执行以下步骤:
1.生成共享秘密的逆份额其中需要(t+1)个份额才能重新创建。
2.每个参与者通过以下方式计算
使用在验证ki时共享的混淆系数,然后计算
r=x mod n。
3.每个参与者i存储
1.11非最优签名生成
假设至少2t+1个参与者想要在消息中创建签名,并且参与者中的一个参与者选择协调此事。为了使具有共享私钥a的组创建签名,采取以下步骤:
1.协调者向至少2t+1个参与者请求消息中的签名。
2.每个参与者i恢复在上一节中计算出的临时密钥所有用户必须使用对应于同一临时密钥的份额。
3.每个参与者计算消息摘要e=SHA-256(SHA-256(message))。
4.每个参与者i计算其签名份额si:
其中ai是其私钥份额。
5.每个参与者向协调者发送其签名份额(r,si)。
6.当协调者接收了2t+1个签名份额时,每个参与者计算:
s=interpolate(s1,…,s2t+1),
并且将签名输出为(r,s)。
7.协调者使用标准ECDSA验证来验证签名。如果失败,则份额中的至少一个份额必定是不正确的,并且应当再次运行签名生成算法。
1.12具有不同阈值的秘密的加法运算
在将阶数为t和t′的秘密相加的情况下,计算这两个秘密的和需要max(t,t′)+1个份额。原因在于,共享秘密的份额的加法运算步骤创建了新多项式的份额。这个新的加法多项式等同于两个共享秘密的单独多项式的加法运算结果。将两个多项式相加是将每个阶数x的对应系数相加。因此,加法多项式的阶数必须与两个多项式中的最高阶数相同。这可以推广到将两个以上多项式相加,其中所得到的多项式的阶数与具有最高阶数的单个多项式的阶数相同。
一旦计算出具有不同阈值的两个秘密的和,具有较高阈值的秘密的安全性会降低。这是因为,如果现在知道具有相应阈值t、t′的结果(a+b),并且假设t<t′,则可以使用t个份额计算a,然后计算(a+b)-a=b,因此已仅使用t个份额计算值b。该较低阈值在下文中称为b的“隐含阈值”。
1.13具有不同阈值的秘密的乘法运算
在将具有阈值t和t′的两个秘密相乘的情况下,计算乘积需要t+t′+1个份额。在这种情况下,将两个多项式的份额相乘会得到新多项式的份额。这个新多项式是将两个单独多项式相乘得出的结果,因此该结果的阶数是两个单独多项式的阶数的和。
乘法运算还可以推广到任意数量的共享秘密,所得到的阈值是各个阈值加1的总和,即∑ρtρ+1,其中ρ遍历各个共享秘密。
与加法运算类似,将具有不同阈值的两个秘密相乘会得到具有较高阈值的秘密的隐含阈值。如前所述,如果知道ab,其中a具有阈值t且b具有阈值t′,并且t<t′,则a和b都可以使用t个份额来计算。首先,可以仅使用秘密的t个份额来计算a,并使用(ab)a-1求出b。
1.14在一个步骤中组合共享秘密的加法运算和乘法运算
可以将上述内容概括为在一个步骤中计算加法运算和乘法运算的任意组合。假设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个份额。
1.15Shamir的秘密共享方案(SSSS)
SSSS是一种将数据段ai0分割成N个份额的方法,因此秘密具有阈值t,需要t+1个份额才能重新创建秘密ai0。庄家i随机生成t个整数ai1,…,ait并定义一个t次多项式
fi(x)=ai0+ai1x+…+aitxtmod p。
每个第j个份额被定义为(j,aj=fi(j)),其中j=1,…,N。
1.16确定性密钥导出
WO2017/145016描述了一种从可以用于对称加密的非对称密钥生成双方之间的多个公共秘密的方法。密钥导出方法侧重于根据需要使用的非对称密钥导出,例如生成对称加密密钥或用于创建签名。
假设爱丽丝具有主私钥m,该主私钥具有对应的公钥PM。为了导出子密钥,她选择随机数值nonce并将子私钥导出为
a(1)=m+hash(nonce)
其中hash是加密哈希函数,并且对应的公钥如下
爱丽丝还可以利用对应的公钥来导出私有子钥a(2)=m+hash(hash(nonce))
并且可以通过连续地对先前的哈希摘要进行哈希处理以生成其他密钥来继续。爱丽丝可以实现导出的密钥的树状结构。图2示出了一个示例。
树的每个分支可以用于不同的目的。在图2的示例中,爱丽丝使用子密钥作为父密钥来导出分支,例如
爱丽丝通过使用作为主分支来构建/>的同级公钥:
在WO2017/145016中,这些密钥与鲍勃的密钥组合以导出用于通信的对称密钥。
2.生成共享私钥
图1示出了用于实现本发明的各实施例的示例性系统100。如图所示,系统100包括多方(在本文中也称为“参与者”)102。图1中仅示出了三个参与者102a、102b、102c,但应当理解的是,该系统通常可以包括任意数量的参与者。系统100还可以包括协调方104(或简称为“协调者”),该协调方也可以是或不是参与者102中的一个参与者。参与者102和协调方104中的每一个操作相应的计算设备。
相应计算设备中的每一个包括相应的处理装置,所述处理装置包括一个或多个处理器,例如一个或多个中央处理单元(CPU)、加速器处理器(如图形处理单元GPU)、其他的专用处理器、加密处理器、数字信号处理器(DSP)、和/或现场可编程门阵列(FPGA)。相应计算设备还可以包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或多个存储器单元,其采用一个或多个存储器介质,例如诸如硬盘等磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等电子媒介和/或诸如光盘驱动器等光学介质。相应计算机设备可以包括至少一个用户终端,例如台式电脑或笔记本电脑、平板电脑、智能手机或诸如智能手表等可穿戴设备。替代地或附加地,相应计算设备可以包括一个或多个其他联网资源,例如经由用户终端访问的云计算资源(该云计算资源包括在一个或多个站点实现的一个或多个物理服务器设备的资源)。应当理解的是,被描述为由系统100的一方执行的任何动作可以由该方操作的相应计算设备执行。
参与者102中的每一个可以被配置为通过使用LAN或WAN连接的互联网等网络或经由替代的有线或无线通信手段将数据传输给其他参与者102中的一个、一些或全部。除非上下文另有要求,否则对传输数据的参与者102的引用可以理解为:例如,经由第一参与者102a与第二参与者102b之间的安全通信通道单独将数据传输给其他参与者102;或者,例如,经由电子邮件或其他手段将数据广播给一组参与者。同样,除非上下文另有要求,否则每个参与者102可以原始形式传输数据,也可以加密形式传输数据。例如,在将数据发送给接收方参与者之前,可以使用该接收方参与者的公钥来加密数据。这同样适用于协调者104向参与者102中的一个、一些或全部传输和接收数据。
将主要从第一参与者102a的角度来描述本发明的实施例。然而,应当理解的是,通常所描述方法的步骤可以类似地由其他参与者(例如,第二参与者102b或第三参与者102c)执行。还应当理解的是,术语“第一”、“第二”、“第三”等在本文中仅用作区别标签并且不一定意味着顺序,除非使用这些术语的特定上下文另有要求。
本发明使得一组参与者102中的每个参与者102能够生成共享私钥的相应份额。每个共享私钥链接到共享主私钥,其中每个参与者102具有共享主私钥的相应份额。也就是说,每个参与者102可以访问(例如,在其相应计算设备的存储器中存储)共享主私钥的相应份额。这些私钥份额可以使用诸如JVRSS(如上所述)或Shamir的秘密共享方案(SSSS)等秘密共享方案来生成。可以使用替代方案来生成共享私钥的份额。共享主私钥具有阈值,即私钥只能基于至少阈值数量的不同私钥份额来成功生成。
本公开提供了用于基于主私钥份额来生成子私钥份额(即,子私钥的份额)的技术。为此,参与者导出第一共享秘密。也就是说,每个参与者102计算第一共享秘密的相应份额。第一共享秘密(即,其份额)可以使用JVRSS、SSSS或用于生成秘密份额的类似方案来生成。然后,基于(即,根据)主私钥的份额和第一共享秘密的份额来生成第一子私钥的份额。也就是说,第一参与者102a基于主私钥的第一份额和第一共享秘密的第一份额来生成第一子私钥的第一份额,第二参与者102b基于主私钥的第二份额和第一共享秘密的第二份额来生成第一子私钥的第二份额,依此类推。
在一些示例中,第一参与者102a基于将第一主私钥份额与第一共享秘密的第一份额相加来生成第一子私钥的第一份额。如果第一共享秘密的阈值被选择为与主私钥的阈值相同,这会导致第一子私钥的阈值与主私钥的阈值相同。如果第一共享秘密的阈值被选择为大于主私钥的阈值,这会导致第一子私钥的阈值大于主私钥的阈值。
在其他示例中,第一参与者102a基于将第一主私钥份额与第一共享秘密的第一份额相乘来生成第一子私钥的第一份额。无论运算是加法、乘法还是其他运算,每个参与者都使用相同的运算。如果第一共享秘密的阈值被选择为与主私钥的阈值相同,这会导致第一子私钥的阈值大于主私钥的阈值。如果第一共享秘密的阈值被选择为大于主私钥的阈值,这也会导致第一子私钥的阈值大于主私钥的阈值。
参与者102可以生成与第一子私钥对应的公钥。一个参与者可以代表其他参与者执行此操作,或者他们可以合作来生成公钥。每个参与者102可以访问(例如,在存储器中存储)与共享主私钥对应的主公钥。参与者生成与第一共享秘密对应的公钥(“第一公钥”)。如果第一共享秘密是使用JVRSS生成的,则可以如上文第1.15节中描述的那样生成公钥。如果共享秘密是使用SSSS生成的,则协调者104可以向每个参与者提供公钥。生成与共享秘密对应的公钥在本领域技术人员的职权范围内。然后,基于主公钥和第一公钥(例如,基于主公钥和第一公钥的椭圆曲线加法)来生成与第一子私钥对应的第一子公钥。
参与者102可以生成第二子私钥的份额,即他们自己的第二子私钥的份额。可以基于主私钥份额和第二共享秘密的份额来生成第二子私钥份额。例如,每个参与者102使用JVRSS、SSSS或用于生成秘密份额的不同方案来生成第二共享秘密的相应份额。第二共享秘密不同于第一共享秘密,这可确保第一子私钥和第二子私钥不同。参与者102可以基于主公钥和与第二共享秘密对应的公钥来生成与第二子私钥对应的第二公钥。
参与者102可以生成第三子私钥的份额,即他们自己的第三子私钥的份额。第三子私钥份额可以基于不同的子私钥份额(例如,第一子私钥或第二子私钥的份额)和第三共享秘密的份额来生成。如前所述,例如,每个参与者102使用JVRSS来生成第三共享秘密的相应份额。然而,在这种情况下,第三子私钥的相应份额不是直接基于主私钥,而是基于不同的子私钥。第三共享秘密可以与第一共享秘密或第二共享秘密相同,也可以与第一共享秘密和第二共享秘密两者不同。参与者102可以生成与第三子私钥对应的第三公钥。第三公钥基于与第三子密钥所基于的子密钥(例如,第一子密钥)对应的公钥,并且还基于与第三共享秘密对应的公钥。
通过基于先前导出的子私钥份额来导出子私钥份额,可以生成如图2所示的树状密钥结构。例如,可以基于子密钥份额(PA(1))来生成孙密钥份额(PA(1,1))。类似地,可以通过使用不同的共享秘密来导出密钥,基于相同的子密钥份额(PA(1))来生成另一孙密钥份额(PA(1,2))。可以这种方式生成树的更多层级。
在一些实施例中,第一子私钥可以用于例如生成签名、加密数据等。在其他实施例中,第一子私钥是用于导出另一子私钥的中间私钥,其中该另一子私钥用于签名生成、加密等。在这些示例中,如上所述,基于主私钥的份额和第一共享秘密的份额来生成该中间私钥的份额。此外,基于另一共享秘密(称为“第四共享秘密”)来生成第一子中间密钥的份额。例如,第一参与者基于主私钥的第一份额、第一共享秘密的第一份额和第四共享秘密的第一份额来生成中间私钥的第一份额。作为特定示例,可以通过乘法来组合主私钥的第一份额和第一共享秘密的第一份额,并将第四共享秘密的第一份额与所得结果相加。然后,每个参与者102将其中间私钥的相应份额发送给其他参与者102。因此,可以重建中间私钥,并且因此在这些实施例中不使用该中间私钥进行签名等。参与者使用中间私钥的份额来重建中间私钥,例如通过在至少阈值数量的份额上进行内插。然后,每个参与者基于其第四共享秘密的相应份额和中间私钥来生成第四子私钥的相应份额。应当注意的是,第四共享秘密对参与者是未知的。例如,第四私钥的第一份额可以是将中间私钥与第四共享秘密的第一份额相减所得的结果。然后,第四子私钥可以用于签名生成,等等。
当第一共享秘密和第四共享秘密的阈值被选择为与主私钥的阈值相同时,这会导致中间私钥的阈值大于主私钥和所得到的第四子私钥的阈值。这意味着导出第四子私钥的份额所需的参与者比使用第四子私钥来生成签名所需的参与者更多。换句话说,进行签名所需的参与者比导出签名密钥所需的参与者更少。作为示例性用例,这可以用于在多个(例如,三个)用户之间建立联合银行账户,其中仅需要用户的子集(例如,一个或两个)来授权事务。又如,一家公司的董事会可能包括四个用户。可能需要所有四个董事会成员来建立签名密钥,但是可能仅需要其中任何两个董事会成员来做出决定,例如,在这种情况下,只能通过对文件进行签名来做出决定。
上面已经简要描述了阈值签名。参与者可以使用任何导出的子私钥(例如,第一子私钥、第二子私钥、第三子私钥或第四子私钥)来生成阈值签名(例如,阈值ECDSA签名)的相应份额。阈值签名可以是最优的或非最优的,这意味着签名的阈值可以与子私钥相同或不同。例如,每个参与者(或至少阈值数量的参与者)可以使用其第一子私钥的相应份额来生成第一签名的相应份额。类似地,可以使用第二子私钥的相应份额来生成第二签名的相应份额。在这些示例中,至少阈值数量的参与者102将其相应签名提供给协调者104以生成签名。参与者102可以访问要签名的消息,或者他们可以从协调者104接收消息。如下面进一步讨论的,要签名的消息中的一个或多个消息可以是区块链事务。
每个参与者可以至少基于(即,根据)子私钥的相应份额(例如,第一子私钥的第一份额)来生成相应签名份额。在一些实施例中,还基于第一临时密钥份额(或更具体地,第一临时密钥份额的逆)、临时公钥的第一坐标(或更具体地,第一坐标mod n,其中n是椭圆曲线的阶数)来生成签名份额。
下面提供了参与者102可以用来生成阈值签名的示例性方法。步骤S401至步骤S408由该示例中阈值数量的参与者102中的每个参与者(包括第一参与者102a)执行。步骤S409由协调者101执行,该协调者也可以是执行步骤S401至步骤S408的参与者中的一个参与者。应当理解的是,这些步骤中的一些步骤可以省略,也可以按照不同的顺序执行。
示例性方法使得能够在一组N≥2t+1个参与者中创建阈值为(t+1)的共享秘密,其中签名阈值也是(t+1)。
建立:
在步骤S401中,每个参与者102计算共享私钥份额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的阈值为四且其他共享秘密的阈值为三的情况下进行计算,并且他们将仍然拥有阈值最优方案。
本发明的一些实施例能够用于在任何消息中生成签名。作为特定示例性用例,如图1所示,消息可以是区块链事务的一部分或全部。换言之,签名可以用于对区块链事务的一个或多个输入和/或一个或多个输出进行签名。例如,所生成的签名可以至少部分地用于解锁区块链事务的输出。作为特定示例,先前事务的输出可以是支付到公钥哈希(P2PKH)输出,该输出锁定到公钥哈希。为了解锁,引用P2PKH输出的后续事务的输入需要包括(未经哈希处理的)公钥以及基于与公钥对应的私钥生成的签名。协调者104可以对区块链事务进行签名,并将已签名事务提交给区块链网络106的一个或多个区块链节点。
脚本中表示的“锁定脚本Locking script”和“解锁脚本Unlocking script”可以采取以下形式:
Locking script=OP_DUP OP_HASH160<Public KeyHash>OP_EQUAL OP_CHECKSIGUnlocking script=<Signature><Public Key>
参考上述实施例,<Public Key>可以等同于P=achild·G,并且<Signature>包括阈值签名s,其中上一个事务是待签名消息。应当注意的是,如上所述,ECDSA签名采用(r,s)形式。
应当注意的是,所描述的签名生成方法并不限于任何特定用例,并且通常可以用于基于任何消息来生成签名。对区块链事务的全部或部分进行签名仅是一个说明性示例。例如,所描述的方法可以用于签署和/或授权法律文档(例如,遗嘱、契据或其他合同)、一方或多方之间的通信、数字证书(例如,由认证机构颁发)、医学处方、银行转账或金融工具、抵押或贷款申请等。
作为一个特定示例,参与者群组(假设总共五个参与者)可以组成一家公司的董事会。公司的投票事项可能需要董事会的大多数成员(即,至少三个参与者)就特定投票达成一致。董事会可以使用所描述的签名生成方法来证明至少有三名董事会成员同意投票赞成某个特定结果。在该示例中,签名生成方案的阈值为3。换言之,至少三名董事会成员必须提供相应签名份额,以便协调者成功生成签名。如果签名成功生成,则至少阈值数量(即,三名)的董事会成员同意投票赞成该结果。因此,签名的成功生成作为投票记录,并证明董事会的大多数成员以特定方式投票。
本发明的另一个用例涉及数字证书(例如,根据X.509标准颁发的数字证书)领域。数字证书包含对某些数据进行签名的签名。数据通常可以是任意数据,但数字证书中包含的数据的一个特定示例是公钥。数字证书中的公钥通常称为“认证公钥”。数字证书的发行者(“认证机构”)可以对公钥的所有者执行一次或多次检查(例如,了解客户检查),并且如果检查成功,则认证机构颁发包括认证公钥的数字证书。用户可以使用认证公钥来证明自己便是他们所称的身份,例如,通过使用与认证公钥对应的私钥对消息进行签名。认证机构的一种特殊用途是对HTTPS中使用的证书进行签名,以便在互联网上安全浏览。另一种常见用途是国家政府签发身份证,用于以电子方式签署文档。认证机构使用私钥对公钥(或任何其他待证明数据)进行签名。
如上所述,本发明的实施例可以涉及用对应于私钥份额的公钥来加密消息,并且类似地用私钥份额来解密消息。在该情况下,第一参与者102a可以解密已经由不同方加密的消息。作为另一选项,消息可以用对应于完整私钥(例如,完整子密钥)的公钥进行加密。在该情况下,至少阈值数量的参与者可以使其子私钥的相应份额可用,以便解密消息。加密的消息可以包括部分或全部区块链事务,例如加密的数据可以包括在要记录在区块链上的事务中。
3.示例性用例
下面提供了所述实施例的具体示例。
假设存在想要建立具有阈值t的共享秘密的N个参与方。所有参与者(例如,使用JVRSS来)建立组主密钥m,从而导致每个参与方i具有份额mi。相关联的公钥是PM=mG。参与方可以通过至少t+1个秘密份额的内插来构建m。
所公开的子密钥导出方法中的一种方法是将第二随机生成的值添加到父密钥,这容易使子密钥阈值具有灵活性,如下文所述。假设N个参与者已经签署建立协议以创建共享秘密m。从共享秘密m导出第一子私钥的步骤如下:
1.参与方通过具有阈值t的JVRSS协议来生成共享秘密α,该共享秘密具有相关联的公钥Pα=αG。每个参与方i知道他们从JVRSS导出的秘密份额αi。
2.每个参与方i计算ai=mi+αi。
然后,第一子私钥是共享秘密a=m+α,其中每个参与方i知道份额ai=mi+αi。a的相关联的公钥是
PA=aG=PM+Pα。
为了生成下一子私钥,按照步骤1获得新的共享秘密β,该新的共享秘密具有相关联的公钥Pβ=βG。然后,使用m或a=m+α作为父密钥,从而提供形成树状密钥导出结构的选项:
●如果选择m作为父密钥,则另一子私钥是b:=m+β,该另一子私钥具有公钥PB=PM+Pβ。
●如果选择a作为父密钥,则其子私钥是秘密a′=a+β,并且对应的公钥是:
PA′=PA+Pβ。
该协议消除了单点故障,并且树状导出可以用于导出用于不同目的的多个分支,例如单独的账户。
下一子密钥导出协议允许参与者导出具有与其主密钥不同的阈值的子密钥。这可以用于建立不同的安全级别或较低的阈值,需要较少数量的参与者进行通信,以便使用所导出的密钥。
该协议对上面给出的JVRSS导出协议进行了扩展,并且展示了如何从具有阈值t的共享秘密导出具有阈值t′的新的共享秘密,其中t′>t。为了从主密钥m生成第一子密钥,执行以下步骤:
1.参与方通过具有阈值t′的JVRSS协议来生成共享秘密α。相关联的公钥是Pα=αG。每个参与方i知道他们从JVRSS导出的秘密份额αi。
2.每个参与方i计算mi+αi,该值表示为ai。
然后,第一子私钥是具有阈值t′>t的共享秘密a=m+α。可以如上所述进行后续子密钥导出,其中针对在步骤1中生成的秘密使用不同的阈值。最大阈值受到参与者数量的限制,并且参与者在导出子密钥时不能无限增加t′。
参与者还可以使用相同的阈值t′=t来导出一些子密钥,如在第3.2节中所讨论的。然而,如果t′<t,则在使用上述协议的情况下,所导出的子私钥的阈值不会发生改变。
下述密钥导出协议使用乘法份额增加阈值的事实。从主密钥m导出第一子私钥的步骤如下:
1.参与方通过具有阈值t的JVRSS协议来生成共享秘密α。每个参与方i知道自己的份额αi。
2.每个参与方i计算miαi,该值表示为ai。
然后,第一子私钥是具有阈值2t的共享秘密a=mα,其中每个参与方i知道份额ai=miαi。a的相关联的公钥是
PA=aG=αPM。
由于在步骤2中计算的乘法份额miαi,该协议将阈值从t增加到2t。类似地,可以从a导出另一子私钥b,使得b=aβ,其中β是通过具有阈值t的JVRSS协议生成的共享秘密。然后,b具有阈值3t。通过重复该过程,可以导出的子密钥的数量受到参与者数量的限制。
下述协议允许要求2t+1个参与者协作导出具有阈值t的密钥。该协议的步骤如下:
1.参与方通过具有阈值t的JVRSS协议来生成共享秘密α和β。每个参与方i计算他们的秘密份额αi和βi。
2.每个参与方i计算miαi+βi,其对应于具有阈值2t的秘密mα+β。
3.参与方i向所有其他参与方广播miαi+βi。
4.参与方计算mα+β=interpolate(m1α1+β1,…,m2t+1α2t+1+β2t+1)。
5.参与方i计算ai=(mα+β)-βi。
秘密份额ai对应于具有阈值t的共享秘密子私钥a=mα,该共享秘密子私钥具有相关联的公钥:
PA=aG=αPM。
阈值不会增加,因为子密钥a具有阈值t,该阈值与主密钥m,相同,并且可以根据需要导出尽可能多的后续密钥。为了生成其他子密钥,参与者可以选择使用m作为父密钥并重复步骤1至步骤5来构建子私钥b,或者通过使用a作为父密钥并应用步骤1至步骤5以获得子私钥a′=aδ来实现树状结构,其中δ是新的JVRSS共享秘密。
4.进一步评述
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
应当理解,上述实施例仅通过示例的方式进行描述。更一般地说,可根据下述任何一个或更多个语句提供一种方法、装置或程序。
语句1.一种计算机实现的方法,用于生成共享私钥的份额,其中参与者群组中的每个参与者具有主私钥的相应份额,并且其中所述方法由所述参与者群组中的第一参与者执行并且包括:
生成第一共享秘密的第一份额,其中所述参与者群组中的每个其他参与者生成所述第一共享秘密的相应份额;以及,
基于所述主私钥的第一份额和所述第一共享秘密的所述第一份额来生成第一共享私钥的第一份额。
语句2.根据语句1所述的方法,其中每个参与者具有与所述主私钥对应的主公钥,并且其中所述方法包括:
生成与所述第一共享秘密对应的公钥;以及,
基于所述主公钥和与所述第一共享秘密对应的所述公钥来生成与所述第一共享私钥对应的第一公钥。
语句3.根据语句1或2所述的方法,所述方法包括:
生成第二共享秘密的第一份额,其中所述参与者群组中的每个其他参与者生成所述第二共享秘密的相应份额;以及
基于所述主私钥的所述第一份额和所述第二共享秘密的所述第一份额来生成第二共享私钥的第一份额。
语句4.根据前述任一项语句所述的方法,所述方法包括:
生成第三共享秘密的第一份额,其中所述参与者群组中的每个其他参与者生成所述第三共享秘密的相应份额;以及,
基于所述第一私钥的所述第一份额和所述第三共享秘密的所述第一份额来生成第三共享私钥的第一份额。
语句5.根据语句2和4所述的方法,所述方法包括:
生成与所述第三共享秘密对应的公钥;以及,
基于所述第一公钥和与所述第三共享秘密对应的所述公钥来生成与所述第三共享私钥对应的第三公钥。
语句6.根据前述任一项语句所述的方法,其中基于将所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额相加来生成所述第一共享私钥的所述第一份额。
语句7.根据前述任一项语句所述的方法,其中基于将所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额相乘来生成所述第一共享私钥的所述第一份额。
语句8.根据语句1至7中任一项所述的方法,其中所述主私钥的相应阈值与所述第一共享秘密的相应阈值相同。
语句9.根据语句1至7中任一项所述的方法,其中所述主私钥的相应阈值高于所述第一共享秘密的相应阈值。
语句10.根据语句1至7中任一项所述的方法,其中所述主私钥的相应阈值小于所述第一共享秘密的相应阈值。
语句11.根据前述任一项语句所述的方法,所述方法包括:
获得消息;以及,
基于所述第一共享私钥的所述第一份额和所述消息来生成数字签名的第一份额。
语句12.根据语句1所述的方法,所述方法包括:
生成第四共享秘密的第一份额,其中所述参与者群组中的每个其他参与者生成所述第四共享秘密的相应份额,其中所述第一共享私钥是中间私钥,并且其中所述中间私钥的所述第一份额还基于所述第四共享秘密的所述第一份额;
将所述中间私钥的所述第一份额提供给所述参与者群组中的每个其他参与者;
从每个其他相应参与者接收所述中间私钥的相应份额;
基于所述中间私钥的所述第一份额和所接收到的所述中间私钥的相应份额来生成所述中间私钥;以及,
基于所述中间私钥和所述第四共享秘密的所述第一份额来生成所述第四私钥的第一份额。
语句13.根据语句12所述的方法,其中所述主私钥、所述第一共享秘密和所述第四共享秘密中的每一个具有相同的阈值。
语句14.根据语句12和13所述的方法,其中基于所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额的乘积来生成所述中间私钥的所述第一份额,从而导致所述中间私钥具有比所述主私钥更高的阈值。
语句15.根据前述任一项语句所述的方法,所述方法包括:
获得消息;以及,
基于所述第四共享私钥的所述第一份额和所述消息来生成数字签名的第一份额。
语句16.根据语句10或14所述的方法,其中所述消息包括区块链事务的至少一部分。
语句17.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及,
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据语句1至16中任一项所述的方法。
语句18.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据语句1至16中任一项所述的方法。
根据本文公开的另一方面,可以提供一种方法,所述方法包括所述协调方和所述第一参与者的动作。
根据本文公开的另一方面,可以提供一种系统,所述系统包括所述协调方和所述第一参与者的计算机设备。
Claims (18)
1.一种计算机实现的方法,用于生成共享私钥的份额,其中参与者群组中的每个参与者具有主私钥的相应份额,并且其中所述方法由所述群组中的第一参与者执行并且包括:
生成第一共享秘密的第一份额,其中所述群组中的每个其他参与者生成所述第一共享秘密的相应份额;以及
基于所述主私钥的第一份额和所述第一共享秘密的所述第一份额来生成第一共享私钥的第一份额。
2.根据权利要求1所述的方法,其中每个参与者具有与所述主私钥对应的主公钥,并且其中所述方法包括:
生成与所述第一共享秘密对应的公钥;以及
基于所述主公钥和与所述第一共享秘密对应的所述公钥来生成与所述第一共享私钥对应的第一公钥。
3.根据权利要求1或2所述的方法,所述方法包括:
生成第二共享秘密的第一份额,其中所述群组中的每个其他参与者生成所述第二共享秘密的相应份额;以及
基于所述主私钥的所述第一份额和所述第二共享秘密的所述第一份额来生成第二共享私钥的第一份额。
4.根据前述任一项权利要求所述的方法,所述方法包括:
生成第三共享秘密的第一份额,其中所述群组中的每个其他参与者生成所述第三共享秘密的相应份额;以及
基于所述第一私钥的所述第一份额和所述第三共享秘密的所述第一份额来生成第三共享私钥的第一份额。
5.根据权利要求2和4所述的方法,所述方法包括:
生成与所述第三共享秘密对应的公钥;以及
基于所述第一公钥和与所述第三共享秘密对应的所述公钥来生成与所述第三共享私钥对应的第三公钥。
6.根据前述任一项权利要求所述的方法,其中基于将所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额相加来生成所述第一共享私钥的所述第一份额。
7.根据前述任一项权利要求所述的方法,其中基于将所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额相乘来生成所述第一共享私钥的所述第一份额。
8.根据权利要求1至7中任一项所述的方法,其中所述主私钥的相应阈值与所述第一共享秘密的相应阈值相同。
9.根据权利要求1至7中任一项所述的方法,其中所述主私钥的相应阈值高于所述第一共享秘密的相应阈值。
10.根据权利要求1至7中任一项所述的方法,其中所述主私钥的相应阈值小于所述第一共享秘密的相应阈值。
11.根据前述任一项权利要求所述的方法,所述方法包括:
获得消息;以及
基于所述第一共享私钥的所述第一份额和所述消息来生成数字签名的第一份额。
12.根据权利要求1所述的方法,所述方法包括:
生成第四共享秘密的第一份额,其中所述群组中的每个其他参与者生成所述第四共享秘密的相应份额,其中所述第一共享私钥是中间私钥,并且其中所述中间私钥的所述第一份额还基于所述第四共享秘密的所述第一份额;
将所述中间私钥的所述第一份额提供给所述群组中的每个其他参与者;
从每个其他相应参与者接收所述中间私钥的相应份额;
基于所述中间私钥的所述第一份额和所接收到的所述中间私钥的相应份额来生成所述中间私钥;以及
基于所述中间私钥和所述第四共享秘密的所述第一份额来生成所述第四私钥的第一份额。
13.根据权利要求12所述的方法,其中所述主私钥、所述第一共享秘密和所述第四共享秘密中的每一个具有相同的阈值。
14.根据权利要求12和13所述的方法,其中基于将所述主私钥的所述第一份额与所述第一共享秘密的所述第一份额相乘来生成所述中间私钥的所述第一份额,从而导致所述中间私钥具有比所述主私钥更高的阈值。
15.根据前述任一项权利要求所述的方法,所述方法包括:
获得消息;以及
基于所述第四共享私钥的所述第一份额和所述消息来生成数字签名的第一份额。
16.根据权利要求10或14所述的方法,其中所述消息包括区块链事务的至少一部分。
17.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或多个存储器单元;以及
处理装置,所述处理装置包括一个或多个处理单元,其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时,执行根据权利要求1至16中任一项所述的方法。
18.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或多个处理器上运行时,执行根据权利要求1至16中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2112721.2A GB2610560B (en) | 2021-09-07 | 2021-09-07 | Generating shared cryptographic keys |
GB2112721.2 | 2021-09-07 | ||
PCT/EP2022/072210 WO2023036528A1 (en) | 2021-09-07 | 2022-08-08 | Generating shared cryptographic keys |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117917041A true CN117917041A (zh) | 2024-04-19 |
Family
ID=78076854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280060168.4A Pending CN117917041A (zh) | 2021-09-07 | 2022-08-08 | 生成共享加密密钥 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN117917041A (zh) |
GB (1) | GB2610560B (zh) |
WO (1) | WO2023036528A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116208345B (zh) * | 2023-05-04 | 2023-08-22 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于秘密共享的群组认证方法及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7136489B1 (en) * | 2002-09-12 | 2006-11-14 | Novell, Inc. | Method and system for enhancing network security using a multilateral authorization mechanism |
LT3268914T (lt) | 2016-02-23 | 2018-11-12 | nChain Holdings Limited | Bendros paslapties, skirtos saugiems informacijos mainams, nustatymas ir hierarchiniai determinuoti kriptografiniai raktai |
US11121871B2 (en) * | 2018-10-22 | 2021-09-14 | International Business Machines Corporation | Secured key exchange for wireless local area network (WLAN) zero configuration |
-
2021
- 2021-09-07 GB GB2112721.2A patent/GB2610560B/en active Active
-
2022
- 2022-08-08 WO PCT/EP2022/072210 patent/WO2023036528A1/en active Application Filing
- 2022-08-08 CN CN202280060168.4A patent/CN117917041A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023036528A1 (en) | 2023-03-16 |
GB2610560B (en) | 2023-12-20 |
GB202112721D0 (en) | 2021-10-20 |
GB2610560A (en) | 2023-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
US20230224147A1 (en) | Generating shared private keys | |
CN115804059A (zh) | 生成秘密份额 | |
TW202318833A (zh) | 臨界簽章方案 | |
KR20230002941A (ko) | 비밀 공유를 갖는 (ec)dsa 임계값 서명 | |
CN117917041A (zh) | 生成共享加密密钥 | |
CN117795901A (zh) | 生成数字签名份额 | |
WO2023072502A1 (en) | Generating shared keys | |
CN117837127A (zh) | 生成数字签名 | |
CN117837123A (zh) | 生成数字签名 | |
WO2023036534A1 (en) | Generating shared cryptographic keys | |
CN117223252A (zh) | 嵌套阈值签名 | |
GB2614913A (en) | Generating shared private keys |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |