细说 Blockchain 中的51% Attack

 

可怕但也没有那么可怕的51%攻击

在数据库系统中,系统的管理员有着至高的权限,理论上数据的Administrator/Super Administrator可以修改数据库中的任意的数据。因此,对于一个数据库系统来说,拿到数据库管理员权限的攻击者对系统的威胁度是破坏性的。

在Blockchain中,51%攻击(PoW)由于掌握了网络中绝大部分的算力,同样是被认为是高威胁攻击方式。但是相比于拿到数据库管理员权限的攻击者,Blockchain中的51%攻击者的造成的破坏是相对有限的。

首先,由于Blockchain中数据的链式组成规则(i.e. 新的Block会将前一个区块的哈希值写入到区块头中),51%攻击者几乎是不能修改/删除已经上链的历史数据的。同时,虽然51%的攻击者掌握了系统更新的权限(i.e. 生产新的区块),但是攻击者并不能破坏现有的Block的验证规则。换句话说,攻击者产生的区块也必须是可以被其他的诚实节点验证的合法区块。比如在Bitcoin系统中,51%攻击者不能再次消费已经被消耗掉的UTXO,也不能去使用其他用户的UTXO来构造交易。同样的在以太坊中,51%攻击者不可以构造交易来花费其他用户的Ether。

虽然攻击者不能随意的修改其他账户中的数据,但是他可以在“最长链规则下”做到:

  1. Revert一个Blockchain。这种攻击方式称为分叉(fork)或者称为重组(reorg)。我们假设在当前的网络中节点正在$A$ Chain上开始产生区块,当前区块高度为100,网络中存在一个51%攻击者Bob。假如存在这样一个商业场景,某商家使用该Blockchain作为结算网络,当商家看到转账交易的被成功打包到Block并Append到Blockchain上时就给客户发货。假设,Bob使用了这个商家的服务,发送了一个转账交易。这个交易被打包到了101号Block中。当商家发现自己的收款交易,被打包到了101号区块后,立刻就给Bob发送了商品。那么此刻Bob可以做什么呢?由于Bob控制住了网络中大部分的算力,他可以将网络在100号区块开始进行分叉(fork),生成一个没有包含给商家转账的101号区块,因此产生一个新的$B$ Chain。由于Bob控制了网络中的大部分算力,他可以尽可能在$B$ Chain继续产生区块,最终$B$ Chain成为了当前网络中最长的Chian。因此$A$ Chain最终会被作废掉,那么此刻在$A$ Chain上的101号块中的交易就作废了,而Bob白嫖了一个商家的服务。
  2. Censor Transaction(交易审查)。Bob也可以进行一些更加隐秘的攻击,比如审查交易。假如Bob有一个竞争对手Alice(另一个Mining Pool),那么Bob可以做到在所有它打包的Block中都不包括Alice的交易。更严重的,攻击者可以拒绝向Block中打包交易,造成网络拥堵,和事实上的停止服务。

值得注意的是,由于Blockchain是共识系统,分叉和交易审查的事件发生的时候,其他的诚实节点也是能够感知到的。因此,其他的诚实节点或者系统的开发团队(e.g. Ethereum Foundation)可以做出响应再分叉出一条诚实的Chain,以及做出一些补救措施来限制51%攻击者的行为。

此外在有些区块链系统中,分叉是不被允许的比如Tendermint。在这种系统中,攻击者能做的事情就更加有限。