多方计算是 Google Cloud 数字资产签名密钥的托管平台。它结合了阈值签名、交易政策执行和企业治理控制。
为何要使用阈值签名
在机构数字资产托管中,私有签名密钥直接控制资产移动。保护签名密钥需要降低三种不同的安全和运营风险:
- 加密健全性:密钥被盗或未经授权使用会导致攻击者签署欺诈性交易,从而造成不可逆转的资产损失。
- 可用性:临时中断或无法访问的签名基础设施会使交易结算和流动性操作停止。
- 持久性:密钥材料永久丢失或损坏会导致关联的数字资产无法恢复。
集中式密钥管理需要在安全性和运营弹性之间做出权衡。将完整的私钥存储在单个硬件安全模块 (HSM) 中会造成可用性、持久性和加密健全性方面的单点故障。在多个 HSM 或区域中复制该密钥可提高可用性和耐用性,但会扩大攻击面。由于每个副本都包含完整的密钥,因此每个副本都会引入另一个单点泄露。
多方计算通过使用阈值签名方案(包括 DKLS23 协议的强化扩展)来解决这一权衡问题。每个独立且由硬件支持的参与方都会生成并持有隔离的密钥共享。在签名期间,这些参与方会运行多方协议来生成有效签名,而无需在单个位置组装完整的私钥。如果攻击者入侵的参与方数量少于签名阈值,则无法伪造签名或重构密钥。同时,即使个别参与方不可用或永久失败,只要有足够的参与方达到阈值,签名操作就会继续。如需详细了解该协议,请参阅 DKLS23 加密背景。
支持的区块链
多方计算支持以下密钥算法:
| 算法 | 曲线 | 典型链 |
|---|---|---|
ECDSA (EC_SIGN_SECP256K1) |
secp256k1 | 比特币、以太坊和 EVM 兼容链 |
EdDSA (EC_SIGN_ED25519) |
Ed25519 | Solana(敬请期待) |
生成分布式密钥后,多方计算会返回其公钥和从中派生的区块链地址。
企业控制
多方计算会在您自己的专用隔离实例中为您的组织建模。它决定了谁持有密钥份额、必须有多少人批准签名,以及在签名之前根据哪些规则评估每笔交易。
用户和角色
用户是指您添加到实例中的身份。每个用户都绑定到一个主账号,可以是 Google 账号,也可以是员工身份联合主账号。每个用户都拥有一个或多个角色:
- 管理员:管理用户、团队和其他实例资源。
- Policy Author:编写和批准交易政策。
- 签名者:持有密钥份额并批准交易。
签名者、政策作者和管理员使用授权密钥签署批准,该密钥的私钥部分绝不会离开客户的保管范围。
在 API 级别,多方计算角色与 IAM 角色协同工作。IAM 控制主账号可以调用的 API 方法。用户的角色控制着该主账号可以在实例中执行的操作。如需了解 IAM 角色和用户角色如何协同工作,请参阅安全和授权。
团队
团队是一组签名者,例如一个部门或一组管理人员。每个签名者都只属于一个团队。通过团队,KeyPolicy 可以引用签名者群组,例如“为财务团队的 3 名成员生成密钥共享,并要求其中任意 2 名成员签名”,而不是指定每个人的姓名。
MPC 政策
KeyRing 和 KeyPolicy
KeyRing 用于对密钥进行分组。创建 KeyRing 时,您需要设置其 KeyPolicy,该政策会为 KeyRing 中创建的每个密钥定义:
- 哪些团队和用户持有密钥共享,
- 其中有多少人必须参与签名(阈值),以及
- 每个密钥共享的存储位置(Google Cloud、客户场所或用户移动设备)。
密钥无法在 KeyRing 之间移动,也无法删除。您只能停用密钥,以防止其进一步签名。
KeyLists
KeyList 是一个命名的区块链地址列表,交易政策可以引用这些地址,例如受信任的目的地。条目可以是现有密钥、密钥环(包括日后添加到其中的密钥)或您手动输入的地址。
交易政策
交易政策是一项 Cedar 规则,用于允许或禁止多方计算中的交易,例如支出限额或目标地址许可清单。这些有效政策会共同针对每笔交易做出判定,即允许或拒绝。该判定结果会为签名者提供指导,但不会强制执行最终决定:即使自动化交易政策拒绝了某笔交易,只要有足够多的签名者批准,该交易仍可执行。
如需了解如何编写和组合规则,请参阅编写事务政策规则和事务政策评估。