Cosigner:自托管的安全网

本文介绍了以太坊上数字资产自托管面临的挑战,以及Cosigner作为智能账户安全网的重要性。Cosigner通过在链上执行验证检查,确保交易的安全性和可靠性,从而解决传统自托管设置中的盲点和风险。文章还探讨了中心化Cosigner服务的优缺点,以及如何通过Safenet等举措扩展Cosigner的保障。

Safe 研究

Safe ResearchJul 23, 20259 min read

Safe

Self-custody

以太坊上数字资产的自我托管提供了无与伦比的主权,但也带来重大的责任,比如保护你的私钥和验证正在签署的数据的正确性。虽然硬件钱包和多重签名设置是基础,但当前自我托管的格局通常隐藏着微妙的漏洞。这就是智能账户的“Cosigner”概念出现的地方,尤其是在 Safe 生态系统中,它作为一个至关重要的安全保障。

当前设置的问题:盲点和缺乏多样性

今天,许多用户依赖于通用的签名者设置。它通常涉及单一的硬件钱包类型(如 Ledger 或 Trezor),结合流行的浏览器钱包(如 MetaMask 或 Rabby)用于 dapp 交互,以及熟悉的 Web 应用程序作为他们的主要界面。不幸的是,这种设置引入了微妙的漏洞。

这种工具的广泛同质性为攻击者创造了一个有吸引力且高效的目标。他们不必开发各种各样的漏洞,而是可以针对这些广泛采用的工具和接口优化他们的攻击。例如,如果攻击者发现特定浏览器扩展程序或常用 dapp 前端中的漏洞,他们可以精心设计一种漏洞利用程序,可能会影响依赖于该确切组合的很大一部分用户群。

除了技术设置之外,还存在一个更深层次的问题:盲签。用户经常在没有完全理解他们实际签署的内容的情况下批准交易,因为交易数据和有效负载很少是人类可读的。这种对交易缺乏“背景调查”意味着恶意批准可能会被忽视,直到为时已晚。目前签名者多样性的缺乏和未经验证的交易执行的普遍存在使用户暴露在外。

链下交易检查的局限性

许多钱包和 dapps 已经开始提供链下检查和模拟,以帮助用户理解他们正在签署的内容。像 Tenderly, Blowfish, 和 Blockaid 这样的服务提供了宝贵的工具,可以在交易提交到区块链之前对其进行分析。这些服务可以模拟交易结果,标记可疑活动,并提供复杂智能合约交互的人类可读摘要。

然而,这些链下检查的一个关键限制是它们主要是 UI 级别的安全措施。这意味着它们在用户的界面内运行,并且可能会被能够绕过或操纵 UI 的复杂恶意方规避。在最坏的情况下,用户可能甚至不会执行这些检查,或者可能在不知不觉中跳过它们,使他们容易受到这些服务旨在防止的漏洞利用。虽然这些链下解决方案很有帮助,但它们并没有提供万无一失的安全性,因为它们很少与链上强制执行相结合。

进入 Cosigner:每次交易的验证检查

Cosigner 为每次交易引入了必要的验证检查层。想象一下一个额外的、独立的签名者,在任何交易执行之前都需要获得批准。这是 cosigner 的核心原则。这种强制执行的最强保证来自于直接在链上构建,例如,通过 Safe 智能账户 guard (也被其他智能账户标准称为 hooks)。

它是如何工作的:

Safe 智能账户本身支持使用 Guard,这是一种强大的链上组件,可以对每笔交易强制执行自定义逻辑。正如 Safe 关于智能账户 guard 的文档 中详细描述的那样,对于 Safe 执行的每笔交易都会调用这些 guard,从而可以在最终处理交易之前执行一系列检查。

在 Cosigner 的上下文中:

  • Cosigner 通常对提议的交易运行链下检查和分析。这些检查可以很简单,例如根据白名单验证接收者地址,也可以非常复杂,涉及详细的模拟甚至链下数据。

  • 一旦 cosigner 的链下检查完成并且交易被认为是安全的,cosigner 就会提供他们的加密签名。

  • Safe 的链上 Guard 随后验证此签名。在其最简单的形式中,Guard 仅检查 cosigner 签名的存在和有效性。但是,可以扩展此机制。例如,Guard 可以验证 cosigner 提供的更复杂的证明,例如

零知识证明,证明交易符合某些条件,而无需泄露底层敏感数据,并允许验证在链上验证成本过高的检查。

  • 重要的是,如果没有此 cosigner 的有效签名(或 Guard 验证的所需证明),则 Safe 智能账户将无法执行该交易。

cosigner 充当智能过滤器,在交易的意图和参数上执行“背景检查”,链上 Guard 在执行的先决条件上强制执行 cosigner 的确认。

中心化的 Cosigner:迈向增强安全性的一步

认识到需要更强大的交易验证,一些中心化方已经开始提供 cosigner 服务,他们在其中为用户托管 cosigner。示例包括 Failsafe, Blockaid's cosignerHypernative Guardian。在这些设置中,中心化提供商的 cosigner 提供了可以在链上验证的签名,从而增加了额外的安全层。

虽然这些服务比纯链下检查有了显着改进,但它们带来了一个关键的权衡:需要信任他们的设置。用户必须隐含地信任中心化方以诚实和正确地操作他们的 cosigner。此外,在大多数情况下,这些中心化解决方案几乎没有提供关于他们执行的检查的正确性的链上保证。这意味着虽然他们的签名在链上得到验证,但他们的验证过程的底层逻辑和完整性通常仍然不透明。

因此,虽然这些服务提供了一条增强安全性的便捷途径,但自我托管的最终目标仍然是使用户能够更好地控制和透明地了解他们的安全机制。这就是为什么我们想展示一种如何开始设置你自己的 cosigner 的方法。

Safenet 的作用:扩大保证

Cosigner 的愿景不仅仅是简单的交易批准。像 Safenet 这样的举措旨在利用协处理器来提供更强大、更细致的保证。这些协处理器可以实施“负控制”以利用跨链保证,确保交易即使在不同的区块链环境中也符合特定条件。

此外,Safenet 探索了 保证的挑战流程,其中通过要求协处理器预先提供资金,从而在经济上激励协处理器保证的正确性。这为诚实和准确的联合签名创造了强大的经济协调。

迈向更安全的自我托管的步骤

使用 cosigner 实现真正安全的自我托管的旅程是一个渐进的过程,从基本步骤开始并扩展功能:

  1. 从有限的保证和经济支持开始:

    首先实施具有清晰、简洁检查的 cosigner,也许可以提供较小的经济激励,以建立信任并证明其价值。

  2. “自我信任”和“自带托管/Cosigner”:

    使用户能够设置和管理他们自己的 cosigner,从而促进更大的去中心化和个人控制。一个很好的起点是 Safe Research GitHub 存储库中的 cosigner 实现:https://github.com/safe-research/varangian

  3. 增加签名者的多样性:

    除了 cosigner 之外,用户还应积极使其主要签名方法多样化。这包括使用移动应用程序、各种硬件钱包,甚至新兴技术(如 Passkey)。这种多方面的方法显着降低了单点故障的影响。

通过 GitHub 设置 Safe cosigner

对于那些希望亲自动手为他们的 Safe 实施 cosigner 的人来说,一种简单的方法是利用提供的 GitHub 模板。这允许你设置一个“Varangian Guard”,它将充当你的 cosigner。

这是一个分步指南:

  1. 创建存储库的副本:

    首先从 Varangian Guard GitHub 模板 创建一个新的存储库。你可以选择使此存储库私有,如果你希望对 cosigner 的操作详细信息保密。

2. 配置存储库机密: 在新的 GitHub 存储库中,导航到 Settings > Secrets and variables > Actions 并添加以下存储库机密:

  1. SAFE_ADDRESS: 此 cosigner 将监视和保护的 Safe 智能账户的地址。例如:

0x779720809250AF7931935a192FCD007479C41299

  1. SERVICE_URL: 你的 Safe 所在的网络的 Safe 交易服务的基本 URL。例如,

https://safe-transaction-gnosis-chain.safe.global/ 用于 Gnosis Chain。(在此处查看更多网络。)

  1. COSIGNER_MATERIAL: 这是用于派生你的 cosigner 私钥的关键机密。它应该是一个长的随机字符串。创建随机字符串的一种方法是使用 /dev/random(打开终端并执行

cat /dev/random | tr -cd A-Za-z0-9 | head -c 64)或在你选择的密码管理器中生成一个随机密码。

3. 激活 GitHub Actions: 为了使 GitHub Actions 工作流开始运行,你需要手动触发初始运行。

  • 转到存储库中的 Actions 选项卡。

  • 在左侧边栏中,单击 Varangian Guard

  • 在右侧,单击 Run workflow 并确认。

  • 要获取 cosigner 的地址,请在工作流运行日志中的 fetch-check-relay 操作中打开 CheckTx 步骤。cosigner 的地址将在此处打印。

4. 配置你的 Safe: 最后,你需要将新设置的 cosigner 链接到你的 Safe。

  • 在 Web 浏览器中打开你的 Safe 并添加 https://www.safe.dev/varangian 作为 Safe App。

  • 在 Safe App 界面中,粘贴你从 GitHub Actions 日志中获得的 cosigner 地址。

  • 单击“设置 Varangian Guard”并执行交易以在你的 Safe 上启用 Guard。

在 guard 设置完成后,Safe 将受到 cosigner 的保护。这意味着只有经 cosigner 批准的 Safe 交易才能执行。此外,一旦所有签名者和 cosigner 批准了 Safes 交易,GitHub Action 将自动中继该交易。如果必须在未经 cosigner 同意的情况下删除 guard,则可以在一段时间延迟后删除它,以避免 guard 完全锁定帐户。

有关更详细的说明和故障排除,请参阅 Varangian Guard 模板的 README

我们下一步该怎么做?

为了充分发挥 Safe cosigner 的潜力,有几个关键领域需要关注:

  • 使公共 cosigner 的使用更容易:

    • 交易检查的标准化:

      定义构成“安全”交易检查的通用标准将允许在不同 cosigner 服务之间实现更大的互操作性和信任。

    • Cosigner 的声誉:

      为公共 cosigner 建立透明的声誉系统将使们能够根据其准确和可靠检查的历史记录选择他们信任的服务。

    • 托管的 cosigner 集:

      对于喜欢更精心策划的体验的用户,托管的、经过审查的 cosigner 集可以提供更高水平的保证和易用性。

  • 增加 cosigner 提供的保证:

这涉及到探索如果 cosigner 变得流氓或失败会发生什么。追索、争议解决和潜在的保险类功能机制可以进一步加强 cosigner 提供的安全性。

通过继续在这些领域进行创新,Safe cosigner 真正可以成为自我托管的安全网,使用户能够在不断发展的以太坊生态系统中获得更大的控制权、增强的安全性和平安。

关于 Safe Research

Safe Research 是 Safe 的应用研发部门,致力于推进自我托管堆栈。我们的工作基于 安全性抗审查性隐私 的密码朋克原则,我们专注于为智能账户和钱包构建无需信任、以用户为中心的基础设施。

让我们一次提交一个,实现以太坊最初的密码朋克愿景。


  • 原文链接: safe.global/blog/safe-re...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Safe Wallet
Safe Wallet
The Ownership Layer. Largest smart account ecosystem on the EVM | 200+ projects building with Safe | $100B+ in value secured