作者:Omer ShlomovitsZenGo

门限签名方案 (TSS) 是一种加密原语,可实现分布式密钥生成和签名。在区块链客户端中引入 TSS 是一种新范式,可带来诸多优势,在安全方面的表现尤为突出。从广义上讲,TSS 可以重新定义密钥管理系统(如加密货币钱包)的设计,并为 DeFi 用例提供原生支持。然而,TSS 作为一项新兴技术,也存在一定的风险与局限性。

本文将详细介绍 TSS 的基本概念、为区块链领域带来的潜在优势、在区块链客户端中的实现方法,及其与 Shamir 秘密共享和多重签名的区别。同时,我们将了解利用 TSS 进行分布式密钥管理的不同方式,并探讨相关风险和局限性。


密码学的力量

要理解 TSS 的概念,我们需要先掌握一些密码学的基础知识。自 20 世纪 70 年代以来,越来越多的互联网系统(如 TLS 和 PGP)开始采用非对称加密技术,也称为公钥密码学 (PKC)。PKC 基于两把密钥:公钥和私钥。公钥是公开的,任何人都可以发布和使用,而私钥则是保护系统安全的核心机密。

加密与数字签名是 PKC 的两大主要应用场景。这两种技术都依赖于三种算法:首先是生成私钥与公钥对,其次是生成密文/签名,最后是解密/验证过程。以数字签名为例,签名算法利用仅由所有者掌握的私钥生成独一无二的签名,并将其附加到消息中。随后,任何持有公钥的人都可以验证该签名的真实性和准确性。


区块链

毫无疑问,区块链是一项极具潜力的强大技术,它提供了一个用于组织和记录事件的共识层。这一基础架构赋予用户构建去中心化经济,甚至去中心化政府的可能性。令人意想不到的是,运行基本区块链所需的密码学仅依赖于数字签名即可实现。在区块链中,私钥代表身份,而签名则是身份所作的公开声明或主张。区块链通过对这些声明进行排序并依据一套规则进行验证,从而确保签名的不可伪造性与准确性。

与区块链中采用的传统密码学技术相比,现代密码学引入了许多令人兴奋的新成果,例如零知识证明、同态加密和多方计算等。在过去 10 年中,区块链研究极大推动了应用密码学的发展,在上述领域以及更多方面都取得了显著突破。

本文将聚焦于其中一项突破,即安全高效的门限签名方案 (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 中,由一个称为“分发者”(dealer) 的角色负责生成私钥秘密分片。分发者在单一位置生成完整的私钥,并将其拆分为多个秘密分片,然后分发到不同的位置。在 TSS 中,没有分发者的存在,因为整个流程是分布式的,完整的私钥从未在单一位置生成。

  • 签名:在 SSSS 中,各方需要先重建完整的私钥才能完成签名,这导致每次签名时都会面临单点故障的风险。而在 TSS 中,签名过程以分布式方式完成,无需重建秘密分片。

因此,在 TSS 方案中,私钥在整个生命周期内都不会出现在单一位置,显著提升了系统安全性。


门限钱包

基于 TSS 技术的钱包与传统的加密货币钱包略有不同。传统钱包通常通过生成助记词来确定性地推导钱包地址。用户可以利用这种分层确定性 (HD) 结构:1) 获取与钱包地址对应的私钥并进行交易签名;2) 通过助记词恢复所有钱包密钥。

门限钱包的运作机制则更加复杂。虽然也支持生成 HD 结构,但这一过程需要以分布式的方式进行计算,类似于另一种 MPC 协议。各参与方需共同决定下一个要使用的密钥。换句话说,每个参与方都有各自独立的助记词。这些助记词是单独生成的,并不会组合在一起,因此任何一方都无法单独从自己的助记词中推导出完整的私钥。

此外,基于 TSS 的钱包还具备一项强大的安全功能,即可以在无需更改公钥和区块链地址的情况下进行私钥轮换。私钥轮换也称为主动秘密共享,是另一种 MPC 协议,以旧的秘密分片为输入,生成一组全新的秘密分片。旧的秘密分片可以删除,而新的分片则可以继续使用。

这一架构为门限钱包的安全性引入了时间维度,意味着攻击者必须在同一时间出现在多个位置,才能成功对钱包发动攻击。即便试图伪造签名,攻击者在私钥轮换前后所获得的秘密分片也无法结合成完整的密钥,对安全性不会产生额外威胁。

然而,这类钱包的一个局限在于其不支持助记词,与单密钥钱包系统不兼容。因此,明确哪些方持有秘密分片显得尤为重要。

可能的架构有以下几种:

  • 外包 TSS:用户将计算交由“n”台服务器完成。密钥生成、管理和签名将有效地外包给服务提供商,这些服务提供商不是资产所有者,但通过提供安全保障获取一定回报。

  • 多设备协作:用户在自己拥有的设备之间运行 TSS。例如,物联网设备、移动设备和笔记本电脑协同工作。

  • 混合模式:部分参与方由外部服务提供商控制,部分运行在用户自有设备上,共同完成 TSS 计算。

第一种方式减轻了用户客户端的 TSS 计算负担,但服务提供商可能会串通,从而窃取用户资产(尽管通常假设足够多的服务提供商不会同时被攻破,但不排除这种可能性)。

第二种方式为用户提供了完全控制权,但由于需要多台设备在线参与 TSS 计算,交易操作较为繁琐。

第三种方式实现了两者兼顾,让用户能以简单高效的方式完成交易,又确保交易未经用户授权无法完成。


TSS 和智能合约

多年来,研究人员探索出了数字签名的诸多用途,其中一些已经成为不可或缺的关键技术。如前所述,TSS 是一种可以显著提升安全性的加密原语。在区块链场景中,基于 TSS 的密码学方案能够取代许多传统功能。例如,去中心化应用、Layer 2 扩容方案、原子交换、混币、遗产传承等都可以通过 TSS 框架实现。这使得成本和风险较高的链上智能合约操作逐渐让位于更加经济可靠的解决方案。

举例来说,多跳锁通过巧妙利用两方签名,提供了一种更安全、更私密的支付通道网络,可作为比特币闪电网络的替代方案。ShareLock 则可能是以太坊上成本最低的链上混币方案,基于单次门限签名验证。


风险

近年来,TSS 的应用逐步增多。然而,作为一项相对较新的技术,它仍面临一些局限和潜在问题。与传统的公钥密码学技术相比,TSS 协议更加复杂,且尚未经过广泛的“实战检验”。通常,与简单的数字签名相比,TSS 需要额外的加密假设,而这些假设可能不够稳健,因此引入了传统方案中未曾出现的加密攻击向量(请参阅 2019 年 Breaking Bitcoin Conference 的相关演示文稿)。要在系统中安全部署 TSS,建议寻求安全工程师与密码学专家的专业支持。

从积极的一面来看,得益于不断增加的社区贡献、同行评审、代码审计以及算法优化,现有和新兴的 TSS 应用正变得日益成熟。


总结

本文介绍了门限签名方案 (TSS) 的基本概念,这是一种极具潜力的加密原语,有望改变我们与区块链交互的方式。

由于本文未涉及可在 BNB Chain 和比特币中应用的门限 ECDSA,感兴趣的读者可以参考以下最新论文。此外,如果您希望尝试一些 TSS 应用,可以查看此处的两方 BNB Chain 钱包的开源代码,或使用 ZenGo 钱包,这是一款采用混合模式的非托管两方 BNB Chain 钱包。


深度阅读:

  • 安全高效的两方 ECDSA 签名方案

  • 安全高效的多方 ECDSA 方案,支持实用的分布式密钥生成与加密货币托管应用

  • 基于哈希证明系统的两方 ECDSA 及其高效实例化

  • 采用高效去信任化设置的多方门限 ECDSA

  • 基于 ECDSA 假设的安全两方门限 ECDSA

  • 基于 ECDSA 假设的门限 ECDSA:多方案例