日蚀攻击到底有多可怕?以太坊:已有解决思路
(图片来自Constantin Popp ,Unsplash)
什么是日蚀攻击(Eclipse Attack)?
日蚀攻击(Eclipse Attack)是针对对等式(或译为点对点)网络的一种攻击类型:攻击者通过使节点从整个网络上消失,从而完全控制特定节点对信息的访问。
在流行的对等式网络(例如比特币和以太坊)中,攻击者可通过确保受害者节点不再从网络的其余部分接收正确的信息,而只接收由攻击者操纵的信息来执行日蚀攻击(Eclipse Attack)。
换言之,当网络上的大多数对等节点都是恶意的时候,并且正在控制特定节点的连接时,就会发生这类攻击。控制此类连接的攻击者,可确保此特定节点被恶意节点包围。
此外,在日蚀攻击中,攻击者不像在女巫攻击(Sybil attack)中那样攻击整个网络,而是专注于隔离和瞄准某个特定节点。这种攻击通常会导致受害者节点接收到被操纵的、伪造的区块链视图。
“恶意节点使用其假冒区块链阻止受害者节点对真实区块链的查看。因此,作为区块链安全的主要威胁之一,它的名字被称为日蚀攻击。”
根据Heilman等人在2015年发布的论文,日蚀攻击(Eclipse Attack)的一个关键含义,在于这种攻击可能是其他类型攻击的有用构建基础。例如,一旦攻击得到落实,攻击者可以做的一件坏事就是,通过远低于全网51%的算力发动51%攻击。
这可能导致受害者所看到的网络交易历史的改变,从而可能导致受害者遭到经济损失。
对以太坊进行成功的日蚀攻击需要什么条件?
值得注意的是,恶意方成功执行日蚀攻击所需的条件并不是很多。Heilman等人在2018年发表的论文显示,在以太坊网络上执行日蚀攻击只需要用到几台机器。
研究人员指出,为了完成对以太坊的的日蚀攻击,恶意方只需要控制两台机器,每台机器只有一个IP地址,以垄断与受害者节点之间的连接,并最终将受害者节点与网络中的其他对等节点隔离开来。
然而,在大多数情况下,日蚀攻击仍然很难启动,因为攻击者必须选择一个目标节点或一组节点,建立主机节点的僵尸网络,断开目标与其连接的每个节点的连接,并对目标的相邻节点进行不断试验,使它们与攻击者的节点相连。然后,攻击者必须等待下一次受害者节点注销并重新加入网络。
在重置过程中,攻击者会强制连接重定向到一组新节点,从而完全控制受害者的所有连接。这不是一项简单的任务,但它是可行的。到目前为止,我们还没有看到任何日蚀攻击的例子;然而,最近的研究结果表明,这是不应该被忽视的。
针对物联网设备的日蚀攻击
在物联网环境中进行的日蚀攻击会怎么样呢?物联网设备带来的风险会显著增加。在数据中心挖掘节点的常见场景中,攻击者需要几台机器才能成功执行日蚀攻击。在数据中心场景中,日蚀攻击是很难完成的,因为它通常会涉及攻击多个独立的上行链路。
另一方面,在物联网环境场景中,攻击者会更容易地执行日蚀攻击。物联网设备是攻击者容易攻击的目标,这主要是因为对物联网设备的日蚀攻击,只涉及攻击一个单一故障点,例如,攻击一个网状的3G上行链路。
如果攻击者想对物联网设备发起日蚀攻击,则其可首先通过瞄准物联网设备的网关来发起中间人攻击。一旦网关受到攻击,攻击者将完全控制受害者物联网设备的数据,如区块同步请求,因此可强制受害者连接到恶意节点。
“物联网设备与网络的其余部分隔离,因此无法查看真正的区块链网络。此后,针对物联网设备的日蚀攻击就完成了。”
那么如何减轻日蚀攻击呢?
在工作量证明(POW)网络中进行的日蚀攻击场景中,攻击者利用此漏洞强制节点接受比主链更长、总难度更低的链。由于攻击者公布的总难度高于诚实节点,当受害者节点重新加入网络时,它将收到一个比有效链长但总难度较低的链。
因此,发生的情况是受害者节点无法再与有效链同步。那么,缓解这个问题的方法是什么呢?
幸运的是,重要的提案正在迅速出现。就在上个月,德国区块链研究员Dominic Letz提出了BlockQuick这一解决日蚀攻击问题的超轻客户端协议。
正如Letz在《BlockQuick: Super-Light Client Protocol for Blockchain Validation on Constrained Devices》这篇论文中所写:“BlockQuick能够防止日蚀攻击,因为在验证区块时,它不仅仅依赖于在工作量证明(POW)网络上选择难度最大的最长链。”
最长链和最高难度的功能在区块链协议中是至关重要的,对流行的轻客户端(例如以太坊Geth)也是如此,但如果没有适当的保护,攻击者可能会滥用这些功能。为了提供一个安全的轻客户端协议,在验证区块时,安全策略必须采用共识信誉表。
正如他在论文中解释的那样:“在每个新的区块中,设备都会验证矿工的加密签名,并将其与共识声誉表中的已知矿工身份进行比较。只有当一个区块的共识得分大于50%时,客户端才会接受。接收总得分较低的链会导致中止。”
客户端将查看设备如何迭代这些区块,并将运行缓慢的更新机制。其想法是,BlockQuick将运行信誉检查,以确保客户端只接受信誉分数大于50%的区块,而不是遵守最长的链规则。
结论
在本文中,我们描述了日蚀攻击是什么,讨论了日蚀攻击的一些含义,并探讨了超轻型客户端协议如何解决这个问题。随着区块链技术的不断发展,了解当前和未来可能的发展对区块链社区而言都是很重要的。
原文作者是台北科技作者Yahsin Huang