作者:Omer Shlomovits,ZenGo。

阈值签名方案 (TSS) 是一种用于分布式密钥生成和签名的加密原语。在区块链客户端中使用 TSS 是一种新范例,可以提供许多好处,特别是在安全性方面。从更广泛的意义上讲,TSS 可以影响密钥管理系统(例如加密钱包)的设计,并引领 DeFi 用例中的原生支持。话虽如此,TSS仍然是一项新技术,因此也应该考虑风险和局限性。

在本文中,我们将介绍什么是 TSS、它给区块链空间带来哪些潜在优势、如何在区块链客户端中实现它、它与 Shamir 秘密共享和多重签名有何不同、有哪些不同的方法使用 TSS 进行分布式密钥管理,最后我们讨论其风险和局限性。


密码学的力量

要理解TSS,我们首先需要一些密码学的基础知识。自 20 世纪 70 年代以来,越来越多的互联网系统(例如 TLS 和 PGP)采用非对称加密技术,也称为公钥加密技术 (PKC)。 PKC 使用两把密钥:一把公钥和一把私钥。虽然公钥不是秘密,任何人都可以发布和使用,但私钥是代表系统安全的秘密信息。

加密和数字签名是 PKC 最常见的两种用法。加密和数字签名方案都依赖于三种算法。首先是私钥和公钥对的生成,第二是密文/签名的生成,第三是解密/验证的过程。对于数字签名,签名算法需要只有其所有者知道的私钥来生成唯一的签名。签名附加到给定消息中,任何持有公钥的人都可以验证其真实性和正确性。


区块链

毫无疑问,区块链是一项非常强大的技术。它提供了一个组织和记录事件的共识层。这样的基础设施为我们用户提供了建立去中心化经济甚至政府的潜在力量。令人惊讶的是,运行基本区块链所需的密码学可以仅基于数字签名。在区块链的上下文中,私钥代表身份,而签名是由身份完成的公开声明或声明。区块链将根据一组规则对语句进行排序并验证它们,这些规则除其他外确保签名不可伪造且正确。

与区块链中使用的更经典的密码学相比,现代密码学工具箱包括一些很棒的魔术:零知识证明、同态加密和多方计算等等。正如我们在过去十年中看到的那样,区块链研究极大地推动了应用密码学的发展,最近在上述所有方面以及更多方面都取得了突破。

在本文中,我们将重点关注一个这样的突破:高效的安全门限签名(TSS)。


MPC 和门限签名方案(TSS)

多方计算 (MPC) 是密码学的一个分支,始于约 40 年前 Andrew C. Yao 的开创性工作。在 MPC 中,一组互不信任的各方尝试根据其输入联合计算一个函数,同时保持这些输入的私密性。

举个例子,假设一家公司的 n 名员工想知道谁的工资最高,但又不想向对方透露他们的实际工资。这里的私人输入是工资,输出是工资最高的员工的姓名。使用 MPC 进行此计算,我们发现在计算过程中甚至没有泄露任何工资。

MPC 的两个主要属性是正确性和隐私性:

  • 正确性:算法产生的输出是正确的(如预期的那样)。

  • 隐私性:一方持有的秘密输入数据不会泄露给另一方。

我们将使用 MPC 以分布式方式计算数字签名。让我们看看如何将上述属性应用于签名。回想一下,对于签名,我们分为三个步骤:

  • 密钥生成:第一步也是最复杂的。我们需要生成一个公开的密钥,并用于验证未来的签名。但是,我们还需要为每一方生成一个单独的秘密,我们将其称为秘密共享。在正确性和隐私方面,我们说该函数将向所有各方输出相同的公钥,并为每个各方输出不同的秘密共享,以便:(1)隐私:各方之间不会泄露秘密共享数据,并且(2)正确性:公钥是秘密份额的函数。

  • 签名:这一步涉及到签名生成函数。各方的输入将是其秘密份额,作为上一步(分布式密钥生成)的输出而创建。还有众所周知的公共输入,即要签名的消息。输出将是数字签名,隐私性确保计算过程中不会发生秘密共享的泄露。

  • 验证:验证算法保持经典设置中的原样。为了与单密钥签名兼容,每个了解公钥的人都应该能够验证和验证签名。这正是区块链验证节点所做的事情。

门限签名方案(TSS)是我们给分布式密钥生成(DKG)和分布式签名门限签名方案的组合的名称。


将 TSS 与区块链相结合

在区块链中使用 TSS 的自然方式是更改区块链客户端以使用 TSS 生成密钥和签名。在这里,我们使用术语“区块链客户端”来指代由完整节点执行的命令集。在实践中,TSS技术允许我们用分布式计算替换所有与私钥相关的命令。

为了更详细地解释它,我们首先简要描述如何在经典区块链设计上创建新地址。简单来说,我们可以通过生成私钥,然后根据私钥计算公钥来创建新的地址。最后,从公钥中推导出区块链地址。

现在,使用 TSS,我们将有一组 n 个参与方共同计算公钥,每个参与方都持有私钥的秘密份额(各个份额不会透露给其他方)。从公钥中,我们可以按照与传统系统中相同的方式导出地址,从而使区块链不知道地址是如何生成的。优点是私钥不再是单点故障,因为各方只持有私钥的一部分。

签署交易时也可以这样做。在这种情况下,我们不是使用私钥进行单方签名,而是在多方之间运行分布式签名生成。因此,只要有足够多的人诚实行事,各方就可以产生有效的签名。我们再次从本地计算(单点故障)转向交互式计算。

值得一提的是,分布式密钥生成可以以允许不同类型的访问结构的方式完成:一般的“t out of n”设置将能够承受私钥相关操作中最多 t 次任意失败,而无需损害安全。


TSS 与多重签名

一些区块链提供 TSS 功能作为软件的内置或可编程部分。我们将此功能称为多重签名或多重签名。为了更好地理解差异,我们可以将多重签名视为区块链应用层中的 TSS。

换句话说,多重签名和 TSS 本质上都在试图实现相似的目标,但 TSS 使用的是链下加密技术,而多重签名则发生在链上。然而,区块链需要一种对多重签名进行编码的方法,这可能会损害隐私,因为访问结构(签名者数量)暴露在区块链上。多重签名交易的成本较高,因为不同签名者的信息也需要在区块链上进行通信。

在 TSS 中,签名者的详细信息被纳入常规交易中,从而降低了成本并维护了隐私。另一方面,多重签名可以是非交互式的,这省去了在不同签名者之间运行复杂通信层的麻烦。

主要区别在于多重签名是特定于区块链的,需要针对每个区块链重新实现,并且在某些情况下根本不支持。相反,TSS 依赖于纯密码学,因此始终可以提供支持。可以在此处找到一篇精彩的文章,其中有关于差异的说明。


TSS 与 Shamir 秘密共享方案

Shamir 秘密共享方案 (SSSS) 提供了一种以分布式方式存储私钥的方法,以便在私钥处于静止状态时,将其存储在多个位置。 SSSS 和 TSS 之间有两个区别:

  • 密钥生成:在 SSSS 中,有一个称为“经销商”的一方负责生成私钥秘密共享。这意味着在密钥生成时,私钥在单个位置生成,然后由经销商分发到不同的位置。在 TSS 中,不存在经销商,因为其角色是分布式的,因此完整的私钥永远不会位于单个位置。

  • 签名:在 SSSS 中,各方必须重建完整的私钥才能签名,这又会在每次需要签名时导致单点故障。在 TSS 中,签名以分布式方式完成,无需重建秘密共享。

正如我们所看到的,在 TSS 中,私钥(代表系统的安全性)在其整个生命周期中永远不会位于单一位置。


门槛钱包

基于 TSS 技术的钱包与传统的加密货币钱包有些不同。通常,传统钱包会生成种子短语并使用它来确定性地导出地址。用户稍后可以使用这种分层确定性 (HD) 结构来 1) 获取与钱包地址相对应的私钥并用它们签署交易,2) 使用种子短语恢复所有钱包密钥。

在门槛钱包中,事情更加复杂。虽然可以生成 HD 结构,但它的生成必须以分布式方式计算,就像另一种 MPC 协议一样。各方需要共同决定下一个使用的密钥是什么。换句话说,各方都有自己的助记词。种子短语是单独生成的,并且从不组合,因此一方无法单独从其种子中获取私钥。

基于 TSS 的钱包还具有良好的安全功能,可以在不更改相应公钥和区块链地址的情况下实现私钥轮换。私钥轮换,也称为主动秘密共享,是另一种 MPC 协议,它将秘密共享作为输入,并输出一组新的秘密共享。旧的秘密共享可以删除,新的秘密共享可以以同样的方式使用。

这种结构为安全性增加了时间维度,这意味着攻击者必须同时处于多个位置才能攻击阈值钱包。如果攻击者想要伪造签名,则在轮换之前和轮换之后组合秘密共享将不会给攻击者带来额外的权力。

此类钱包的一个缺点是缺少助记词使其与单密钥钱包系统不兼容。因此,考虑哪些方将持有秘密股份很重要。

有几种可能的架构:

  • 外包 TSS:用户让“n”台服务器代表他们运行计算。将密钥生成、管理和签名有效地外包给服务提供商,这些服务提供商不是资产所有者,但提供安全层以换取一些激励。

  • 使用多个设备:用户将在他们拥有的设备之间运行 TSS。例如,一方是某种物联网设备,另一方是用户的移动设备,另一方是他们的笔记本电脑,等等。

  • 混合:TSS 的运行方式是,部分参与方由外部服务提供商控制,部分参与方在用户拥有的设备上运行。

第一种方法从用户客户端卸载繁重的 TSS 计算。另一方面,服务提供商可以串通(我们假设足够多的服务提供商不会同时受到攻击,但实际上,他们可能会)并窃取用户的资产。

第二种方法为用户提供了完全控制权,但由于需要多个设备上网并参与 TSS 计算,因此进行交易变得很麻烦。

第三种选择被认为是两全其美,因为它为用户提供了一种简单快捷的方式来进行交易,但又不会影响在未经用户授权的情况下完成交易。


TSS 和智能合约

多年来,研究人员发现了数字签名的许多用途,其中一些用途非常重要。如前所述,TSS 是一种可以极大提高安全性的加密原语。在区块链的背景下,我们可以说许多功能可以被基于 TSS 的密码学所取代。去中心化应用程序、第 2 层扩展解决方案、原子交换、混合、继承等等都可以构建在 TSS 框架之上。这最终将使昂贵且有风险的链上智能合约操作被更便宜、更可靠的替代方案所取代。

举一些具体的例子:多跳锁以巧妙的方式利用了两方签名,可以作为比特币闪电网络的替代方案,具有更安全和私密的支付通道网络。 ShareLock 可能是以太坊最便宜的链上混合解决方案,基于单个阈值签名的验证。


风险

在过去几年中,TSS 实施量显着增加。然而,作为一项相对较新的技术,它仍然存在一些局限性和担忧。与经典的公钥加密技术相比,TSS 协议可能非常复杂,并且尚未经过“实战检验”。通常,与简单的数字签名相比,TSS 需要额外的、较弱的加密假设。因此,传统设置中不存在的加密攻击向量现在被发现(请参阅 2019 年 Breaking Bitcoin Conference 的演示文稿)。安全工程师和应用密码学家可以协助在您的系统中安全部署 TSS。

从积极的一面来看,由于质量贡献、同行评审、审计和算法性能改进的增加,现有和新的实现变得越来越强大。


结束语

在本文中,我们介绍了门限签名方案(TSS)的基础知识,这是一种令人着迷的加密原语,有可能显着改变我们使用区块链的方式。

由于本文没有讨论可以在币安链和比特币中使用的 Threshold ECDSA,有兴趣的可以参考以下近期论文列表。此外,如果您想尝试一些 TSS 实现,您可以在此处找到两方币安链钱包的代码,或者尝试 ZenGo 钱包,它利用混合方法提供非托管两方币安链钱包。


进一步阅读:

  • 快速安全的两方 ECDSA 签名

  • 快速安全的多方 ECDSA,具有实用的分布式密钥生成和加密货币托管应用

  • 来自哈希证明系统和高效实例化的两方 ECDSA

  • 具有快速无信任设置的快速多方阈值 ECDSA

  • 根据 ECDSA 假设确保两方阈值 ECDSA

  • ECDSA 假设的阈值 ECDSA:多方案例