Time:2022-08-15 Click:207
原文标题:《Security Stack-Up: How Bridges Compare》
原文作者:Jonathan Claudius、Anirudh Suresh、Eric Wong、Akshath Sivaprasad,Jump Crypto
原文编译:0x9F、0x214,BlockBeats
加密世界的跨链桥协议亦是如此。跨链桥在安全风险方面极易被盯上。从智能合约可能的漏洞和攻击的规模角度来看,跨链桥呈现出一个二次方风险面:随着桥接的区块链数量增加,维持跨链桥运行所需的智能合约数量也呈二次方增长(至少在点对点模型中如此)。根据定制配置在不同运行时间编写的更多智能合约也迅速增加了跨链桥风险。在轮辐模型中,一个与中心链/网络相关的漏洞会导致不对称的风险。
正如最近的Nomad 攻击事件所示,一个错误可能导致桥梁的大部分或全部资金损失。然而漏洞与跨链桥无关,可能只是源于一个操作上的失误。在 Ronin 跨链桥的案例中,糟糕的操作安全措施让网络钓鱼攻击有机可乘,黑客获得了对保障网络安全的大部分验证节点的控制权,从而能够携带价值超过 5 亿的资金逃之夭夭。2 月份发生的 Wormhole 攻击事件同样是由于验证审查的缺失,让攻击者能够创建一个虚假签名,窃取超过 3.2 亿美元。
如果不关注安全性,不可避免地会发生更多的疏忽,因而遭受攻击和损失。对黑客而言,跨链桥规模巨大的 TVL 比普通协议更具吸引力。
上述的攻击事件均与协议的桥接逻辑无关,而是与智能合约漏洞和操作疏忽有关。即使使用最精心编写的代码,经过最棒的安全审计,随着连接的区块链和启用功能的数量增加,也必然会有被遗漏的漏洞。出于这个原因,跨链桥需要被配置为不仅在正常情况下能够安全工作,更重要的是能够应对极端情况。
用户在使用跨链桥时主要关注以下几个特性:良好的用户体验、低滑点高效率和资产安全。其中,安全性是评估跨链桥的重中之重。
考虑到这一点,让我们看看不同桥梁是如何叠加其安全性的。我们将从以下三个层面展开讨论,比较不同跨链桥的安全性。
1. 信任假设
2. 代码质保
3. 安全特性
前两者将讨论:跨链桥在信任层和源代码这两个层面上是否充分考虑了其脆弱性/漏洞的根源。最后一点涉及到,一个协议是否承认,不管多么仔细地编码与审计,漏洞不可避免,并且能相应地建立了额外的保障措施,以尽可能减少用户的潜在损失。
为了保持完全透明,在深入讨论之前,我们承认 Jump Crypto 确是 Wormhole 项目的运营监护人,并且是 Wormhole 的核心贡献者之一,但我们在这篇文章中将尽可能客观评估,我们欢迎和接受任何关于如何改进这篇文章的反馈,以展现跨链桥之间差异的详细情况。
理论上,验证者的数量可以无限大,但在实践中,因为验证者不需要为每条区块链运行节点,投票权会出现倾斜。在 Axelar 目前的验证者名单中共有 47 个验证者,但只有 20 个拥有实际有效的投票权。在某条特定区块链上,这一数字更小。例如,如果我们只考虑验证 Aurora 上的信息,只需要 8 个节点就可以成功发送一条消息,只需要 4 个节点审查这一消息。
LayerZero 的信任假设取决于两个实体的行为——只要预言机和中继者彼此独立运行,就不可能成功发送无效消息。但反过来而言,因为这一系统要求预言机和中继者均正常运行才得以验证信息,两者中任何一方都可以任意删除信息数据。
Multichain 是一个跨链信息传递协议,源自之前的 Anyswap。Multichain 使用安全多方计算(SMPC)来运行阈值签名方案,创建公钥并签署链与链之间传递的消息。这些节点以无需信任的方式控制用户账户(EOA),钱包地址与拆分的私钥一一对应。这些帐户用于存储资产并将资产转移到目标链,目标链只需检查发件人的地址是否可信,无需验证消息本身。
Multichain 网络目前由 24 个 SMPC 节点组成,由不同的机构运行,并且需要大多数节点(「大多数」的量化标准似乎并不公开)来共同验证消息。因此,该协议的安全性依赖于 SMPC 节点的声誉安全,它假设所有节点中诚实的节点占半数以上。跨链发送数据需要 13 个签名者,审查消息需要 12 个节点。
Nomad 是一个以 EVM 为重点的跨链信息传递协议,采用 optimistic 机制来验证消息,其中消息被添加到 Merkle 树中,并被哈希加密到一个新的根中,由更新者(Updater)发布到原始链上。更新者必须交纳保证金,从而激励他们发布有效的证明并尽量减少停机时间。然后,观察者(Watcher)会有时间对新根进行争议怀疑并提交欺诈证明。一旦超过时间范围,这一 Merkle 根就被认为是有效的,并被转发到目标链进行发布,使得原始消息(因为 Merkle 根只是消息的一个「化身代表」)被发布到目标链上。
这种 optimistic 模型只需要一个诚实的观察者来验证是否发布了一个无效的更新。这种安全模型的代价是,观察者有大约 30 分钟的时间来提交欺诈证明,这就使消息的传输也被延迟了 30 分钟。因为观察者可以通过向目标合约发送虚假欺诈证明来阻止消息被处理,所以 Nomad 使用一组由应用程序指定、经过许可的观察者。协议的安全性基于至少有一个诚实观察者存在的可能性,以及因恶意行为而削减更新者的经济安全性。
Nomad 智能合约可以通过多签治理模式进行升级,5 个签名者中需要有 3 个来执行治理变更和处理恢复管理。
应指出的是,最近的 Nomad 黑客事件与其共识机制的安全性无关;它是一个不幸的合约配置错误,导致智能合约终端出现恶意行为。
Wormhole 利用权威证明(PoA)守护者网络作为预言机,并利用无需许可的中继器网络来跨链传输消息。19 个守护者中的每一个都为 Wormhole 支持的每一条链运行完整节点,并监听每个链上 Wormhole 核心合约发出的消息。这些守护者验证并签署这些消息,然后在 P2P 网络上互相传递。一旦一个消息收到 2/3 以上守护者(至少 13 个)的签名,它就会被转发到目标链上。这一设计的副产品是,它允许一个完全无需信任的中继器网络将消息发布目标链上,因为这些信息是由守护者签名的,所以消息内容既不可能被改变也不可能被审查,因为任何人都可以运行一个中继器来提交任何信息。
协议的安全保障来自于守护者的声誉权威。在 Wormhole 案例中,这是一个由Web3 中 19 个最大的质押和基础设施供应商组成的团体。签署假消息需要 13 个守护者,审查消息需要 7 个守护者。此外,现有的守护者有能力投票移除或替换其他守护者。
注意,协议的代码质保方式在经历了严重的安全事件后会有很大的改善。例如,在遭受黑客攻击后,Wormhole 的代码质保方式迅速得到改善。同样,在本周的攻击事件之后,Nomad 协议很可能会在不久的将来采用更多的代码质保方式。显然最好在事件发生之前就采用这些做法,可惜它们并不总在优先列表上。
在白皮书中,Axelar 描述了一个由网络分配的资金池,作为治理控制的保障和备用机制,以便在 Axelar 中断的情况下为用户提供恢复治理的指导。在这样的危机中,由阈值合约(Axelar 验证者管理)存放的「紧急解锁钥匙」将与辅助恢复用户集共享。如果需要,这个队列可能扩展到成千上万的个人和机构,他们可以集体控制网络以:
1. 为可以转入/转出某一特定链的资金量设定速率限制
2. 决定链上原生资产的包装形式的情况
这些功能看起来是专有的,目前还没开源。此外,这些提议的功能不提供被动安全性来限制风险,而是在生死存亡关头被激活。
注意,这些功能看起来是专有的,目前还没开源。虽然概念上很强大,但很难独立评估其有效性。
1. 交易量限制和总交易额限制:这一功能允许交易量较大的区块链被限制在一个特定的上限。另外,对于交易量较低的区块链,则采用总交易额限制的方式。
2. 链上监控:这种模式涉及监控软件和链上看门狗,以检测异常行为并触发突发事件响应行为。
3. 产品暂停:这一功能允许暂停所有产品,并在实施突发事件响应行为时有效将所有产品暂停。
4. 安全基金:这实际上是一个保障基金,拿出所有跨链费用的 10% 补偿用户在特殊情况下的财产损失。
Wormhole 的消息传递模型是群播(multi-cast)的,即消息由守护者/预言机网络从原始链进行公证,并且不信任将该消息带到目标链的中继器。这种模式基本上需要一个非常强大的预言机网络,协议内安全功能有赖于此。
Wormhole 项目有三个主要的协议内安全功能正在开发中:监管、会计和紧急关闭。这些功能是在公开可见的情况下开发的,这让我们能够深入了解它们最终会如何运作。这些功能正在等待开发完成并被守护者采用。
1. 监管:这一功能在守护者/预言机中实现,允许守护者在一个时间窗口内监控来自任何受监管链的价值流动的名义金额。守护者可以为每条链设定一个可接受的上限,一旦达到这个上限,就会阻止这条链超出的资产流动。
2. 会计:这一功能在守护者/预言机中实现,允许守护者维护他们自己的区块链(又称「wormchain」),它们可以作为不同链之间的跨链账本。这个账本不仅可以让守护者担任链上的验证者,还充当了一个会计插件。守护者可以拒绝原始链没有足够的资金(验证独立于智能合约逻辑之外)的跨链交易。
3. 关闭:这一功能在链上实施,允许守护者在意识到跨链桥存在的威胁后,达成共识暂时停止跨链桥上的资产流动。目前的实施方案允许通过拟议的实施方案中的链上函数调用来实现。