Chris Diya
Google Cloud 安全架构师
Bertrand Portier
Google Cloud 数字资产负责人
在之前的博客文章中,我们介绍过多方计算 (MPC) 如何有助于降低单点入侵的风险,并促进即时的、符合策略的数字资产交易。公司可以通过使用Google Cloud 的 Confidential Space 快速、便捷地实施 MPC 解决方案。该解决方案的优势在于能够在线持有资产以进行实时交易,并允许多方以保护隐私和符合策略的方式在交易中进行合作。
今天,我们将介绍一个使用 Confidential Space 来实现符合 MPC 的区块链签名的参考架构。为了说明这个架构,让我们来想象一下,A 公司希望将数字资产转移到 B 公司,由于他们采用了 MPC 兼容的模型而不是单独的私钥,因此他们使用分布式密钥共享,其中由关键股东协作签署交易。这使 A 公司能够简化用户体验,提高运营效率,同时保留对其私钥的控制权。
“富国银行一直在寻找新的金融科技机会和新兴趋势,以重新定义未来的客户体验,” 富国银行区块链平台先进技术高级副总裁 Vitaliy Dorum 表示,“例如,随着 Web3 技术日益成为主流,富国银行正在探索为新一代数字产品提供安全访问的解决方案。通过与 Google Cloud 数字资产团队合作,富国银行可以尝试使用 Google Cloud 服务,包括与多方计算结合的 Confidential Space,我们认为这可以算是 Web3 环境中安全解决方案的基本组成部分。”
为了描述实现这一目标的关键组件,我们将介绍技术设置,并概述触发数字资产从 A 公司转移到 B 公司的批准和签名流程。
该架构如图 1 所示。
图 1 - Confidential Space 架构上的 MPC 数字资产签名
该架构分布如下:
● 1 个 MPC 操作员环境(图表右侧):这是用于运行机密工作负载的环境,该工作负载协调签名过程,以创建签名区块链交易。该工作负载可以由托管基础设施提供商操作(在我们的例子中由 A 公司直接操作)。操作员在任何时候都无法访问纯文本形式的机密材料(也不能影响签名过程)。
● N 个联合签名者环境(图表左侧):联合签名者使用这些环境在审批和交易签名步骤中进行协作。我们显示了在 Google Cloud 中运行的所有联合签名者,但也可以使用其他环境(例如:移动设备、本地系统和其他云)。
MPC 操作员环境是通过以下组件实现的:
● Confidential Space - 这是敏感工作负载在 Confidential Space 虚拟机(VM)上运行的地方。Confidential Space 有两个核心组件:
o 在 Confidential Computing 可信执行环境(TEE)中以最小化的风险运行敏感容器化工作负载的强化型基本映像。
o 一种证明服务,用于认证操作环境,验证工作负载的完整性,并使这些保证(声明)能够在 MPC 策略逻辑中使用。
● Artifact Registry
o 为具有内置漏洞分析的敏感工作负载映像(用于签署区块链交易)提供安全存储。
● 节点托管 - 用于托管以太坊(或其他)区块链节点。这可以在GCP中完成,也可以使用区块链节点引擎完成。
联合签名者环境可以采用多种格式。 在我们的参考架构中,我们使用:
● Cloud KMS/HSM 来签发部分签名
o Cloud KMS 和 Cloud HSM 被用于使用不同的算法(包括 ECDSA)来生成签名。所有这些都是通过一个简单、统一的 API 完成的,不需要自定义代码,也不需要 HSM 设备管理。
o 对于签名者不使用 Cloud KMS 或 Cloud HSM 服务生成的签名的用例,这些服务将用于包装其他地方生成的机密材料。
● Cloud IAM (工作负载身份池)
o 工作负载身份池确保属性条件(由 Confidential Space 认证服务提供)得到满足,然后再授予有权访问 Cloud KMS/HSM 中密钥的身份。
现在我们已经在较高层次上描述了体系架构,接下来我们可以从设置步骤开始,逐步完成执行 MPC 签名所需的步骤:
● 我们从工作负载映像开始。这包含 MPC 签名应用程序和触发交易签名过程所需的相关策略逻辑。
● 应用程序映像托管在 Google Artifact Registry 中(也可以使用其他远程注册表,只要 Confidential Space 虚拟机可以连接到它们)。
● 然后,我们在 Cloud KMS/HSM 中创建密钥,并构建 Cloud IAM 策略,以便在授权时授予工作负载对这些密钥的访问权限。
● 最后,我们将工作负载映像部署到 Confidential Space 虚拟机上。
现在我们已经完成了设置,是时候进行交易了。交易步骤如下(图2,重复对每个签名的请求)
图 2-符合 MPC 的签名步骤
1. 未经签名的交易请求进入 MPC 签名应用程序。
2. 认证服务验证 Confidential Space 的操作环境和工作负载映像的完整性。一旦满足,它将(基于这些验证)生成 MPC 签名应用程序在访问上面创建的密钥时使用的声明。
3. 一旦 MPC 签名应用程序(工作负载)收到所需数量的批准,它就会联系联合签名者的 KMS,要求他们(部分)签名来创建签名交易。
4. 一旦收集到所有联合签名,工作负载就会签署区块链交易并将其提交给本地区块链节点。
*注意:我们过度简化了这一步骤,因为我们知道每种实现方式都有自己的机制。
“Google Cloud 的 Confidential Computing 让我们能够将 AMD 的 SEV 无缝集成到我们的 TEE运行中,只需少量的代码更改即可实现多方计算(MPC)。” MPCVault 首席执行官 Jason Li 表示,“这将进一步增强我们解决方案的安全性,使我们能够更有信心地大规模保护机构的加密资产。”
此外也存在替代方案与补充方法,包括使用 Google Cloud 服务来生成联合签名,或者让联合签名者轮流在自己的环境中构建区块链签名(这会是一种更加去中心化的架构)。我们希望这篇文章能激发在 Google Cloud 上实现 MPC 的不同方法。
如果您想更深入地了解 Confidential Space 的组件,包括我们防止 TEE 受到威胁的方法,请参阅我们描述安全控制验证的文章,查看操作指南文档,也可以了解更多关于 Google Cloud 上的其他 Web3 产品和解决方案的信息。
我们在此感谢产品经理 Nelly Porter 和 Rene Kolga,以及客户工程师 Devon Yarbrough 对本文的贡献。
文章信息
相关推荐
