主页 > imtoken钱包安卓版手机下载 > 合并以太坊时有哪些不可忽视的安全问题?

合并以太坊时有哪些不可忽视的安全问题?

本章主要介绍以太坊合并使用PoS共识机制后可能面临的共识级攻击。

scale70

针对小利益相关者的短期重组

这是对信标链的攻击,攻击者对其他验证者隐藏部分信息,然后在某个时刻发布,以实现双花或通过抢先大额交易提取MEV。 这种攻击也可以扩展到多个区块,但成功的概率会随着重组长度的增加而降低。

这种攻击本质上是区块重组,分为事前重组和事后重组。 其中,预重组是指攻击者在主链创建之前从主链替换区块; 后重组是指攻击者删除主链中的已验证区块。 在PoS以太坊中,事后要想重组,必须拥有其2/3以上的权益。 同时,研究表明,即使攻击者拥有以太坊65%的权益,攻击成功的概率也不到0.05%。

短程重组攻击是通过预重组实现的,攻击者不需要控制以太坊中大部分质押的ETH,成功的几率会随着质押控制比例的增加而增加。

弹跳和平衡

弹跳和平衡攻击是指攻击者采取特定手段将诚实的验证者集合分成不同意区块的离散组。

具体来说,攻击者等待机会提出一个块,当它到来时,他们在同一个时隙中提出两个块。 他们将一个块发送给一半的诚实验证者集,将另一个块发送给另一半。 分叉选择算法将检测到这种冲突情况,区块提议者将被罚没并被逐出网络。 但是上述两个区块仍然存在,并且大约一半的验证者集将证明它们中的每个分叉。

以削减单个验证者为代价,攻击者成功地将区块链一分为二。 与此同时,其余的恶意验证者隐瞒了他们的证据。 然后在执行分叉选择算法时,有选择地向足够多的验证者发布支持一个或另一个分叉的证明,这使他们能够生成具有最多累积证明的分叉。 这可以无限期地持续下去,攻击者在两个分叉上保持平均分配的验证器。 由于两个分叉都无法吸引到 2/3 的绝对多数,信标链无法最终达成共识并出块。

在这种类型的攻击中,攻击验证者控制的权益比例越大,攻击在任何给定时期发生的可能性就越大,因为他们更有可能选择验证者在每个时隙中提议一个区块。 即使你只控制了1%的质押权益,发起平衡攻击的机会平均每100个epoch就会出现一次,而且等待时间也不会太长。

一种称为弹跳攻击的类似攻击也只需要控制一小部分股权。 在这种情况下,攻击者的验证者将拒绝投票。 在这种方法中谁能控制以太坊,攻击者不是通过投票来维持两个分叉之间的均匀分布,而是在适当的时候使用他们的选票来证明分叉 A 和分叉 B 之间的替代检查点是合理的。 两个叉子之间的这种翻转停止了最终性。

雪崩袭击

2022 年 3 月的一篇论文描述了另一种类型的攻击,称为雪崩攻击。 本文的作者认为,提议者权重提升方案无法防止雪崩攻击的某些变体。 然而,该论文的作者也只演示了对以太坊分叉选择算法的高度理想化版本的攻击(他们使用没有 LMD 的 GHOST)。 其中,GHOST分叉选择算法会累加第一个分叉区块及其所有对应后代区块的选票,选出得票最多的分叉作为主链。

假设要发起雪崩攻击,前提是攻击者可以控制多个连续区块的提议者。 当提议者提议插槽时,攻击者将扣留和收集他们的块,直到扣留块达到与主链块相等的累积权重。 然后,攻击者将释放所有被扣留的区块。 这时,由于主链和子链的权重相同,区块链就会分叉,导致后续区块的顺序错乱。 例如,攻击者扣留 6 个区块,第一个诚实区块 n 同时与第一个恶意区块 n 竞争,在系统中产生分叉。 然后攻击者在第一个敌对块之后的 n+1 个地方并联连接所有剩余的 5 个敌对块。

具体如下图所示,由于GHOST分叉选择算法的特点,此时敌对区块n及其后所有5个分叉的权重与原链中6个区块的权重累加相同,这意味着即系统中的第7个区块有一定概率会在攻击者分叉后选择连接一个区块。 在这种情况下,攻击者可以对剩余的保留块重复此操作,防止诚实验证者在验证完主链后继续跟随,直到攻击者耗尽所有保留块。 如果攻击者在攻击过程中有更多的机会提议区块,他们可以使用这些区块来扩展攻击,这样参与共谋攻击的验证者越多,攻击持续的时间就越长,并且从主链中移出更多的 Honest 区块。

scale70

图片来自《对Proof-of-Stake GHOST/Ethereum的两次攻击》

虽然 LMD-GHOST 分叉选择算法的 LMD 部分减轻了雪崩攻击,但 LMD 或“最后消息驱动”指的是每个验证器保存的一个表,其中包含从其他验证器收到的最新消息。 仅当新消息来自比特定验证器表中已存在的槽更晚的槽时,才会更新此字段。 实际上,这意味着在每个时隙中,收到的第一条消息是它接受的消息,其他消息将被忽略。 换句话说,共识客户端使用来自每个验证器的最先到达的消息,并且简单地丢弃冲突消息以防止雪崩攻击。

远程攻击

远程攻击也是权益证明(PoS)共识机制下的一种特定攻击方式,主要包括以下两种情况:

在第一种情况下,攻击者作为参与创世块的验证者,在原始区块链旁边维护一个单独的区块链分叉,并最终说服诚实的验证者在未来的某个时间切换。 过去的。 但这种攻击在信标链上是不可能的,因为“finality gadget”确保所有验证者周期性地就诚实链(“检查点”)的状态达成一致,之后检查点之后的块将无法再重组。

在第二种情况下,当一个新节点加入网络时,来自其最近节点的信息(称为弱主观性检查点)被用作伪创世块来构建区块链。 这将为加入网络的新节点创建一个“信任网关”,然后它们才能开始自己验证块。 但是,从区块浏览器等客户端收集构建检查点所需的可信区块信息,并不能增加客户端本身的可信度,因此主观性是“弱”的。 因为根据定义检查点由网络上的所有节点共享,不诚实的检查点是共识失败的状态。

大型利益相关者的攻击 33%

33% 的 ETH 数量是攻击者的基准,如果超过这个数量,他们就有能力阻止信标链完成,而无需对其他验证者的行为进行细粒度控制。 这是因为要最终确定信标链,必须有 2/3 抵押的 ETH 证明检查点对。

如果 1/3 或更多的质押 ETH 被恶意证明或未被证明,那么 2/3 的绝对多数将不存在。 对此的防御是信标链的不活动泄漏机制,当信标链在 4 个纪元后未能完成时触发的紧急安全措施。 负惩罚识别未能证明或证明与多数相反的验证者。 这些非证明验证者所拥有的质押的 ETH 将逐渐流失,直到最终占总量的 1/3 以下,这样区块链才能重新敲定。

50% 和 51%

理论上,如果恶意验证者控制了 50% 的抵押 ETH,他可以将以太坊区块链分成两个大小相等的分叉。 类似于前面描述的平衡攻击,攻击者可以通过为同一个插槽提议两个块来维护两个分叉,然后只使用他们全部 50% 的股份来投票反对诚实的验证者集并阻止最终性。

四个时期后,不活动泄漏机制在两个分叉上激活,因为每个分叉都看到其一半的验证者未能证明。 每个分叉都会减少另一半验证者的股份,导致两条链都无法达到 2/3 的多数验证者。 此时,唯一的选择就是依靠社区恢复。

而当攻击者控制的权益占比超过51%时,分叉选择算法就可以被控制。 在这种情况下,攻击者将能够以多数票作证,从而给予他们足够的控制权来执行短期重组,而不会欺骗诚实的客户。 控制 51% 的股权不允许攻击者改变历史,但他们有能力通过将多数票用于对他们有利的分叉或重组区块来影响未来。

诚实的验证者会效仿,因为他们的分叉选择算法也会将攻击者选择的链视为最重的链,因此可以最终确定该攻击链。 这使攻击者能够审查某些交易,执行短程重组,并通过对有利于他们的区块重新排序来提取最大 MEV。 解决这个问题的方法是多数股权的巨大成本,这将攻击者置于巨大的风险之中,因为社会层可以介入并使用诚实的少数分叉,从而显着削减攻击者的股权。

66%

控制 66% 或更多抵押 ETH 的攻击者可以在不控制其他诚实验证者的情况下确定其首选链。 攻击者可以简单地投票决定他们想要选择哪个分叉,然后完成它。 作为绝对多数的利益相关者,攻击者将始终控制最终区块的内容。 他有能力花钱,回滚并再次花钱。 他还可以随意审查某些交易并重组区块链。 这时,攻击者实际上已经具备了事后重组并最终逆转(即改变过去,控制未来)的能力。 唯一的防御措施是通过社会层干预来协调替代分叉的采用。

总的来说,尽管存在这些潜在的攻击向量,但信标链的风险较低,甚至低于工作量证明等效链。 这是因为攻击者需要冒着抵押 ETH 的巨大成本的风险,才能用投票权压倒诚实的验证者。 内置的“胡萝卜加大棒”激励层可防止大多数恶意行为,尤其是对于低风险攻击者。 更微妙的弹跳和平衡攻击也不太可能成功,因为现实世界的网络条件使得难以对发送给特定验证器子集的消息进行细粒度控制,并且客户团队已经通过简单的补丁快速修复了已知问题。 反弹攻击、平衡攻击和雪崩攻击问题。

但 34%、51% 或 66% 的攻击可能需要社区投票才能解决,因此有效的社区治理对攻击者具有很强的抑制作用。 对于攻击者而言,技术上成功的攻击仍然存在被社区阻断的风险,这降低了攻击者获利的可能性,足以起到有效的震慑作用。 这就是为什么维持一个具有一致价值观的有效社区对投资如此重要。

ETH 工作量证明安全

矿工在以太坊诞生之初就扮演着重要的角色,但以太坊的合并将打破这一局面。 Bitpro 估计 GPU 矿工将需要关闭大约 95% 的 GPU 才能在组合的加密生态系统中保持盈利。 但不太可能有那么多GPU在merge后立即关闭,所以矿工可能会尝试在merge后做一个PoW fork。 事实上,一些矿工已经明确表示支持ETHPoW分叉。 而如果一些交易所同时也支持分叉,那么分叉的寿命会比预期的要长。

另外,以太坊分叉项目Ethereum Pow官网已经建立并开始行动:

2022 年 8 月 15 日,以太坊分叉项目 Ethereum Pow 发推文称,ETHW Core 初始版本已在 GitHub 上发布。 主要特点有: 1.难度炸弹禁用; 矿工与社区共同管理的多重签名钱包; 3.调整了ETHW初始挖矿难度。

2022年8月26日,以太坊分叉项目EthereumPoW发推称ETHW第一个测试网“Iceberg”发布。 随之而来的是区块链浏览器和 RPC 服务器。 我们欢迎社区中的所有潜在合作伙伴(交易所、资金池、钱包提供商、桥梁、建设者等)加入我们,共同构建一个真正的 PoW 驱动的以太坊生态系统。

那么,以太坊合并升级后的硬分叉ETHPoW可能面临哪些安全问题,下面我们将详细分析。

1、算力攻击

51%算力攻击是对区块链网络的潜在攻击。 当系统中的恶意单个实体或组织可以控制大部分算力,即整个网络算力的 51% 以上时,由于 PoW 算法中的共识是由算力决定的,这就允许攻击者利用算力篡改账本,导致对系统的恶意攻击。 以太坊合并后,无法再通过挖矿获得收益的矿工将关闭矿机,这可能会导致基于 PoW 的 ETH 分叉失去部分算力。 比如目前最大的矿池Ethermine,已经宣布停止支持ETH PoW挖矿。

scale70

图自ethermine.org

一旦支持ETHPoW的算力下降,攻击者发动算力攻击的成本就会降低。 那么攻击者可以租用大量的矿池算力使其算力达到51%以上。 这时候可以利用算力的优势,更快地出块。 当生成的区块成为系统中最长的链时,将区块交易回滚,实现数据篡改,危害极大,例如:双花、交易控制任意地址等。下面分别介绍:

双花

双花攻击是指攻击者试图重复使用自己账户拥有的相同数字代币的攻击。 例如:

假设A拥有51%的算力,在1000的区块高度,A向B转账一个ETH,转账交易由矿工打包。

交易确认后,A依靠51%的算力优势,在区块高度999之后重新生成一条“更长的链”,并在区块高度1000和交易记录被打包的情况下,重新将ETH转给C,即这条链包含A向C转账ETH的记录。

根据“最长链共识”,包含到C的转账记录的链成为主链,一笔从A转账到B的ETH是“无效支付”。

控制来自任何地址的交易

如果拥有51%的算力,攻击者可以任意打包或不打包某个地址的交易,也可以阻止区块确认任何交易,甚至阻止部分矿工获得有效的记账权,从而达到控制任何地址的交易目标。

但是,拥有51%的算力并不是万能的。 比如你不能修改别人的交易记录,你不能阻止交易的发出,你不能凭空产生ETH。

2.重放攻击

在传统的计算机术语中,Replay Attacks又称重放攻击、重放攻击,是指攻击者发送一个目标主机已经收到的数据包,以达到欺骗系统的目的。 在区块链领域,重放攻击通常发生在区块链硬分叉时,这意味着“一条链上的交易往往在另一条链上是合法的”。

2016年7月20日晚,以太坊在192万区块发生硬分叉,产生ETH链和ETH经典链两条链,对应的代币为ETH和ETC。

由于两条链上的地址和私钥相同,交易格式完全相同,所以一条链上的交易在另一条链上也是完全合法的。 所以如果你在其中一条链上发起交易,放到另一条链上重放,也可能会被确认。 因为事先没有计划,很多人就利用这个漏洞在交易所不断充值提现ETH,以获得额外的ETC。 至此,“重放攻击”在区块链世界被重新定义。

在这次以太坊合并升级中,大概率出现的硬分叉ETHPoW,理论上可能存在上述问题。

如何防止重放攻击? 其实以升级为目的的分叉很容易实现,因为硬分叉升级会使用不同的客户端版本,而交易前缀通常包含发起交易的客户端的版本信息。 分叉后,为了避免打包老客户的“非法交易”(不是恶意交易,而是版本号太低,其他节点无法识别),矿工通常会拒绝某个版本号之前的交易,确保是恶意攻击者很难在硬分叉升级期间通过重放攻击窃取资金。

而在2022年8月23日,以太坊分叉项目EthereumPoW正式发文称,ETHW Core发布了第二次代码更新,强制执行EIP-155。 此次更新后,所有交易都必须使用链 ID 进行签名。 这将保护 ETHW 用户免受来自 ETHPoS 和其他分叉代币的重放攻击。

下面简单介绍一下EIP-155:

该提案的标题是“简单的重放攻击保护”。 提案规定:如果block.number >= FORK_BLKNUM且CHAIN_ID可用,那么在计算签名交易的hash时,不是只编码前面的6个rlp元素(nonce、gasprice、startgas、to、value、data)被散列而不是九个 rlp 编码元素(nonce、gasprice、startgas、to、value、data、chainid、0、0)。 此时签名中的v值不再是recid,而是recid+chainID*2+35。

因此,简单来说,在签署交易时,需要提供签名者(Signer)和私钥(PrivateKey)。 需要Singer是因为EIP-155修复简单重复攻击漏洞后,需要保持旧区块链的签名方式不变,但需要提供新版本的签名方式。 因此,通过接口实现新老签名方式,根据区块高度创建不同的签名者。 EIP-155 中实现的新哈希算法的主要目的是获取用于签署交易的哈希值 TxSignHash。 与老办法相比,链ID和两个null值在hash计算中是混在一起的。 请注意,哈希值 TxSignHash 并不等同于 EIP155 中的交易哈希值。

scale70

图片来自《区块链技术与实现》

这样,一个签名的交易只能属于一个唯一确定的区块链。

另外,为保证项目安全,建议项目方在合约中进行离线签名验证时,签名数据中应包含Chain ID,避免因跨链签名复用造成资产损失。

3.应用层项目

事实上,常规分叉需要用算力做选择,而选择的主角是矿工。 如果在这次以太坊升级中真的有两条以太坊链同时出现,需要做出选择的是以太坊整体。 生态是项目方、用户和投资方。

与2016年的硬分叉相比,如今的以太坊今非昔比。 DeFi项目已经占据了以太坊生态的半壁江山,但DeFi项目的基础是链上资产,所以项目端主要是资产端。 去。 所谓资产方,是指USDT、USDC等链上稳定资产。 DeFi 的抵押借贷生态,基本都是以资产端为主。

对于这些稳定资产(这里主要指稳定币)的发行者来说,如果以太坊网络出现分叉,他们会突然面临一个危险的问题:稳定币会有两个版本。 作为稳定币的发行人,你突然对每个发行的稳定币承担两项债务义务。

虽然大多数人认为稳定币发行者会将新的 PoS 链视为“真正的”以太坊网络,但如果他们想支持 PoW 链怎么办? 毕竟,他们有足够的经济动力去做这件事。

例如,他们可以做空 PoS 以太坊代币,在 PoW 网络上宣布赎回,然后赚取数十亿美元。 这可能会扰乱新的以太坊网络,导致贷款被清算,协议、交易所和相关 DeFi 项目被关闭。 这将造成巨大混乱,并有可能大规模摧毁加密货币市场。

同样,以太坊分叉项目EthereumPow在8月17日发推称,ETHW Core将引入流动性池冻结技术来保护用户资产谁能控制以太坊,即在以太坊PoW硬分叉后,尤其是前几个区块,用户ETHW代币存放在流动性池中,如Uniswap、Susiswap、Aave、Compound,将被黑客和科学家使用过时或无价值的方法兑换或借出USDT、USDC、WBTC,这将对整个网络和社区造成巨大的混乱。 因此,ETHW Core 暂时冻结某些 LP 合约以保护用户的 ETHW 代币,直到协议的控制者或社区找到更好的方式归还用户资产。 冻结不适用于仅涉及单一资产的质押合约(例如 ETH2.0 存款合约和 Wrapped Ether)。 ETHW Core 建议大家在硬分叉之前从 LP(例如 DEX 和借贷协议)中取出他们的 ETH。