BDoS: Blockchain Denial-of-Service
Attacks
出版时间:Dec 20, 2019
出处:Arxiv 论文
下载:https://arxiv.org/pdf/1912.07497.pdf
Abstract
原则上,区块链是拒绝服务(DOS)攻击的有吸引力的目标,因为代币之间
有着激烈的竞争,并且短期售卖可以得到利益。然而,典型的 Dos 只是针对少
数服务器,并且不能扩展到多节点系统。目前对于主要的加密货币还没有成功的
Dos 攻击。
该论文中提出的 BDos,是针对 POW 加密货币的第一个基于激励机制的 Dos
攻击,它和传统的 Dos 攻击不同,BDos 是针对系统机制设计的:它利用奖励机
制阻止挖矿者参与。BDos 攻击不同于已知的攻击(比如自私挖矿攻击),它的目
标不是增加攻击者的受益,而是破坏系统。尽管它也和那些攻击在算法上有相似
之处,但是它提出了新的对抗模型、目标、算法和博弈论分析。BDos 提出了一
个新的观点:攻击者能操作挖矿者的奖励,通过证明存在最长的秘密链而没有
实际发布区块。
Introduction
如 Bitcoin 这样的加密货币,是使用中本聪的区块链协议实现的。它和传统
的状态机复制相似,区块链允许参与者同意一种状态(如加密货币的状态余额),
但它和传统的一些协议又不同,公有区块链是去中心化的,并且允许任何人加入
这个系统。
为了对抗 Sybil 攻击,中本聪使用激励措施。传统的基于网络的 Dos 攻击不
能扩展到大型的去中心化系统,而基于挖矿的 Dos 攻击价格高昂,他却要求攻
击者的挖矿资源至少等于其他所有挖矿者的集合。BDos 是基于激励的 Dos 攻击
—攻击者针对系统的机制设计,并破坏了其激励兼容性。具体的,攻击者花费资
源,让合法的矿工去停止挖矿。攻击者只需要使用一部分资源即可。
这个攻击最关键的部分如图所示,
如 b 所示,攻击者生成了区块A,并且只发布它的头,如此我们说这个攻击
是 active;挖矿者可以忽略A 头的存在,并在其父级之后生成一个区块,造成分
叉,如 c 所示。
Related Work
在这里,主要介绍区块链 Dos 攻击的一些知识。
Dos
Dos 攻击的目的是阻止系统为客户端提供服务,并且作为分布式 Dos(DDoS)
攻击从多个计算机中安装。然而在区块链网络中,这种攻击不能针对隔离的系统
组件,如加密货币交换或矿池中的挖矿协调器。
Elipse 攻击中,攻击者可以占用目标节点的所有连接,并且将它从网络中隔
离出去。也可以通过路由攻击(如 BGP 劫持)达到相同的效果。然而,在分布
式系统中,这样的攻击除了降低节点的挖矿能力,它还可以正常与网路进行通信。
与之不同的是,BDos 可以阻止区块链中的所有进程。
多数(51%)攻击
51%攻击是指能控制系统中大多数挖矿能力的矿工可以进行分叉链中的任何
部分。这种攻击违反了 POW 协议的假设,它通过简单的产生空区块并忽略其他
区块就可以导致 full-fledged Dos 攻击,这已经成为一个主要的攻击方式,该链
比其他链都扩展的块,使其成为主链,尽管链中的内容为空。具有这种挖矿能力
的攻击也可以破坏系统的安全属性,如金手指和贿赂攻击,它利用矿工贿赂来达
到类似的效果,只是不需要攻击者直接获得挖矿能力。多数攻击一般发生在小型
加密货币中,主要加密货币中还没有出现。与之不同的是,BDos 攻击只要求低
于 50%的挖矿能力,并且不需要持续支出。
Revenue-seeking deviations
中本聪的区块链体系安全性依赖于激励机制。一项研究考虑了区块链协议的
激励兼容性。这种攻击可能使挖矿能力的结构发生偏差,导致集中化;或者影响
其他的区块链属性(如审查抵抗性)。但是这种攻击只考虑内部系统的收入,而
没有考虑外来的恶意动机,因此不能直接用来实现完全的 Dos 攻击。与 BDos 攻
击不同,这种寻求收益攻击,只要攻击者停止挖矿,他就不能操纵其他矿工的行
为。
大多数收益攻击只能影响各自的矿池,而不能在区块链导致直接的宏观影响。
基于收益攻击
另外一项研究发现,可以使用收益(以贿赂的形式)去影响区块链属性。根
据他们的目标将收益攻击分为三类:交易修正、交易排序和交易排除。这种攻击
不会直接危害协议的安全性,但可以用于强制执行特定顺序的交易或者忽略某个
交易。它不影响系统的活性。
非中本聪区块链
BDos 攻击是专门为类似中本聪的区块链设计的。使用 POW 的类似中本聪
的协议也一样容易受到攻击。通常 BDos 攻击对于 POS 的无效。但是针对 POS
也有泄气攻击(Discouragement attack),攻击者通过审查受害者的信息来减少
其他参与者的收益,导致暂时的 Dos 攻击。
Model
在这部分,将介绍系统模型,包括参与者、他们的交互和网络假设。还介绍
一个博弈模型,包括挖矿者的行为和效能。
挖矿模型
和普通的网络假设相同,只是定义了一个攻击者的额外能力:攻击者可以释
放部分区块数据来证明区块是能被挖的,而不需要释放一个常规的区块。
1、区块链数据结构
区块表示 B=(H,D),即区块头和区块数据。除了创世区块外,每个区块
都包含连接的另外一个区块的 hash 值。区块链中的每个区块 B 要么是一个完整
2、参与者
的区块,包含整个区块数据(H,D),要么是一个没有块数据的区块头(H,⫠),
⫠表示数据缺失。区块链中只包含部分区块信息是我们这个模型的改进。
定义了矿工、攻击者、挖矿能力
矿工可以用自己的私钥证明自己的身份。每一个合法的矿工都有一个本地的
Full 是 Li 的一个子集,包含除了自己的所有区块。
区块链视图 Li。Li
每个矿工也有一个本地的排序方法 Oi,
不同的矿工有不同的排序方法,这依赖于他们本地收到的区
它表示矿工在 Li上所有区块的排序。
块顺序。
3、Rushing
Ѵ(格尔玛)表示攻击者的能力,它是合法矿工预期的比率,采用攻击者的
区块,当攻击者在相同高度,和其他矿工竞争产生一个新的区块。
4、调度器
每一轮统筹系统进程的叫做调度器。在每一轮,调度器选择一个矿工生成新
块。并且,调度器也作为区块传播的一个中间件。
在每一轮开始的时候,调度器选择一个矿工生成一个新块,并说这个矿工是
积极的。并且调度器维护每个积极矿工的记录,从中选择矿工。选择每个矿工和
它的挖矿能力是有关系的。区块产生时间的唯一目的就是用来确定积极挖矿者的
花费。
之后,调度器添加部分或完整的区块到所有其他矿工的私有账本中。这里有
两种情况:(1)如果调度器选择攻击者去挖矿,攻击者会将自己的决定(是发送
一个完整的区块,还是只发送区块头)告诉调度器,调度器收到攻击者的决定,
将其添加到其他矿工的私有账本中。(2)如果调度器选择合法矿工挖矿,调度器
会将它发送给其他合法矿工之前,先通知攻击者。此时,攻击者会决定是否对抗,
如果对抗,他会发送完整的区块。否则,攻击者发送一个空的消息。如果消息是
空的,调度器发送正常的区块 Br 和攻击者的对抗区块给不同的矿工以不同的顺序,
来仿真连通因子Ѵ。
在这里我们假设调度器是以原子方式添加区块到私有账本中,这就暗示本地
区块链 Li 等同于所有的挖矿者。调度器的伪代码在附录 E 中。
博弈论模型
提出了一个在合法矿工之间的一个博弈。
1、矿工
每个矿工都知道攻击者的策略,并且参加博弈使用有限的行为:{挖矿,停
止}。在这个博弈中,合法矿工的唯一目的就是最大化他们的效益。
2、效益(Utility)
,预期收益=收入-花费
我们假设货币价值不变,每个矿工每秒挖矿的花费为:
当没有攻击时,预期收益是:
通过矿工挖矿能力来形式化预期收益,
收益方法 U:
在没有攻击的博弈中,合法矿工的收益为:
定义一个收益因子ib, 收益因子是每个矿工每笔投资的回报。被定义为:
(1)
(2)
3、行为
我们认为矿工是合法的,意味着当没有足够利益时,他们不会参加这场博弈。
矿工会尝试着最大化他们的利益。每个合法的矿工都有两个可能的动作;(1)挖
矿,在主链上挖矿(2)停止。矿工可以在每一轮的开始选择一个行为,并提交
它直到这一轮结束。在这一轮中改变它的行为不会增加矿工的收益,因为她没有
产生新的消息。由于无记忆特性,过去的时间不能提供任何新的消息。该定理在
附录 A 中被证明。
如果ib>1,合法矿工会选择继续挖矿;如果没有攻击,并且ib<1,会
如果攻击者释放区块头,合法矿工会选择两个动作中的一个。合法矿工可能
停止。
的行为的伪代码在附录 E 中。
The BDos Attack
BDos 攻击的目的是激励合法矿工去停止挖矿。攻击策略如图 fig1 所示:
B*是主链上的最新的块,攻击算法是在 B*上挖矿(图 b),如果成功,在 B*
后连接一个新块 BA 而不是公布 BA,它只公布它的头(BA,⫠),它扣留了块的其
他部分。此时攻击是活跃的。BA 就是攻击的领导块,但 BA 不是主链的一部分,
因为没有发布完整的区块。
BA 的头可以证明攻击者能成功挖到 BA 并且扣留整个区块。直到合法矿工产
生一个新块,攻击者完全停止挖矿。此时会发生两件事:
通过挖矿生成区块:如果至少一个矿工挖矿,并且成功产生连接到 B*的区块
By(图 c),攻击者立刻发布完整的 BA 区块,尝试将他添加到主链中,此时会发
生竞争:挖矿能力被两者瓜分(图 d)。赢得人成为主链的一部分。
合法矿工停止挖矿:由于没有合法矿工生成新区块,所以攻击者停止挖矿。
攻击在合法矿工的行为影响取决于系统参数(收益因子) ,(挖矿能
力) andA(攻击者的挖矿能力)。BDos 的伪代码在附录 E 中。
Analysis
如果停止挖矿是对所有矿工的响应,我们就说攻击成功了,并且它实现了系
统的完全关机。
博弈论分析
比较不同策略下,矿工每秒的预期收益,为了计算这个,构造了一个连续时
间的 Markov 链。我们分析特定策略(如停止挖矿)作为主导策略的条件是什么
(通过比较收益函数)
1、策略
评估每个合法矿工的策略。当攻击活跃时,在 B*中积极挖矿的矿工集合为:
我们的目的是发现矿工在博弈开始时选择的最佳策略,即从私有账本 Li 和排
序函数 Oi 到最佳行为(挖矿,停止)的一个映射。在这次博弈中,每个策略使
用 3 状态的 Markov 链。挖矿策略 Smine 如图 2a 所示,停止策略 Sstop 如图 2b 所示,
状态 0,每个矿工在 B*中的初始状态(图 1a)
状态 1,攻击者发现新块(图 1b)
状态 2,竞争条件,(图 1c)
在所有策略中,矿工选择挖矿行为当不是状态 1 时(攻击不是活跃的)。证
明该定理在附录 B。
2、状态概率
矿工的策略表示为 S,
表示在状态 1,所有矿工在 B*中挖矿的所有挖
矿能力。在攻击过程中,部分矿工仍保持在 B*中挖矿:
计算两个 Markov 链中的状态概率:
(3)
(4)
注意矿工改变状态概率依赖于它选择哪个策略,即
依赖于策略。
3、每个策略的收益
第 1 步,先计算矿工的花费和收益(revenue),当挖矿时,它的花费是不变
的,当停止挖矿时,花费为 0。
停止挖矿时,平均花费为:
挖矿时,它的平均花费不变,为:
矿工从状态 0 到 0 速率为,从状态 2 到 0 速率为,矿工获得的利益
,当他以速率从
对于挖矿策略,矿工获得的利益是
因此对于停止策略它的预期收益是:
(profit)为 K
状态 1 到 2,
挖矿策略它的预期收益是:
(5)
(6)
4、成功攻击的条件
为了让这个攻击使系统强制关机,我们需要让矿工有最大的挖矿能力。使用
公式(5)、(6)我们定义
,来形式化表示停止和挖矿策略之间的差异:
(7)