风险提示:理性看待区块链,提高风险意识!

区块链日蚀攻击是什么梗?

1个回答

力量Power6星评价

2020-03-27 14:56:49

区块链日蚀攻击是什么梗?

日蚀攻击,和区块链51%攻击并驾齐驱的存在,它的神奇之处在于并不需要大的算力便可以完成双花攻击。

日蚀攻击是来自网络层的攻击,它攻击的点不是整个网络,不会使网络瘫痪,而是单个或少数的节点,使整个p2p网络被隔离开。

日蚀攻击

以上就是一个p2p网络,整个网络是由一个一个对等的节点连续而成的,每个节点就是我们说的一个区块帐本。

那么,当你启动一个新节点的时候,你是怎么知道这个网络在哪,怎么加入网络呢?

所以,在程序当中有配置一些种子节点IP,通过这些种子节点IP建立TCP连接,然后再定期的与种子节点交换各自已连接的其它节点IP,这样你就有可能连接到除种子节点以外的节点了。

同时,每个节点都在本地维护了一个与自己连接的节点IP列表。

在交换节点列表中,其实就是很多不同策略的。可以随机找一个节点连接,也可以按一特定算法帅选出。其最好的结果当然是要足够的随机,分散化。

以太坊的节点发现机制采用了Kademlia协议,也叫K桶算法,这个协议比较复杂,财神也是看了几遍也没看太懂。但是它用公钥生成节点ID,并与其它节点采用异或取值计算节点与节点的逻辑距离,来分散在不同的桶子里。

它有一个缺点就是,与IP地址无关。因此一台机器上便可以运行很多的节点(作恶成本低),我们称这些为作恶节点”吧。作恶节点不断的与某个受害节点相连接,然后把受害节点本地保存的列表中其它的IP都挤出去,

因为K桶算法能保存的节点信息有限,当受害节点的本地列表全部被替换为作恶节点”的IP时,那么就等于把这个节点与整个p2p网络隔离开了。

然后,只要受害节点重启程序,它就会断开之前的连接,并在本地列表中选出部分节点进行TCP连接,但是无论选谁,都是作恶节点”。受害节点发出的所有交易信息,均只能发给作恶节点,同时它接收的区块也是作恶节点传输来的。

下图就是一个日蚀攻击图,受害节点连续的所有节点均来自作恶节点。

image.png

简单攻击手法:便是直接黑了你的电脑,把你节点的配置文件给改了,让你只能连接作恶节点。

复杂的办法是:黑客知道你的IP地址后,不断的用作恶节点与你建立连接,然后把你本地的K桶列表填满,把其它正常的节点都挤出去了(漏洞),然后再ddos攻击迫使你觉得电脑太卡了,一旦你重启了便会重新连接其它节点,但是从你的本地列表中选出来节点全是被感染的作恶节点。(这一切都是神不知鬼不觉)。

这时,作恶节点只便可以构造一些非法的交易,比如大额转帐给受害节点,并且传给它后续的区块,以让受害节点以为区块已经被确认了,以为自己收到ETH。

这时,作恶节点仍可双花这些ETH。受害节点连接的只是一个小的网络,与外面的帐本并不是同步的,但你发现的时候可能已经晚了。