Page 280 - 《软件学报》2021年第5期
P. 280
1504 Journal of Software 软件学报 Vol.32, No.5, May 2021
支链挖矿投入的“筹码”超过全网总筹码的一半时,攻击者便通过 51%攻击实现双花攻击、历史修复攻
击、卖空攻击等.在 PoW 中,贿赂攻击可以看作是一种算力租借方式,被贿赂矿工需要消耗大量算力
来挖矿,因此攻击者的攻击成本较高;而在 PoS 共识机制中,被贿赂节点不需要消耗大量算力,以较低
成本便可赚取攻击者的悬赏,因此贿赂攻击所需的成本较低,常见于 PoS 系统.
除了通过增加“筹码”提高筹码占比的方法以外,攻击者还可能通过网络层日蚀攻击、BGP 路由劫持、分割
攻击(详见第 3 节)等手段迫使大量节点离线,使区块链网络的总算力流失,从而提高自己的记账权竞争筹码占比
和记账权竞争的成功率.
4.2.2 51%攻击
一旦存在恶意节点持有的“筹码”超过本轮记账权竞争总“筹码”的一半,则其可以以较大的优势获得记账
权,并主导区块链达成特定共识,本文称该攻击为短程 51%攻击;也可以如图 4 所示,利用资源优势计算并生成一
条区块链支链,使其长度超过当前主链,并代替成为新的主链,本文称这种攻击为长程 51%攻击.
区块1 区块2 区块3 区块4 区块5 诚实矿工将区块通过广播
添加到公开的链条上
恶意矿工将区块添加到
区块2 区块3 区块4
私有的链条上
Fig.4 Fork of block chain
图 4 区块链分叉
在实际的区块链网络中,攻击者可能将 51%攻击作为一种子攻击,进而实现以下几类攻击.
[8]
(1) 双花攻击(double spending attack) :以比特币系统为例,攻击者在完成交易 A 后,针对 A 花费的代币伪
造交易 B,并发动长程 51%攻击,将一条包含交易 B 的支链变成新的主链.如此,攻击者对相同的一组代
币实现了“双重花费”.2016 年 8 月,基于以太坊的数字货币 Krypton 遭受了名为“51% Crew”的 51%攻
击 [79] ,攻击者通过租用 Nicehash(算力买卖市场)的算力,导致该区块链损失约 21 465KR 的代币.2018
年,比特币黄金社区的一位成员发文称:有人在尝试进行针对交易所的双花攻击,这一攻击造成了千
万美元的损失 [80] ,同时引起了人们对于去中心化和 PoW 机制的质疑.
(2) 历史修复攻击(history-revision attack) [40] :在区块链网络中,当攻击者无法持续拥有超过竞争本轮记账
权总筹码的一半以上筹码时,攻击者和诚实节点的身份可能发生颠倒,并导致多轮 51%攻击.具体地,
当攻击者 A 成功发起 51%攻击将他的支链变为主链时,之前的主链变为支链,诚实节点 B 变为“恶意
节点”,A 成为“诚实节点”.一旦 B 获得超过新一轮记账权总筹码的一半时,便可作为“攻击者”发起 51%
攻击,将他们的“支链”恢复为主链,此时称 B 发起了历史修复攻击.
(3) 卖空攻击(shot selling attack) [41] :51%攻击会破坏区块链系统,导致其对应的代币贬值.尤其是在 PoS 共
识机制下,“聪明”的矿工一般不会对基于 PoS 的区块链系统发动 51%攻击.因为攻击者成功发起 51%
攻击,意味着其持有大量代币,而代币贬值将会给攻击者带来巨大的经济损失.但在支持证券信用交
易的 PoS 系统中,攻击者可能通过 51%攻击发起卖空攻击来牟取暴利,具体步骤如下.
① 攻击者持有数量为 A 的代币,这些代币的权益需超过本轮投票总权益的一半以上.
② 攻击者通过证券信用交易或金融借贷等手段获得数量为 B 的代币,B 的数量远大于 A.这里的 B
是攻击者所借的证券,攻击结束后,需返还等额的代币给借贷方,如交易所.
③ 攻击者将所借的代币套现,兑换为具备实际价值的经济实体或货币.
④ 攻击者使用双花攻击、传统网络攻击等手段恶意影响区块链网络的正常运作,从而使得基于该区
块链的数字货币贬值,此处将贬值率记为Δ.
⑤ 攻击者回购数量为 B 的代币偿还给借款方,最终获利Δ(B−A).
(4) 自私挖矿攻击(selfish mining attack) [81] :与双花攻击不同,自私挖矿攻击是一种利用短程 51%攻击持续