主页 > 苹果版imtoken钱包官网 > 以太坊使用 Rollup 技术的安全风险在哪里?
以太坊使用 Rollup 技术的安全风险在哪里?
通过销毁Infrua,基本上可以销毁所有的Rollups。
以太坊已经确定了以 Rollup 为中心的 2.0 路线图,这使得 Rollup 成为了热门技术,也可以说成为了 layer2 扩展的主流技术。 如果配合零知识证明证明,Rollup 将成为 layer2 技术解决方案的集大成者。
但俗话说“没有绝对安全的系统”,Rollup 也存在一定的安全隐患。 以太坊研究论坛的开发人员已经讨论过这个问题。 1 月 20 日,以太坊开发者“jchancehud”发布了一篇关于虚拟 Rollup 攻击的讨论。
下面是关于虚拟 Rollup 攻击的讨论。 由 White Plan 团队组织,有一些修改和评论。
Rollup 存在安全风险的原因
模拟 Rollup 攻击背后的基本原理是,只要虚拟状态有效,任何以太坊节点都可以对 Optimistic Rollup 协调器说谎。 并且协调器只会在尝试发送交易或切换以太坊提供商时发现这一点(意味着同步全节点状态)。
Optimistic Rollup 是通过使用 calldata 在以太坊网络上存储区块信息来执行的。 这个过程允许任何人操作以太坊节点并下载 Rollup 状态。 但实际上,有些人不运营自己的以太坊节点,而是依赖托管解决方案(如 Infura)。
需要验证有效性
如果你想快速且低成本地构建一个有效的 Rollup 链,你需要做的就是进行交易、构建状态并将其存储在以太坊网络之外的其他位置。 当 Rollup 协调器从以太坊节点接收到状态历史时,协调器可以通过重放状态交易来确定数据是否有效。 但是协调者无法确定链上是否存在该状态,最好的方式是询问以太坊节点。
万一发生人为攻击
如果你想象一个名为 Untrust 的以太坊节点服务。 Untrust 为以太坊 dapps 提供低成本的基础设施。 如果他们选择不信任,他们可以查看特定的 Rollup 并创建一个虚构的历史。 他们甚至可以通过从一些真实交易中提取通信数据并将其与虚拟交易混合来创建半虚拟历史。
这样,他们将创建一个与当前状态完全不同的哈希值,但只有在使用 Untrust 的 Rollup 运算符提交(链上)区块时才会被发现(这将是欺诈性的)。
这种攻击不是特别强大。 攻击者不能伪造签名,不能直接窃取资金,但可以在 Rollup 中谎报他们的活动。
想象一下 Untrust 变得更加复杂。 他们决定攻击名为 MoneyMover 的 Rollup。
当收到对 MoneyMover 地址的请求时,它们会从运行完全独立的以太坊网络的节点返回信息。 在这个独立的以太坊网络上,Untrust 镜像大多数交易(使账户余额看起来相似)并在需要时注入自己的(假)交易。
现在说 Untrust 找到了一个用 MoneyMoverRollup 支付的网站。 该网站运行自己的 MoneyMover 协调器,连接 Untrust 以访问以太坊网络。
Untrust 可能会在其镜像网络中创建虚拟交易,MoneyMover 协调器将其解释为有效(只要状态交易有效)。 由于 MoneyMover 协调器未连接到任何对等方,因此确定链上存在的唯一方法是询问以太坊节点(在本例中为 Untrust)。
Untrust 在其镜像网络上进行了一次虚拟交易,该交易被该网站运营的 MoneyMover 协调员检测为有效付款。 Untrust 现在提供免费访问该站点的权限。 网站只有在提交交易或切换到其他以太坊提供商(即与其他节点同步数据)时才会发现这种虚假支付。
实际可能的风险
上述攻击仅在协调器未运行其自己的以太坊节点时才有意义。 在某些情况下这是有问题的:
1. 协调器数据的下游消费者无法知道他们收到的数据是否存在(链上),并且他们无法信任协调器正在使用的 eth 节点,因为消费者自己不运行该节点。
2. 欺诈证明者(证明恶意交易的一方)特别容易受到这种攻击,因为他们只在检测到欺诈时才提交交易。 恶意的 eth 节点可以从区块链数据中剥离无效交易,并返回一个不同的状态散列。 欺诈证明者将无法知道状态哈希是伪造的,并且永远不会提出欺诈索赔。
3. eth 节点运营商对 Rollup 协调员撒谎,以诱使他们提交无效的状态交易或无效的欺诈索赔。 一旦发生这种情况,恶意的 eth 节点运营商就可以充当有效的交易对手并收集抵押资金。
解决方案 1
在工作量证明链的上下文中,协调者可以请求块数据并检查它是否足够硬。 检查当前难度的至少一半应该会使大多数攻击在经济上变得不可能。
在权益证明链中,这个过程变得不可行,因为恶意的 eth 节点可能会提供来自未投票地址的签名。 他们可以通过在查询时质押抵押金额来做到这一点。
方案二
一个不太优雅的解决方案是持续签署信誉良好的节点并发布链上已存在的 Rollup 状态哈希列表。 该列表可以发布在 IPFS 等服务上。 协调器节点可以包含已知信誉良好的公钥(Rollup Creator、EF 等)的预设列表。
协调员知道 Rollup 数据是真实的,如果:
1. 所有状态交易均有效。
2. 所有状态哈希均由信誉良好的来源(节点)签名。
这将确保 Rollup 数据有效且非虚构,并允许 Rollup 节点使用任何以太坊节点同步数据。
以上就是“jchancehud”讨论的Rollup安全攻击的可能性。
主要原因是Rollup是链下状态,很多状态下容易出现信息同步不及时的情况。 根据“jchancehud”的说法,需要验证链下状态是否有效的一方需要同步其他以太坊全节点的数据来确认最终安全,这意味着很多平台都需要运行一个以太坊节点。
对于上面提到的虚拟攻击方式,以太坊的layer2解决方案团队SKALE Labs的首席技术官“Konstantin Kladko”表示,“这真的很有趣!我认为这表明通过摧毁Infrua,基本上所有的Rollups都可以被摧毁。” ”
当然,这代表那些通过 Infura 与以太坊通信的产品。 Infura 承接了大规模的以太坊节点服务。 也有人讨论过 Infura 是否会成为以太坊网络中最大的单点漏洞。 对于这种单点的安全风险,主要采用多节点负载均衡的方式来处理,尽量避免。
至于“jchancehud”的讨论,最有意思的是开发者“adlerjohn”提出,这种虚拟“攻击”似乎不仅适用于optimistic Rollup,也适用于zkRollup,实际上适用于任何智能合约。
这种推论很可能是基于协同过程“只要存在信息不对称的危险”,就会面临“jchancehud”所说的被攻击的风险。
因此,“adlerjohn”提出,在比特币白皮书第8节中,有一种验证信息正确或错误的方法,即验证者确定最长链并信任最长链。 这个方法描述了一个众所周知的方案,这个方案可以用来防止Sybil节点提供虚假信息,不需要大部分计算都是诚实的。
比特币白皮书第 8 节
此外做以太坊节点的要求,“adlerjohn”提出Rollup的状态根可以作为事件发送,甚至可以存储在以太坊状态中,也可以查询伪造交易(例如比特币白皮书第7节指出可以通过验证区块头来确认)。
比特币白皮书第 8 节
此外,“adlerjohn”还提到,optimistic Rollup 方案还可以包含一个名为“Minimum Feasible Merge Consensus”的设计,通过发布有序数据实现数据可用性,允许多个侧链、分片使用。
白计划注:最小可行合并共识的解释在以下链接
但可以预见的是,使用“adlerjohn”提出的方法设计难度更大。
讨论最后,“jchancehud”回复“adlerjohn”做以太坊节点的要求,不确定这种攻击预测是否适用于ZKRollup。 但由于 ZK 证明更难生成,至少它会更难。 如果 Rollup 被广泛采用,以这种方式考虑 Rollup 尤为重要。
Rollup 协调器可以在使用节点之前验证节点中的所有区块头,这是另一种潜在的解决方案,尽管在时间和带宽上都很昂贵。 但是用户最好运行他们知道可以信任的 eth 轻节点。 如果验证问题已解决,运行轻节点还可以查询事件。
在讨论的最后,我们会发现,为了实现安全性、可扩展性、效率,这些方案可以按照工程化的思路去尝试,但是实现的过程一定是艰难的,因为不同的讨论思路开发者需要在最后进行代码综合,包括网络结构、客户端、语言、操作界面等诸多挑战。
时间戳向前移动,块不会停止。 让我们继续期待吧。