编者按:本文来自白话区块链,作者:宇星,Odaily星球日报经授权转载。区块链是一道打开新世界的大门,它仿佛让我们看到了一个透明、公平的世界,但是殊不知这道门也面临着各种攻击,有些什么样的攻击呢?今天大白就来和大家聊聊区块链中的攻击。交易延展性攻击
交易延展性攻击,也叫交易可塑性攻击。在现实生活中,我们把一块金子敲变形之后,虽然形状有所改变,但质量却没有发生变化,也就是说金子外观发生了变化但是仍然被认可,这种特性呢被称为“可锻性”。在比特币系统中,也有一个类似的名词,“TransactionMalleability”。这个词通常翻译为“交易延展性”,也叫做“交易可锻性”,而利用交易延展性而造成的攻击就叫交易延展性攻击。具体指的是比特币交易A发出之后,在还没有被确认之前,攻击者通过修改某些交易数据,使得一笔交易的唯一标识——交易哈希发生了改变,就形成了新的交易B,假如交易B先被记录到比特币账本中,那么交易A会因为双重支付问题,被验证为不合法,从而拒绝。一个现实的例子就是:小黑从交易所发起提币,然后他提币这个交易就被广播出去了,在他这笔交易还没有被节点验证之前,小黑进行了延展性攻击,恰好攻击产生的新交易先被确认,而新交易照样会让他获得币,但是贪心的小黑却向交易所申诉自己并没有收到币,交易所一看之前给小黑转币的那笔交易确实被拒绝了,因此又给小黑汇了一笔币,小黑心里就美滋滋了,贪心的小黑还不满足,他又以同样的攻击方式继续多次攻击,这样就导致了交易所的资金大量流失。所以当遇到交易无法确认时,需要立即停止,应当根据区块链上的交易报错信息以及查看是否在短时间内已经发起了这样的交易,再进行手动处理。粉尘攻击
“粉尘”的意思是少量的币。通常情况下,很少人的交易金额会那么少,因为交易手续费就已经超过交易金额。正是由于“粉尘”很小所以容易被用户忽视,这一现象被小黑注意到了,因此小黑就像向用户的钱包地址转入“粉尘”,而收到这些“粉尘”的用户大白并没有引起注意,这些粉尘是大白收到的,但是还没有花费出去的,所以这些“粉尘”就和大白原来钱包地址里那些收到但还没有花费的币混在了一起。
粉尘和原来收到的但未花费的货币混在了一起不过现在的问题不大,只是混在了一起而已,真正的问题是大白使用这笔未花费的费用,当傻乎乎的大白把这笔钱用来向别的地址转账或其他交易的时候,就可能会用到这些“粉尘”,这个时候“粉尘”就悄悄地随着大白的交易跑到了别的用户地址里,一直跟踪。这些“粉尘”就像荧光剂一样,把用户大白的行为一五一十的描述了出来,进而被小黑跟踪到,小黑就利用这些线索来猜测大白的身份,进而对大白进行威胁和勒索。这就是粉尘攻击。要怎么避免这种攻击呢?上面已经提到真正出现问题的地方在于大白用了混有“粉尘”的未花费的货币,如果大白不花费这笔费用,“粉尘”就不会跑,小黑也就无法追踪了,然而我们不能要求大白因为这些“粉尘”就永远不花费那一池子的其他未花费的货币,因此一些钱包可以把这些粉尘单独标记起来,提醒大白用户们不要去使用这些粉尘,相当于把粉尘和池子里其他的未花费货币隔离开,这样大白们就可以安安心心地使用之前那些未花费的货币啦。从而有效的避免了粉尘攻击。女巫攻击
女巫攻击又叫Sybil攻击,名字来源于电影《女巫》(Sybli),讲的是一个有16种人格的女人心理治疗的故事。而在区块链中的女巫攻击呢,指的是一个恶意的节点非法地对外呈现多个身份。这就有点像小时候我们玩的“手拉手”游戏,当新的小朋友加入我们这个游戏圈的时候,他会去牵旁边人的手,进而对旁边的人有了进一步的认识。在区块链中也是这样,任何网络节点是可以发送加入的请求消息的,收到请求消息的其他节点会立即做出响应,回复其邻居节点信息。可是有些小朋友为了认识更多的小伙伴,就每次换一个面具,这样就可以到不同的位置去牵别的小朋友。恶意节点就像这个恶搞的小朋友,它对外伪装成多个身份,这样就可以获取大量的区块链网络节点信息,以便进一步的攻击和破坏。解决女巫攻击的一种方法是工作量证明机制,即用计算能力去证明你是一个节点,这样极大地增加了攻击的成本。另一个方法是身份认证,可以是基于第三方可靠节点的认证。就像在所有参加游戏的小伙伴中选出眼睛最亮的那个,这样来避免大家被搞怪小朋友的面具蒙。身份认证也可以是全节点制的认证。这就相当于每个小朋友都要对恶搞小朋友进行身份审核,这样就大大降低了恶搞小朋友成功伪装多个身份的几率。日蚀攻击
日蚀攻击是面向对等(P2P)网络的一种攻击类型,攻击者通过攻击手段使得受害者不能从网络中的其它部分接收正确的信息,而只能接收由攻击者操纵的信息,从而控制特定节点对信息的访问。看到这段概念不懂?别慌,待大白细细说来。
在比特币和以太坊这种对等网络中,若某年某月某日,A向B转了10个币,网络中的其他节点都会共同记账,实现多方维护这个“分布式的记账本”。在这样的对等网络中,网络中的节点都是“对等的”,也就是说它们没有一个中心节点去联系它们,此时节点之间的通信依赖于相邻节点间的彼此通信。
本来节点之间通信甚好,可是突然有一天攻击者小黑瞄准了“大白”节点,通过一些攻击手段使得大白不能接收到相邻节点的信息了,也发送不出去信息了。
于是,大白就想着重新启动节点,这就是有点像手机死机了,就重启一样。重新启动节点的时候,大白节点会在那张存着自己待连接的节点的表里面去找节点来连接,本来这张表存的是一些以前连过的或其他可信任的节点,然而不幸的是这张表被攻击者小黑给篡改了,此时这张表里面就存着大量的攻击者的恶意节点。
大白高高兴兴地重新启动节点成功,然而却连上了被攻击者控制的恶意节点,从而攻击者可以通过操控恶意节点来控制大白节点对信息的访问。到最后,大白只能和恶意节点通信,至于得到的信息是好是坏,那得看攻击者心情了。DDoS攻击
DDoS,是分布式拒绝服务攻击的简称,指攻击者通过控制不同位置的多台机器,并利用这些机器对受害者实施攻击。
要想进行DDoS攻击,大概会进行三个步骤:1、首先,作为黑客的小黑需要了解攻击目标,俗话说,知己知彼,才能百攻百胜。假设攻击目标是个网站,小黑需要先确定有多少主机连接这个网站的站点,以及这个站点的配置信息等。2、然后,小黑会找到一些傀儡机,在傀儡机上安装相应的攻击程序,而这个攻击程序是小黑可以在主控机上控制的。这样小黑就可以通过主控机和傀儡机去攻击目标网站。3、最后,就是实施攻击,小黑通过主控机发起攻击“命令”,这时被控制的傀儡机就会不停地向目标发送攻击包,也就是说小黑间接地让这个网站不停地处理某个事情,这样就会大量占用网站的资源,从而导致别的用户无法利用这个网站的资源。在区块链中,DDoS攻击的主要目的是大量占用网络中的节点资源,使得这些节点无法提供正常的服务,如果受害的节点过多,很可能会影响整个区块链网络的运行。攻击者可以向网络节点发送大量的虚假信息,进而让这些虚假信息都访问受害者节点,造成受害者节点压力过大。比如,一些虚假的索引信息,会影响到同步区块的速度等。小结
日蚀攻击就是攻击者通过攻击手段使得受害者连接的节点被攻击者所控制,进而控制了受害者节点的通信;DDoS攻击是通过攻击手段占用了受害者的大量资源,使得受害者不能提供正常服务。虽然区块链中攻击重重,但是仍然有许多应对这些攻击的防御手段。所以,小伙伴们别慌,我们要相信并共同建设区块链系统的免疫力!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。