Coinbase Pro|生产阈值签名服务

分类:交易所公告/来源:Coinbase Pro/2021-05-05 00:08:11/阅读:

加密工程团队的软件工程师Anika Raghuvanshi

在生成用于保护客户资金的密钥时,我们会采取许多预防措施以确保密钥不会被盗。加密货币钱包与两个密钥相关联:一个仅钱包所有者已知的a或密钥,以及一个全世界已知的密钥。¹要从钱包中汇款,钱包所有者会产生有效的数字签名,这需要对消息进行签名。 (在这种情况下为交易)及其私钥。如果恶意方获得了私钥的访问权限,则他们可能会窃取钱包中的资金。对于大多数客户来说,Coinbase有责任保护私钥,以确保资金安全并不受攻击者的影响。

可重用键

在密钥生成过程中,我们将专用密钥划分为使用Shamir Secret Sharing (SSS),并删除完整密钥以提高安全性。每一份额均由另一方持有,没有任何一方可以完全访问私钥。很长一段时间以来,创建签名的方法只有一种:重新组合私钥共享以签署交易。因此,为了使我们的钱包保持最高的安全级别,我们只使用了一次地址。如果需要从存储100个BTC的密钥中提取1个BTC,则剩余的99个BTC将在提取过程中被发送到新的私钥,以确保我们不会在潜在的易受攻击地址存储资金。

但是,一次性使用的地址是有限制的。除了继续生成密钥所需的开销外,对安全重用密钥的需求甚至更高,同时伴随着加密货币抵押。抵押通常需要多次使用一个长期住址。我们需要一种无需重构私钥即可生成有效数字签名的方法。

多方计算(MPC)节省了一天的时间。 MPC协议允许多方共同计算功能,除了输出外没有其他信息。阈值签名是MPC的一种特殊用法,它允许各方在不重新构造原始复合私钥的情况下进行协作并产生数字签名。在实践中,这意味着与各方上载其私钥共享不同,他们使用其密钥共享分别签署了交易并上载了部分签名。这些部分签名²组合在一起以创建有效的签名,然后将其发布到区块链上。³密钥共享永远不会由各方上载或合并,因此在确保最高安全性的同时允许重复使用密钥。

门槛签署服务

我们应用MPC创建了阈值签名服务(TSS)。不同的加密货币资产使用不同的数字签名算法。我们将把本文的其余部分集中在针对Ed25519签名的TSS协议上。此协议分为五个阶段:

  • 方密钥生成。在受信任的环境中为参与签名的各方创建长期的公钥和私钥。各方的私钥都被加载到硬件安全模块(HSM)上,这可以防止任何人在不物理访问HSM的情况下使用私钥。
  • 密钥生成。创建一组TSS密钥,并使用SSS划分密钥。使用在聚会密钥生成中产生的公共密钥来加密与要接收它的聚会的每个签名密钥共享。
  • 即兴世代。签名协议的第2轮第1轮。此轮参与者生成随机数值,并将其发送给所有其他方。
  • 偏符号。第2轮(共2轮)签名协议。参与者使用从其他方收到的随机数份额及其签名密钥份额来生成部分签名。
  • 生成最终签名。将部分签名合并到最终结果中。

前两个阶段很少发生(在签名密钥的生存期中一次)。每次签署交易(我们称为a)时,都会重复最后三个阶段。下一节对协议的签名阶段进行了技术上的深入探讨。

用于为Ed25519密钥生成数字签名的方法如下:Ed25519是EdDSA签名方案,已将其参数化为SHA-512和Curve25519。对于椭圆曲线,是基点,是基点阶数。给定要签名的消息和私钥,将生成如下签名:

我们的阈值签名协议是Gennaro,Jarecki,Krawczyk和Rabin对阈值Schnorr签名方案的改编。

在该协议中,参与者以分布式方式生成随机数和签名,而无需重构底层私钥。在第一轮中,参与者生产和分配现时股份。在第2轮中,参与者根据随机数份额计算组合随机数,并产生部分签名,服务器将其合并以产生复合签名。最终签名与通过组合秘密份额并用复合私钥对原始消息签名而产生的签名相同。

即兴世代

在第一轮中,参与者使用消息和关键共享来执行以下操作

在参与者完成现时生成之后,开始签名。

即时聚合

在发布现时数后,参与者通过汇总现时数份额以得出综合现时数来执行第2轮。每个参与者执行:

部分签名

参与者创建部分签名⁴,可以将其组合以生成签名。

每个参与者执行:

签名聚集

最后,服务器将组件聚合为签名,可以使用公钥进行验证。

下面是一个示例,它结合了两个部分签名而没有Shamir共享:

只要两个签名的质询相同,随机数和私钥共享在加法下的行为都是线性的。由于此属性,我们可以将标准的Shamir重建应用于要构造的值:

此结果与随机数公钥一起是有效的签名。服务器使用消息和公钥验证签名(,),并检查先前未使用过的现时值。

从概念到生产

部署生产级系统涉及解决某些实际问题。例如,要吸引人类参与者的注意力可能会花费很长时间(约数小时)。由于该协议支持人工参与者,因此我们冒着将交易批准延迟太长时间的风险。例如,加密货币Algorand的验证时间很短:只有几个小时。如果我们无法在此时间范围内计算交易的签名,则必须放弃部分进度。我们的两个设计决策可帮助减轻人类批准交易的负担:1.轮次是异步的,这意味着参与者不必在相同的确切时间参加;以及2.每个轮次都需要一个参与方阈值,但是这两个轮次都不需要同一组参与者参加。

另一个挑战是存储秘密信息的问题,因为用于存储密钥共享和参与签名协议的设备可能会丢失或损坏。这导致了各方相对的模型:他们拥有的唯一状态是HSM上的少量长期存储,这些存储具有高度安全性,可移植性和持久性。签名协议中的参与者不会相互通信:集中式服务器存储所有工件,例如随机数共享和部分签名。如果集中式服务器受到威胁,会发生什么自然是令人担忧的事情-我们将在下一部分中研究此威胁和其他威胁模型。

安全

TSS具有两个主要的安全目标:

  1. 如果没有私钥,攻击者将无法在未经授权的消息上生成有效签名。这被称为自适应选择消息攻击下的存在不可伪造性,并且是数字签名方案的预期安全性。
  2. 密钥生成仪式后的私钥隐私。这样可以防止攻击者可以访问某些(小于阈值)私钥共享。

以下是我们为选定的威胁模型考虑的一些攻击和防御措施。

集中式服务器在参与者之间传输消息。

  • 攻击:未经授权访问数据。
    防御:必须将上载到服务器的所有机密数据加密给预定的参与者。服务器无权访问私钥,因此无法访问其中继消息中的数据。
  • 攻击:数据处理。
    防御:参与者验证服务器提供的每条数据,并在检测到数据修改时暂停协议。
  • 攻击:数据丢失。
    防御:来自密钥生成仪式的数据通过我们的灾难恢复过程进行备份(此处未详细讨论),并且在服务器数据丢失的情况下可以进行恢复。

参与者保留关键份额并参与签名协议。

  • 攻击:个别参与者进行生存伪造。
    防御:参与者负有验证服务器提供的数据的关键责任。如果检测到恶意活动,则任何参与者都可以中止协议并触发事件响应过程。
  • 攻击:参与者合谋进行存在性伪造。
    防御:由于任何单个参与者都可以在检测到恶意活动时终止该协议,因此该协议需要t个参与者。防止串通的另一种保护措施是支持混合参与者模型:人员和服务器的组合。我们使用加权秘密共享来确保每个签名都需要人员和服务器参与者的参与。这进一步增加了损害参与者的障碍。
  • 攻击:随机重用Schnorr样式签名的一种著名攻击是在不同消息上多次使用同一随机数。这导致私钥的微不足道的恢复,损害了我们的第二个安全目标,并为立即丢失资金打开了大门。
    防御:Nonce共享有关消息的编码信息,从而使解密时更容易检测现时重用。具有两轮协议可以使参与者在第二轮中对随机数份额进行身份验证,并在检测到随机数重用时中止。

密钥发行者生成私钥并分配密钥份额。

  • 攻击:泄露密钥生成仪式中的秘密。
    辩护:生成密钥的过程是一个经过充分记录和审核的过程,要求在密钥生成仪式结束之前销毁所有密钥明文。

通过这种威胁建模,我们可以看到恶意实体需要折衷参与者的门槛,才能窃取资金。考虑到这一点,我们会仔细校准人员和服务器参与者的门槛,以确保我们的资金保持最高的安全级别。

概括

用于在Ed25519曲线上对有效载荷进行签名的TSS是一种优雅而简单的服务:在一系列签名者与两轮回合协议进行交互之后,它将消息有效载荷作为输入,并生成有效的签名。这项服务提供了一种无需重新使用冷键就可以重新使用它们的解决方案。通过将完整的加密协议转换为现实生活服务,我们创建了TSS,这是现有的第一个生产级阈值签名服务,可确保数十亿美元的资产安全。

脚注

  1. 更准确地说,公共密钥用于导出钱包地址,这是公众已知的。
  2. 孤立地无效的
  3. 区块链不必知道也不支持阈值签名的特殊逻辑,因为创建的签名是使用复合私钥创建的签名。
  4. 将消息用作加密的关联数据。这样可以确保该随机数只能用于对该消息进行签名。这可以防御导致私有密钥恢复的随机数重放攻击。


生产阈值签名服务最初发布在Medium上的The Coinbase博客上,人们通过突出并响应此故事来继续进行对话。

利好 525
利空 370
AD:最全的虚拟货币交易平台推荐,都是能直接访问的网址哦~
比特币家园
比特币家园APP扫码下载
官方APP
CopyRight © 比特币家园 www.BTC126.com 苏ICP备18045312号-1