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%攻击持续
   275   276   277   278   279   280   281   282   283   284   285