MPC Shamir 密钥共享(SSS) 和门限签名方案 (TSS) 详解

  • web3auth
  • 发布于 2024-01-20 20:19
  • 阅读 18

本文详细比较了 Shamir's Secret Sharing (SSS) 和 Threshold Signature Scheme (TSS) 的工作原理,以及它们在 WaaS 解决方案中的应用。文章指出 SSS 在密钥管理方面存在风险,如密钥重构时可能暴露,并介绍了 TSS 如何通过分布式计算生成签名来解决这些问题,同时保持了类似 SSS 的灵活性。

Shamir 密钥共享与阈值密钥共享的工作原理以及它们如何应用于 WaaS 解决方案的详细比较。

Shamir 密钥共享 (SSS) vs. 阈值签名方案 (TSS) 详解

我们正在分享 Shamir 密钥共享与阈值密钥共享的工作原理以及它们如何应用于 WaaS 解决方案的详细比较。

如果只考虑用户体验,那么很容易找到一个可行的密码学解决方案,它可以为普通用户抽象保护和回忆私钥的任务。其中最常见的方法是在分布式密钥生成 (DKG) 中拆分密钥,将其分散到用户的社交登录和生物识别等多个位置,然后从这些片段生成签名。

但它实际上是如何发生的呢?

一种更流行的方案是 Shamir 密钥共享——以其灵活性和随时可供任何想要实现它的人使用而闻名。 许多钱包即服务 (WaaS) 解决方案都使用 SSS 作为签名方案,但是,SSS 存在风险,如果设置不正确,可能会导致用户的密钥暴露给攻击者。

我们拥有的另一个解决方案是阈值签名方案 (TSS)——一种密码学机制,允许多方创建部分签名,然后将其聚合以签署交易。

但两者之间有什么区别,它们在 WaaS 中的密钥管理中如何工作?

考虑以下情景……

一个钱包由三个设备管理,每个设备持有密钥的一个片段,采用 2/3 阈值。 这意味着要使用钱包成功签署交易,必须建立至少两个设备的仲裁。 如何防止所有这些设备以及任何外部方知道完整的秘密签名密钥?

Shamir 密钥共享 如何工作?

Shamir 密钥共享可以在一定程度上帮助解决这个问题。 它允许将一个密钥分成多个份额,达到这些份额的最小阈值将重建原始密钥。 该算法依赖于多项式插值来生成基于多项式曲线上点的份额,这使得它非常灵活,因为你可以无限扩展持有份额的设备数量而不会破坏设置。

SSS 的局限性

开发人员可以使用许多现成的 SSS 解决方案。 但是,这可能会在实施不正确时导致漏洞。 例如:

  • 如果私钥是在 DKG 协议中生成的,并且是使用 SSS 分发的,那么 t 密钥将被重建,并且在重建时可能会暴露。 以同样的方式,如果环境不安全,每次钱包签署交易时也可能会暴露,因为密钥的整体会暂时存储以创建签名。
  • 还存在恶意更改某些份额的风险。 SSS 仅用于在达到最小仲裁时创建密钥,但它无法验证已发送的所有份额是否正确。 这意味着一个腐败的交易者可以发送恶意的密钥份额,并且仍然可以重建密钥,并且此操作可能导致他们从诚实参与者提交的份额中获取信息。

可验证密钥共享 (VSS) 被用作 SSS 的扩展来补救这个问题,它在密钥重建之前添加了一个验证步骤。 但是,密钥在重建后仍然作为整体存储,因此窃取密钥的风险仍然存在。

现在我们开始明白为什么在错误的地方使用 SSS 和 VSS 会很危险。 虽然它是分割密钥的绝佳方法,但在提供减少旨在窃取密钥的各方的攻击机会所需的安全保证方面,它有所欠缺。 在 Web3Auth 中,我们使用了一个专门的节点基础设施作为检索 SSS 中私钥的入口点,确保密钥只能由授权设备访问。

密钥存储和 SSS

有两种方法可以将密钥及其份额与 SSS 结合存储:第一种是使用中心化密钥管理系统 (KMS),第二种是使用多方计算 (MPC)。

KMS 将加密密钥存储在由平台控制的云服务器中。 与 SSS 一起使用时,它会将重建的密钥临时存储在这些服务器上。 这使得它成为一个快速便捷的解决方案,但也使得钱包成为非托管的,并使重建的密钥更加容易受到攻击。

另一方面,MPC 协议采用各种方以一种保护隐私的方式计算密钥份额,一旦达到仲裁。 它有时使用 SSS 作为存储和检索整个私钥的机制。 但与 KMS 一样,它仍然依赖于存储整个重建的密钥来生成签名,但这次只是在用户的设备中,这比 KMS 更安全。

使用阈值签名方案进行密钥管理

因此,考虑到 SSS 的主要问题是重建后临时存储完整的密钥,还有什么其他方法可以使用多方生成数字签名?

阈值签名方案 (TSS) 是一种允许参与者仅使用其份额来签署消息的方式,它允许并行构造部分密钥。 然后通过拉格朗日插值聚合这些部分密钥,验证最终签名而无需重建它。 它解决了 SSS 中的许多漏洞,主要包括:

  1. 没有单点故障

因为各方可以同时创建部分签名,所以它创建签名而无需完整密钥被重建或存储在单个位置,从而为任何不良行为者留下零窃取它们的机会。

  1. 密钥份额的可验证性

TSS 还采用了像 VSS 中那样的验证步骤,以防止腐败的参与者更改其密钥份额,并且它还使用多项式插值,但这次验证是并行运行的,并且具有允许一方构造其聚合签名部分而无需了解有关其他方输入的任何其他信息的机制。

  1. 参与者数量的灵活性

当 TSS 与主动密钥共享一起使用时,可以调整签名生成阶段的签名者数量,因此它也提供了添加新参与者或从现有阈值组中撤销份额的灵活性,很像 SSS。

Web3Auth 的 MPC-TSS 解决方案

使用 Web3Auth MPC-TSS 基础设施,用户的密钥被分成多个部分并存储在用户的设备和我们的 Auth 网络中。 这确保了用户的密钥始终可用,并且永远不会存储在单个位置。

通过使用 TSS,Web3Auth 钱包因此能够生成签名,而无需组合密钥份额,从而使其成为一个安全的密钥管理基础设施,同时保持类似 SSS 的灵活性。

结论

虽然 Shamir 密钥共享是一种用于分割密钥的宝贵算法,但应谨慎使用,并提供安全的环境。 它的主要弱点是缺乏对输入的验证,并且需要重建和存储密钥才能签署交易。

这可以通过一种不同的加密方法来解决,称为阈值签名方案 (TSS),它使用分布式计算来生成签名,永远不需要创建完整密钥,同时确保签名生成过程的完整性和稳健性。

常见问题解答:

在哪里可以找到有关 Web3Auth 如何实施阈值签名方案的更多信息?

要了解更多关于 Web3Auth 的 MPC 架构,请参考我们的文档中的这篇文章

Web3Auth 支持哪些类型的 TSS?

我们支持流行的 GG19、GG20、EDDSA 和 DKLS19,因此支持椭圆曲线上 ecdsa 签名标准。 我们也与 TSS 实现无关,因此我们支持其他签名方案,如 EDDSA 或其 Schnorr 变体、BLS 和 Stark(即将推出)

  • 原文链接: blog.web3auth.io/shamirs...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
web3auth
web3auth
Simplest Web3 Wallet Infrastructure ever. No more seed phrases. Try our MPC/AA-enabled, self-custodial solution here: http://web3auth.io