主页 > imtoken海外版 > 以太坊的节点发现机制基于 Kademlia

以太坊的节点发现机制基于 Kademlia

imtoken海外版 2023-07-03 05:20:54

以太坊的节点发现机制基于Kademlia,但目的不同。 Kademlia 旨在成为一种在分布式对等网络中存储和查找内容的方式,而以太坊仅用于发现新节点。 由于以太坊的节点由公钥表示,不受IP限制,一台机器上可以同时存在多个节点。 攻击者在少数服务器上创建多个节点并主动 ping 受害者的服务器。 通过 Kademlia 协议,攻击者的节点信息将被存储并填充到受害者节点列表中。 接下来就是让受害者重启机器,包括断电、ddos攻击等等。 重启后,攻击者不断ping受害者的节点,建立tcp连接。 一旦受害者的所有tcp连接都被攻击者建立起来,就达到了将受害者与正常网络隔离的目的。 当然,最大的目的应该还是为了双花。

网上关于eclipse攻击的详细介绍很多,这里不再赘述。

在刚才的论文中,提到了以太坊的geth1.8.0解决了eclipse攻击,所以笔者对比了1.8.0和1.7.3来阐明以太坊是如何解决这个问题的。

2018年4月以太坊价格_以太坊2017年12月最高价_11月8号以太坊重启失败

如果说互联网是信息的载体,那么区块链就是价值的载体。 所有的钱都存储在网络上,这是黑客觊觎已久的地方。

然而,幸运的是,从来没有黑客能够攻破比特币网络并使其瘫痪。 单纯依靠算力实施51%攻击,成本高得惊人,而且攻破无利可图。

除了大家熟知的51%算力攻击,其实还有一种eclipse攻击。 它的神奇之处在于不需要很大的算力就可以完成双花攻击。

11月8号以太坊重启失败_2018年4月以太坊价格_以太坊2017年12月最高价

那么,这是怎么回事?

蚀攻击

波士顿大学副教授 Sharon Goldberg 发表了一篇题为“Low-Resource Eclipse Attack on the Ethereum Peer-to-Peer Network”的论文,介绍了攻击方法。

eclipse攻击是一种来自网络层的攻击。 它的攻击点不是整个网络,不会使网络瘫痪,而是单个或少数节点,隔离了整个p2p网络。

说到这里,我们先来了解一下什么是p2p网络。

上面是一个p2p网络。 整个网络由对等节点组成。 每个节点就是我们所说的区块分类账。

2018年4月以太坊价格_以太坊2017年12月最高价_11月8号以太坊重启失败

那么,当你启动一个新的节点时,你如何知道网络在哪里以及如何加入网络呢?

因此,在程序中配置了一些种子节点IP,通过这些种子节点IP建立TCP连接,然后其他连接的节点的IP会定期与种子节点交换,这样就可以连接到种子节点以外的节点了向上。

同时,每个节点在本地维护一个与自身相连的节点IP列表。

在交换节点列表中,其实有很多不同的策略。 您可以随机寻找一个节点连接,也可以根据特定算法选择它。 最好的结果当然是足够随机和去中心化。

以太坊的节点发现机制采用 Kademlia 协议,也称为 K-bucket 算法。 这个协议比较复杂,财神看了好几遍还是没看懂。 但是,它使用公钥生成节点ID,计算节点与其他节点之间的逻辑距离,并将它们分散到不同的桶中。

它的缺点是与IP地址无关。 因此一台机器上可以运行很多节点(作恶成本低),我们称这些为“作恶节点”。 恶意节点不断连接到一个受害节点,然后挤出受害节点本地存储的列表中的所有其他IP,

2018年4月以太坊价格_11月8号以太坊重启失败_以太坊2017年12月最高价

因为K-bucket算法能够保存的节点信息是有限的,当受害节点的本地列表全部替换为“作恶节点”的IP时,相当于将这个节点从整个p2p网络中隔离出来。

然后,受害节点只要重启程序,就会断开之前的连接,并选择本地列表中的部分节点进行TCP连接,但无论选择谁,都是“作恶节点”。 受害节点发送的所有交易信息只能发送给恶意节点,其收到的区块也由恶意节点转发。

“日食攻击”的后果是什么

如果“日食攻击”成功实施,那么恶意方就可以“选择受害者的挖矿能力11月8号以太坊重启失败,并以此来攻击区块链的共识算法”或者实现“双花攻击和自私挖矿”。

此外,研究人员解释说,“日食攻击”可以诱骗受害者查看不正确的以太币交易详情,并诱骗卖家将尚未完成交易的产品发送给攻击者。

最后但同样重要的是,“日蚀攻击”还可以通过覆盖被影子节点的区块链视图来对以太坊合约发起攻击,从而延迟节点访问智能合约内部计算可能使用的各种功能。 参数视图,导致攻击者利用不正确的智能合约内容。

以太坊2017年12月最高价_2018年4月以太坊价格_11月8号以太坊重启失败

已发布修复程序

研究人员不仅发布了自己的研究成果,还与以太坊基金会悄悄修复了这些问题。

研究人员表示,他们已经推荐了多种对策,开发人员已将其中一些建议应用到两周前发布的运行在以太坊节点上的软件 geth 1.8.0 中。

这些对策虽然不能完全阻止 Eclipse 攻击,但确实将执行此类攻击所需的恶意节点数量从两个增加到数千个。

更多细节可以在 Marcus 等人的论文“以太坊对等网络上的低资源 Eclipse 攻击”中找到。

下图是eclipse攻击图,受害者节点的所有连续节点都来自作恶节点。

以太坊2017年12月最高价_11月8号以太坊重启失败_2018年4月以太坊价格

简单的攻击方式:直接黑进你的电脑,修改你节点的配置文件,让你只能连接恶意节点。

复杂的方法是:黑客知道你的IP地址后,他会作为恶意节点继续和你建立连接,然后填满你本地的K-bucket列表,排挤其他正常节点(漏洞),然后ddos攻击逼得你觉得电脑太卡了。 一旦重新启动,您将重新连接到其他节点,但是从您本地列表中选择的节点都是被感染的恶意节点。 (这一切都在不知不觉中)

此时11月8号以太坊重启失败,恶意节点只能构造一些非法交易,比如向受害节点转移大量资金,并传递给后续区块,让受害节点认为该区块已被确认,认为自己已经确认了该区块。收到了ETH。

此时,恶意节点仍然可以双花这些 ETH。 受害节点只连接到一个小型网络,不与外部账本同步,但等你发现的时候可能已经来不及了。

幸运的是,这个漏洞被发现后,在 Geth 1.8.1 版本之后得到了修复。

比特币网络是否存在日食攻击? 当然,任何网络都会有eclipse攻击。 但是,比特币网络需要大量具有真实IP地址的节点才能使攻击生效,这意味着攻击成本仍然很高。

因此,我们在接手大额转账时,应该去主流的区块链浏览器确认账户是否到账,不要依赖钱包成功接收。 在主链开发过程中也应该考虑到这一点。