AWS Architecture Blog

How Anchorage Digital and Turnkey verify code with AWS Nitro Enclaves

7.1内容质量
How Anchorage Digital and Turnkey verify code with AWS Nitro Enclaves

TL;DR · AI 摘要

How Anchorage Digital and Turnkey verify code with AWS Nitro Enclaves AWS Architecture Blog How Anchorage Digital and Tu...

核心要点

  • 主题聚焦:How Anchorage Digital and Turnkey verify code wi
  • 来源:AWS Architecture Blog,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端#云计算#安全
打开原文

Anchorage Digital和Turnkey如何使用AWS Nitro Enclaves验证代码 | AWS架构博客

Anchorage Digital和Turnkey如何使用AWS Nitro Enclaves验证代码

本文由Anchorage Digital的Prasanna Gautam和Turnkey的Arnaud Brousseau联合撰写。

在加密货币领域,信任是一种负担。钱包通常会将计算委托给第三方来解析交易、评估策略或管理密钥材料。每次操作都会引发一个问题:你如何确认服务确实运行了所声称的代码?合同信任、网络边界安全和声誉无法提供密码学层面的答案。基于AWS Nitro Enclaves构建的可验证基础设施可以做到这一点。

Anchorage Digital是美国首家获得联邦监管的数字资产银行。Turnkey是一家可验证密钥管理基础设施提供商,其平台保护着数百万个钱包。二者合作,基于AWS Nitro Enclaves构建了这种密码学解决方案。他们的合作成果是VisualSign,这是一个开源的跨链交易解析器,运行在Nitro Enclaves内部,并通过证明软件来源的证明返回结果。该方案的直接应用通过将复杂交易转化为人类可读的形式,保护用户免受网络钓鱼攻击,其架构也为超越区块链的可验证基础设施提供了蓝图。

本文将描述该系统的架构和设计决策,包括为什么AWS Nitro Enclaves是信任模型的基础。同时展示这种模式如何适用于任何高信任度的工作流程,而不仅限于Web3或加密货币。

问题:Web3中的盲签名和网络钓鱼

加密货币网络钓鱼攻击利用了钱包的基本局限性:它们无法原生解析复杂交易的完整语义。盲签名是指钱包无法显示交易全部影响时的批准操作,这也是攻击者依赖的漏洞。用户在与去中心化金融(DeFi)协议交互时,可能会收到签署交易的请求,但钱包仅显示原始十六进制负载或部分摘要。攻击者会精心设计看似无害的恶意交易,但其中包含隐藏操作:将代币批准权限转移到攻击者控制的地址、意外的智能合约交互,或伪装在多步骤操作中的资金转移。

行业曾尝试通过模拟服务和交易解码器使交易变得可读。这些方法通常要求钱包信任第三方服务,但没有验证服务运行了哪些代码或结果是否未被篡改的途径。

交易解析器需要两个保证:

  • 正确性:解析逻辑是经过审计和批准的精确、未修改的代码。
  • 完整性:解析结果在解析器和钱包之间未被篡改。

考虑一个 Uniswap Universal Router 交易:visualsign-parser 测试套件中的 uniswap-v2swap.input fixture 是 2,470 字符的原始十六进制数据。VisualSign 将其转化为清晰的分层结构:一个 Permit2 授权、一个包含特定代币数量和最小输出的 V2 交易、一笔费用支付以及 WETH 解包操作。每一步都明确列出地址、金额和过期时间。

可验证云服务(Turnkey Verifiable Cloud)

Turnkey 于 2025 年 1 月发布白皮书后,Anchorage Digital 与 Turnkey 的合作正式启动。白皮书详细说明了 Turnkey 如何利用 AWS Nitro Enclaves 实现钱包和私钥的大规模安全存储。Turnkey 在其技术博客《在 AWS Nitro Enclaves 上构建安全、可验证的区块链密钥管理》中详细阐述了该实现方案和 AWS 架构。

Anchorage Digital 现在使用 Turnkey Verifiable Cloud(TVC)可验证地外包计算任务。与其在自身基础设施中运行交易解析逻辑,Anchorage Digital 选择将 VisualSign Parser 部署在 Turnkey 托管的 AWS Nitro Enclaves 中。

Anchorage Digital 与 Turnkey 在《钱包集成指南》中完整记录了验证工作流程,使其他钱包提供商也能以相同方式使用 VisualSign Parser。

借助 VisualSign Parser,通常受限于运行复杂逻辑能力的加密货币钱包,现在可以可验证地解析复杂交易。这有助于防止依赖用户批准签名的钓鱼攻击,即使用户未理解交易内容。

除 VisualSign 外,TVC 还支持在可验证的隔离基础设施中运行任何高信任度工作流,包括策略评估、合规检查和交易分类。现在您可以使用密码学证明而非依赖信任来处理最敏感的操作。

架构:VisualSign 如何在 AWS Nitro Enclaves 中运行

下图展示了解析请求如何从钱包客户端传输到安全飞地再返回,以及验证证书如何进入流程。

图 1:端到端 VisualSign 流程

流程如下:

  • 钱包客户端将原始交易负载发送至 Turnkey API。
  • Turnkey API 将请求转发至运行 QuorumOS 的任何支持 AWS Nitro Enclave 的 EC2 实例。QuorumOS 是 Turnkey 用于运行安全飞地和 VisualSign Parser 二进制文件的开源操作系统。
  • 解析器将原始交易转换为结构化的人类可读输出。
  • 安全飞地使用临时 P-256 密钥对响应签名,并向 Nitro Hypervisor 请求 AWS Nitro 验证文档。
  • 钱包客户端验证证书和签名,确认响应确实来自在真实 Nitro Enclave 中运行的预期软件。

Anchorage Digital 无需信任 Turnkey:临时密钥签名和 AWS Nitro 验证文档可证明 enclave 已使用正确的软件进行配置。验证文档包含平台配置寄存器(Platform Configuration Registers,简称 PCRs),这些寄存器对 enclave 镜像、内核和应用程序进行密码学测量。钱包客户端会将 PCRs 和其他验证字段与通过可重现构建生成的值进行比对。可重现构建能够将相同源代码编译为字节完全一致的二进制文件,无论由谁执行构建或构建位置如何。由于二进制文件始终一致,其 PCR 测量结果是确定性的,因此可信值在重新构建过程中保持恒定,验证策略也无需更新。可重现性使任何一方都能独立验证 enclave 是否运行预期版本的 QuorumOS,以及精确且未修改的 VisualSign 解析器代码。

为何选择 AWS Nitro Enclaves

AWS Nitro Enclaves 提供了该架构所需的多项关键特性:

  • 基于硬件和软件的隔离 – Nitro Enclaves 使用与 Amazon 弹性计算云(Amazon EC2)实例的 CPU 和内存隔离相同的 Nitro 虚拟机管理程序(Hypervisor)技术,将 enclave 的虚拟 CPU 和内存与父实例隔离。Nitro 虚拟机管理程序确保父实例无法访问 enclave 的隔离虚拟 CPU 和内存。
  • 无持久化存储或外部网络 – Enclave 仅通过本地 vsock 通道与父实例通信。无持久化存储、无网络接口、无 DNS、无元数据服务。
  • 密码学验证 – 验证是 AWS Nitro Enclaves 独有的功能。Nitro 虚拟机管理程序会生成由 AWS Nitro 验证 PKI 签名的验证文档,包含 enclave 镜像的 PCR 测量值,向外部服务证明 enclave 的身份。
  • 无操作员访问权限 – 没有任何 AWS、Turnkey 或 Anchorage Digital 操作员可以访问 enclave 内的客户数据。

这些特性使 Nitro Enclaves 非常适合需要验证计算过程本身的工作负载:不仅要验证输入和输出,还要确保特定、已知的程序生成了结果。

为 Nitro Enclave 验证改进 Go 工具链

在生产环境中正确实现验证功能具有挑战性。验证文档规范是一种 CBOR 对象签名与加密(COSE)Sign1 结构,其有效载荷包含 X.509 证书链、PCR 测量值以及 UserData 和 PublicKey 等可选字段。正确的验证流程需要解析 CBOR、验证 COSE 签名,并回溯至 AWS Nitro 根证书的证书链。同时还需要检查证书有效期、比对 PCR 值,并在每一步都进行清晰的错误处理。

awsnitroverifier:专为 Nitro 验证设计的 Go 库

Anchorage Digital 构建并开源了 awsnitroverifier,这是一个用于验证 AWS Nitro Enclave 证明文档并实现完整信任链验证的 Go 语言库。该团队设计此库是为了弥补在构建 VisualSign 验证工作流时遇到的不足。该库实现了内置的 PCR 验证,并将解析错误与验证失败分开处理,而不是交由调用者处理。在库中处理错误可使错误原因更容易确定。该库的清晰两层错误处理机制将格式错误的输入(err != nil)与验证失败(result.Valid == false)区分开。每个验证失败都会包含具体的、可操作的错误信息(如 PCR 不匹配、证书过期、链验证失败),而不是通用的“验证失败”。

该库还直接提供对 UserData、PublicKey 和 Nonce 字段的访问,以及根证书指纹和链信任状态,用于验证请求所使用的 Nitro Enclave。该库附带了覆盖验证包的测试用例。开发人员还可以通过使用离线/测试模式,无需启动 Nitro Enclave 即可编写持续集成和持续交付(CI/CD)测试。此外,还包含一份迁移指南,帮助当前使用 nitrite 的用户进行迁移,nitrite 是一个广泛使用的开源 AWS Nitro Enclave Go 证明库。

visualsign-turnkeyclient:基于 awsnitroverifier 的端到端验证

在 awsnitroverifier 的基础上,Anchorage Digital 构建并开源了 visualsign-turnkeyclient,这是一个用于在 Nitro Enclave 中解析交易的 Go 客户端,可执行端到端验证。awsnitroverifier 库负责处理底层的证明文档验证,而 Turnkey 客户端则添加了应用层的工作流。

您可以按复杂度递增的顺序采用以下验证级别:

  • 基础 P-256 签名验证 – 确认 Turnkey 基础设施中的密钥签署了响应。
  • 带 PCR 验证的启动证明 – 使用 awsnitroverifier 验证 Enclave 镜像和配置是否与预期值匹配。
  • 完整清单验证 – 包括特定应用程序二进制文件哈希的完整 QuorumOS 清单验证。

这种分层方法将专注的证明库与应用层客户端分离,使您可以在不依赖区块链特定依赖项的情况下,在 Nitro Enclave 上构建非区块链用例。

超越区块链:适用于任何高信任工作流的可验证计算

VisualSign 是一个区块链产品,但其底层基础设施并非如此。Turnkey 和 Anchorage Digital 在可重复构建、Enclave 主机计算和基于证明的访问控制基础上构建了该架构。这是一种通用模式,适用于任何需要特定程序处理特定数据的密码学证明的场景。去除区块链特定内容后,该架构提供了一个可验证计算的构建模块。

核心模式:基于证明的访问控制

Anchorage Digital 实现的关键洞察是,Enclave 证明文档可以作为访问凭证。系统不是基于网络身份、API 密钥或操作员信任来授予对敏感资源的访问权限,而是基于代码运行的证明来授予访问权限。该原则是将计算与敏感数据分离,并使用证明来弥合这一差距。

在 Anchorage Digital,硬件安全模块(HSMs)用于保护敏感的密钥材料。VisualSign 解析器运行在独立的 Nitro Enclave 中,HSM 根据经过验证的证明授予访问权限,而不是基于对网络、操作员或主机机器的信任。Anchorage Digital 工程团队的哲学是,这种模式适用于任何处理敏感信息或使用第三方库的应用程序。目标是将计算过程与敏感数据隔离。下图展示了该模式的通用形式:不可信输入进入 Enclave 托管的应用程序,Enclave 返回包含证明文档的签名包,HSM 在验证该证明后才会释放密钥材料。

图 2:通用的证明验证访问模式

多个非加密工作流程也适用这种模式。金融机构可以使用可复现镜像构建的 Nitro Enclave 运行制裁筛查或反洗钱(AML)检查,这会产生可加密验证的证明,表明精确的审计筛查软件处理了数据。医疗保健提供者可以在没有持久化存储和网络访问的 Enclave 中,使用患者数据运行诊断模型。证明确认了已批准的模型二进制文件已运行,且模型操作员无法将数据复制出去。任何依赖第三方库进行敏感操作的应用程序,都可以在具有固定、可复现构建的 Enclave 中运行相关代码。

这种架构还支持与团队专长自然映射的组织职责分离。如 Anchorage Digital 所描述:“评估区块链交易的专家使用第一方区块链工具对其进行验证,而管理敏感数据的团队则专注于验证正确性并应用策略。”

在实践中,Anchorage Digital 将系统所有权在两个团队之间进行划分:

  • 区块链领域专家使用第一方区块链工具和深入的协议知识构建和维护 VisualSign 解析器。他们了解以太坊操作码、Solana 指令格式和 DeFi 协议语义。
  • 安全和基础设施团队专注于证明验证、HSM 策略执行以及围绕敏感密钥材料的访问控制。他们了解 PCR 验证、证书链和密钥管理。

两个团队无需进入彼此的领域。区块链团队不需要访问密钥材料,安全团队不需要理解 Solana 的账户模型。Nitro Enclave 的证明充当两个团队之间的机器可验证合同,表明:“这段精确的代码已运行,这是证明。”

结论

在本文中,我们展示了 Anchorage Digital 和 Turnkey 如何使用 AWS Nitro Enclaves 在经过验证的 Enclave 中运行开源的 VisualSign 解析器,使钱包能够通过密码学验证哪些代码解析了交易。Turnkey 与 Anchorage Digital 的合作始于一个具体问题:通过密码学正确性证明使加密交易可读。他们构建的解决方案的应用范围远超区块链。可复现构建、Enclave 托管计算和基于证明的访问控制的架构模式,可以作为可验证计算的通用构建模块。

要开始构建可验证的应用程序,VisualSign 生态系统及其底层验证工具链完全开源。按照文档指引,为需要加密认证的敏感工作负载启动 AWS Nitro Enclaves。使用 awsnitroverifier Go 库实现 AWS Nitro Enclave 的验证验证流程。针对区块链应用,VisualSign 提供的 Turnkey 客户端与钱包集成指南可处理端到端的验证验证流程和钱包集成。

如果你想在 Turnkey Verifiable Cloud 上运行自己的工作负载,目前 TVC 处于私有测试版阶段。若想深入了解 Turnkey 如何构建该解决方案,可参考博文《在 AWS Nitro Enclaves 上构建安全、可验证的区块链密钥管理》。

作者介绍

'"`