区块链中都会受到什么攻击?

双花攻击

指同一笔UTXO在不同交易中的花费。比如说,你只有一块钱,但你在A处花掉了,链上还没有来得及记录,你又把这笔钱花在了B处。也就是一笔钱被花出去了两次。双花不会产生新的货币,只能把自己花出去的钱重新拿回来。

实现双花攻击的三种方式:

1.Race attack

一个人同时向网络中发送两笔交易,一笔交易发给自己(为了提高攻击成功率,他给这笔交易增加足够的小费),一笔交易发给商家。由于发送给自己的交易中含有较高的费,会被矿工打包成区块的概率比较高。

2.Finney attack

一个人挖到了一个区块(这个区块中包含一个交易 :A向B转10BTC,其中A和B都是自己的地址),他先不广播这个区块,先找一个愿意接受未确认交易的商家向他购买一个物品,向商家发一笔交易:A向C转10BTC,付款后向网络中广播刚刚挖到的区块,由于区块中包含一个向自己付款的交易,所以他实现了一次双花。

3.>50% attack

51% attack指的是攻击者如果可以拥有超过全网50%的算力,就可以创造一条高度大于原始链的链,攻击者可以发送一个新的块到这条链上。(如果有对比特币进行51%attack成功的案例,最大的危害在于人们对比特币的信心受损导致的比特币大跌而不是51% attack本身带来的危害)

DDOS攻击

DDoS是英文Distributed Denial of Service的缩写,中文一般翻译为“分布式拒绝服务”。

DDoS(分布式拒绝服务)是从DoS(拒绝服务Denial of Service)发展而来的。DoS可以理解为,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。

DDoS攻击分布式拒绝服务攻击一旦被实施,攻击网络包就会从很多DoS攻击源(俗称“肉鸡”)犹如洪水般涌向受害主机,从而把合法用户的网络请求包淹没,导致合法用户无法正常访问服务器的网络资源。因此,分布式拒绝服务攻击又被称之为“洪水式攻击”。

粉尘攻击

粉尘攻击,其实就是在比特币网络中有很多交易金额极少,手续费极低甚至是免费的交易,造成了比特币网络的拥堵。这些大量的小额交易产生,而矿工们毫无差别地打包交易,那么这些价值小,但是总体体积很大的交易,就会阻碍到其它正常交易的打包确认。粉尘交易也可以看成是区块链网络上DDOS攻击的一种,攻击者通过发送许多这样小金额的交易,来堵塞整个网络。

举例事件:

BCH分叉之后的两条链ABC和SV上均存在一些容量为几千笔交易的异常区块,其中包含大量在相同地址间互转的垃圾小额(大约0.0002BCH或更小)的交易。

例如:ABC链上的556846和556843块,存在一地址qqgusvva8hnjpycgm0pfl6ywlmrcjvad5qlgqtaay5,发起了大量转给自己的小额交易;SV链上的556821等块,也有大量不同地址发起转给自己的小额交易。由于遭受大量的粉尘交易攻击,各BCH矿池的mempool(内存池)都在急剧增大,这些粉尘攻击造成BCH网络阻塞,进而拉高交易费用。

自私采矿攻击

自私采矿攻击(Selfish Mining Attack)是针对区块链的一种典型攻击。由于挖取像比特币这样的加密货币,对于一个矿工(Miner)来说, 需要高计算能力来解决密码难题(即工作量证明), 因此采矿变得十分困难。鉴于此, 一组矿(Mining pool, 采矿池)通常会相互组合起来, 并在成功解决密码难题之后,分享收到的奖励。

这样有助于个体矿工在单独采矿时, 产生较连续恒定的收入, 而不是很少的收益。如果存在一群自私的矿工, 采用自私的采矿战略, 并获得成功, 就可能会使诚实矿工的工作无效。这种自私采矿攻击表现为: 一个恶意的采矿池决定不发布它发现的块,进而创建一个分叉, 因此, 网络中就存在由诚实矿工维护的公共链和恶意采矿池的私人分叉, 恶意采矿池在此私人分叉下继续进行挖掘, 当私人分叉比公共链长的时候,恶意采矿池就发布该私人分叉, 由于该分叉是当前网络中最长的链, 因此会被诚实的矿工认定为合法链, 所以, 原公共链及其包含的诚实数据将被丢弃。研究结果表明, 一般情况下恶意采矿池采用自私采矿策略将获得更多的收益。

日蚀攻击

作为比特币系统信息交互的重要支撑, P2P 网络采用节点间广播来发布比特币信息, 日蚀攻击(EclipseAttack), 或称掩蔽攻击, 正是利用这种广播特性进行攻击。在比特币系统中,攻击节点随机选择8个其他对等节点, 并保持长时间的传输连接, 用于传输和存储有关其他对等体的信息。由于具有公共 IP 的节点最多可以接收来自其他IP节点117个未经请求的入站连接(Incoming Connection),攻击者“策略性”地控制受害节点所有信息的接收与发送,使得受害节点的入站连接数量达到上限, 从而阻止其他合法节点的连接请求。其攻击行为表现为,攻击者不断向上述8个对等节点发出请求, 并且发送大量无用的信息, 直到这些对等节点重新启动; 而这些对等节点即使重新启动后, 也将首先收到攻击者连接请求与无用信息, 进而被比特币系统“隔离”出来, 导致受害节点的采矿工作无效, 从而达到攻击目的。一般意义上, 该攻击是指攻击者入侵并恶意修改节点的路由表, 将足够多的恶意节点添加到该节点的邻节点集合中, 从而将该节点恶意“隔离”于正常网络之外, 因此, 日蚀攻击也称为“路由表毒化”。

扣块攻击

扣块攻击,又叫块节流,英文是“Block withholding attack”。也可以叫藏块攻击。

第一种解释:指当自己计算出正确的 hash 后,没有回传给矿池,私通过保留经过验证的哈希,并且不进行广播,那样区块的奖励就自己独吞了;

第二种解释:攻击者生成一个有效的块但是不会广播这个块,但是会广播交易A,交易A是指购买一个物件或者服务。商家会看到没有任何冲突的交易A并接受0确认交易。之后攻击者会广播已生成的有效块和与交易A有冲突的交易B,这时比特币网络会接受有效块并使交易A无效。

攻击的代价是非常大的,因为在攻击者生成块和完成交易A之间存在时间间隙,在此期间网络上的其他人也可以生成有效块并广播它,从而使攻击者生成的有效块变的无效。 因此,只有在成功购买到商品后并且立即释放扣押的区块时,这个攻击才是有效的。 比如说,购买的是软件产品的秘钥。

贿赂攻击

贿赂攻击者模型指的是在一个非协作选择模型(Uncoordinated Choice Model)上,比如无信任基础的区块链(Trustless Blockchain),会存在一个拥有足够资源的贿赂者,通过一个额外的经济奖励(贿赂)来激励其他参与者采取特定行动的攻击行为。这里的特定行动通常都对原有区块链体系的安全有较大影响,比如说最常见的是恶意分叉。

如果我们用恶意收购来类比贿赂攻击者模型,可以这样阐释:一个区块链协议之外的贿赂者通过一个条件来收购代币或者挖矿算力,从而达到攻击原有区块链的目的,通俗地讲,叫做“收买现有节点”。

参考:

区块链中的双花攻击

区块链中的双花攻击是指什么?

什么是DDoS攻击?

BCH分叉危机过后,“粉尘攻击”接踵而至?

什么是扣块攻击?

区块链真的安全吗?贿赂攻击者模型浅谈

出品 | 区块链小白日记

编辑 | Cassie

图文来源 | 网络整理

转载请注明来源

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181204A002KA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券