eclipse攻击是对区块链的网络级攻击,攻击者基本上控制了对等网络,模糊了节点对区块链的视图。
波士顿大学副教授Sharon Goldberg在一篇题为“低资源Eclipse攻击以太的点对点网络”的论文中写道:Ethan Heilman,波士顿大学的博士研究生;匹兹堡大学的研究员Yuval Marcus描述了一种在以太网络上进行日食攻击的方法。
(研究人员在2018年1月9日向Ethereum透露了他们的攻击,以太开发者已经发布了一个补丁——Geth v1.8.1——来修复网络。)
在接受比特币杂志的采访时,戈德堡解释了这项研究,它如何与比特币的eclipse攻击进行比较,以及为什么她认为这项工作很重要。
首先,她强调,与以太开发人员合作来修复漏洞是一个顺利的过程。她说:“这是一个非常实用、容易披露的信息。”
在写给比特币杂志的一封电子邮件中,马丁·霍尔斯特·斯文德(Martin Holst Swende)表示,最近的Geth补丁包含了对点对点层的几项修改,并不会影响到一致的关键代码。该基金会负责监督以太的开发。用户不必担心,因为“eclipse攻击是针对特定受害者的针对性攻击,”他写道,并补充说,“不过,我们建议所有用户升级到1.8.1。”
分割网络
与比特币一样,Ethereum网络上的一个节点依赖于与其他节点的连接,以获得网络的完整视图。在eclipse攻击中,攻击者控制所有从目标受害者的节点到的连接。这样,攻击者就可以防止受害者获得关于网络其他部分的完整信息。
人们通常认为eclipse攻击是一种将网络的挖掘能力与共识相结合的方式,但是eclipse攻击在双开销攻击中特别有用。收款人可以为交易发送硬币,并使用eclipse攻击来阻止接收方了解到,在网络的另一个部分中,同样的硬币被用于另一个交易。
戈德堡和海尔曼,以及另外两位研究人员,三年前在比特币网络上发表了关于eclipse攻击的第一篇论文。与一个新实习生(Marcus)合作,他们想要探索同样类型的对以太的攻击。戈德堡说:“我们很好奇它和比特币是如何比较的。”
“完全不同”
戈德堡描述说,在以太网上发起一次日食攻击,与在比特币上发起一次攻击是“完全不同的”。为了实现对比特币的一次eclipse攻击,一个对手需要控制大量IP地址(机器)来垄断连接到受害者节点的连接。这使得比特币成为一场代价极高的攻击。
与此相反,研究人员仅使用一两台机器就能在以太层发动类似的攻击,使以太的攻击比比特币更强大。“这部分让我有点吃惊,”她说。
那么这到底有多重要呢?“很难知道,”戈德堡解释说,在以太网中,阻止这类攻击的原因并不是攻击的难度,而是对以太点对点网络如何运作的缺乏理解。正如戈德堡所指出的,以太网络“基本上是无证的”。
就像在早期的比特币网络的工作中一样,研究人员必须根据代码对协议进行反向设计,并从包中编写自己的解析器,所以一切都是从头开始做的。“要做到这一点很难,而且需要一段时间,”戈德堡说。
更有弹性
乍一看,Ethereum似乎对eclipse攻击更有弹性。虽然比特币节点只生成8个传出的TCP连接,以形成传播事务和块的八卦网络,但Ethereum节点却有13个。虽然Ethereum的p2p网络使用安全加密通道,但比特币的网络却没有。
但是,事实证明,Ethereum实际上是容易攻击主要是因为当比特币形式依赖于一个非结构化网络节点随机相互连接,Ethereum依赖于结构化网络基于一个协议称为Kademlia,旨在更有效地允许节点连接到其他节点。
以太点对点网络中的节点由其公钥标识。显然,Ethereum版本(在Geth v1.8.1之前)允许用户运行无限数量的节点,每个节点都有一个不同的公钥,从同一个IP地址的同一台机器上运行。
通过使用密钥生成算法,攻击者可以非常快地创建无限数量的节点id(在对等网络上的标识符)。更糟糕的是,攻击者甚至可以创建节点ID,使其对受害者更具吸引力,而不是随机的节点ID。
“你看到了很多在Kademlia的攻击,”戈德堡说。
更多的工作要做
戈德堡说,她还不清楚为什么以太会首先选择了Kademlia网络。一个结构化的点对点网络通常被用来获取一些内容,比如电影,把它分成几块,然后把这些片段发送给不同的对等点,然后从每个对等点下载片段,类似于BitTorrent(对等文件共享协议)的工作方式。
但是在Ethereum,内容是Ethereum区块链,而节点将整个区块链存储在本地。没有必要打破区块链,并让每个节点只存储其中的几个部分。他说:“我认为这是一个有趣的设计决定,因为我一直认为一个非结构化的网络会对区块链系统更安全。”
戈德堡表示,她希望看到更多的研究人员深入挖掘区块链的核心内容,以便更好地理解“不那么性感”的部分是如何工作的。
她说:“我们在基础设施的基础上建造复杂的系统,重要的是确保基础设施本身的安全。”
像Goldberg, Heilman和Marcus这样的研究者在Ethereum生态系统中扮演着重要的角色。研究人员通过Ethereum的bug bounty程序提交了他们的发现,该程序是一个奖励个人提交错误的程序。
“戈德堡·埃尔德在公开发行前与我们共同分享了这篇论文,并慷慨地帮助我们评估了对Geth的补丁,”Ethereum基金会的Holst Swende证实。