APP下载

区块链中区块截留攻击的研究与分析

2022-03-02刘子州程晓荣王治博

计算机工程与应用 2022年4期
关键词:挖矿全网算力

刘子州,程晓荣,王治博

华北电力大学(保定)计算机系,河北 保定071000

区块链技术起源于比特币,是以比特币为代表的众多数字货币体系的底层核心技术,它整合了梅克尔树、工作量证明(proof of work,PoW)、hash函数、数字签名等技术,因而具有了去中心化、去信任、数据不可篡改等特点[1]。区块链技术如今被国内外学者广泛地尝试和应用在金融交易、物联网、身份认证等领域,应用前景广阔[2]。

区块链技术作为一项新兴技术,学者们针对区块链的攻击行为研究不够完善透彻,同时针对区块链的攻击行为方式较多,其中主要的攻击有自私挖掘、女巫(Sybil)攻击、双花攻击、区块截留攻击(扣块攻击)等[3]。区块截留(block withholding,BWH)攻击是针对比特币等虚拟货币的一种攻击行为,攻击者通过加入目标矿池,在挖掘出完整区块后截留不发布,从而达到降低目标矿池收益的行为。区块截留攻击首先由Rosenfeld于文献[4]中提出并进行研究。在Rosenfeld 对区块截留攻击的研究中,它被视为一种“损人不利己”的攻击方式。之后在文献[5-6]中相继提出了新的区块截留攻击模型,并证明了恶意攻击者可以通过区块截留攻击增加自己的收益。文献[7]创造性地提出了赞助的区块截留攻击,指出攻击者可以通过雇佣矿工去攻击受害矿池,降低受害矿池的有效算力比,进而提高攻击者矿池的有效算力比,最终获得额外的收益。文献[8]通过结合区块截留攻击以及自私挖掘,提出了扣块后分叉攻击(fork after withholding,FAW):攻击者在进行区块截留攻击后故意分叉进而竞争主链,因此攻击者不仅会获得区块截留攻击的额外收益,还有几率获得成为主链后增加的收益。

通过上述分析可知,国内外学者们已经针对区块截留攻击进行了相当的理论研究,且研究的侧重点各有不同,但是就提高收益速度这一角度的研究尚有不足。收益速度是衡量攻击者是否获利的重要指标,也是区块截留攻击是否最终有效的重要衡量标准。本文通过分析区块截留攻击的原理和攻击过程设计了攻击模型,能够在稳定提升收益率的情况下同时提高收益速度,且经实验验证攻击成功有效。

1 区块截留攻击

1.1 矿池与矿工

以比特币为例,全网平均10 min 产出一个区块,其奖励会赋予这位“挖”出区块的幸运矿工,但其余矿工颗粒无收,这就导致少量算力很难通过挖掘区块而获得奖励。极低的获利概率促使矿工们将算力联合起来,组建算力庞大的矿池,以保障稳定的收入[9]。截至2020 年6月,算力前4的矿池占全网算力约5成。

为方便管理,每个矿池都设有管理员,矿池管理员负责为每个矿工收集交易、分配挖矿任务和分配收益[10]。为保证矿工能够积极工作并获得稳定的收入,矿池管理员会设定一个低于全网难度的挖矿目标,将交易收集打包后与挖矿目标一并发送给各个矿工,在本轮结束时汇总各个矿工的贡献量,并按贡献分配收益。

矿工通过自身的算力致力于解决管理员所分配的挖矿目标,一旦解决了目标值,便将满足目标值的nonce提交给管理员,作为部分工作量证明(partial proof of works,PPoWs)[8]。部分工作量证明是矿工证明自己努力挖矿的凭证,同时也是矿池分配收益的凭据[11]。完整工作量证明(full proof of works,FPoWs)是区块链全网的解决目标,部分工作量证明是完整工作量证明的超集[10]。因此矿工在寻找解决PPoWs 的nonce 时,有几率直接找到FPoWs 的nonce。一旦矿工提交了FPoWs,管理员就会向全网广播,矿池会获得提交区块的奖励。矿池中的每个矿工都试图找到FPoWs,一旦矿池找到了FPoWs,则该矿池会获得提交区块的奖励。由于矿工无法将FPoWs 提交到其他矿池中,如果矿池中的某个矿工找到了难题的解决方案,即FPoWs,它将有两个选择,一是将其提交给矿池管理员,二是隐瞒它找到FPoWs的事实。

1.2 符号说明

表1为符号说明,本文所用符号及其相关含义均符合表1。

表1 符号说明Table 1 Symbol description

1.3 区块截留攻击原理

诚实矿工在收到管理员所发布的任务后开始挖矿,在发现满足任务目标的PPoWs后直接提交给矿池管理员,以获得奖励[12]。但发动区块截留攻击的恶意矿工在寻找满足任务目标的过程中,发现PPoWs 便提交给矿池管理员,发现FPoWs不选择提交而是抛弃,矿池管理员不会得知恶意矿工抛弃FPoWs 的事实,而仍然认为该矿工在努力寻找FPoWs。由于矿池管理员依旧认为该恶意矿工是诚实的,该恶意矿工依然会获得矿池分发的收益。恶意矿工并不会为矿池寻找FPoWs有任何贡献,同时该矿池内其他诚实矿工由于恶意矿工的行为而降低了收益[13]。

图1为Rosenfeld攻击模型的攻击流程。由于Rosenfeld的攻击模型同样会导致恶意矿工收入的减少,该类模型被认为是得不偿失的。

图1 Rosenfeld区块截留攻击Fig.1 Rosenfeld block withholding attack

为了能更直观地获得结论,在此假设全网只有两个矿池,全网算力总和为1,全网收益总和为1。受害者矿池中存在恶意矿工,恶意矿工只向管理员提交PPoWs而不提交FPoWs,即发动了区块截留攻击。

诚实矿池的算力为1-ρ,受害者矿池的总算力为ρ,其中的诚实矿工算力为ρ-α。

在所有矿工都诚实挖矿的情况下,每个矿工都会获得与其投入相符合的收益,即诚实矿池收益为1-ρ,受害者矿池收益为ρ。在恶意矿工发动区块截留攻击后,因为恶意矿工在挖矿过程中只提交PPoWs,而不提交FPoWs,所以恶意矿工的算力α并不会对挖矿有任何实际作用。因此,此时区块链网络的真实算力只有1-α,受害者矿池的真实算力只有ρ-α。根据真实算力,受害者矿池的平均收益为:

恶意矿工的收益为:

诚实矿池的平均收益为:

当所有矿工诚实挖矿时其收益与其自身算力成正比,因此可得受害者矿池的收益率为:

其中由于ρ<1,因此PR1<1,即受害者矿池的收益减少了。

恶意矿工的收益率:

同样,由于ρ<1,因此PR<1,即恶意矿工的收益也减少了。

诚实矿池的收益率:

其中由于0<α<1,因此PR2>1,即诚实矿池的收益提高了。

由此可见,Rosenfeld 的区块截留攻击模型不会导致恶意矿工的收益增加,反而会使恶意矿工和受害者矿池的收益减少,间接导致诚实矿池的收益增加。因此Rosenfeld区块截留攻击被视为一种“损人不利己”的攻击模型。

1.4 Courtois区块截留攻击

Courtois 和Bahack 于文献[5]中提出的区块截留攻击模型指出,恶意矿工可以通过间接地利用诚实矿工的计算能力来提高自身的利益。

Courtois 攻击模型的流程如图2。假设存在一个攻击者矿池以及多个诚实矿池,攻击者矿池将自身算力分为两部分,一部分作为诚实算力A 依靠其算力挖矿,剩余算力作为攻击者B注入其他矿池中。在该类模型中,恶意矿工的行为减少了诚实矿工获利的可能性,从而提高了自身的利益。

图2 Courtois区块截留攻击Fig.2 Courtois block withholding attack

1.4.1 双矿池的Courtois区块截留攻击模型

假设攻击者矿池将自身算力的β部分作为渗透矿工去攻击受害者矿池,其余1-β部分诚实挖矿,那么攻击者的收益将会分为攻击收益和诚实收益。此时区块链网络的真实算力为1-αβ,受害者矿池的真实算力为。

攻击者的收入分为两部分,一部分为渗透入受害者矿池发动区块截留攻击所造成的收益,另一部分为诚实挖矿的收益。

攻击者的攻击收益:

攻击者的诚实收益:

因此攻击者的总收益为:

攻击者的收益率为:

明显可得,PR>1,攻击者的收益增加了。

1.4.2 多矿池的Courtois区块截留攻击模型

区块链网络中存在多个矿池,攻击者矿池分出β比例算力的矿工作为攻击者渗透进一个受害者矿池中发动区块截留攻击,其余算力诚实挖矿,且不攻击其他诚实矿池。受害者矿池中的诚实矿工算力为ρ,其余诚实矿池的算力为1-α-ρ。

攻击者的收益分为两部分,一部分为攻击受害者矿池所获得的收益R1,另一部分为诚实挖矿所获得的收益R2。

攻击者的攻击收益:

攻击者的诚实受益:

因此攻击者的总收益:

攻击者的收益率为:

类似于双矿池的Courtois 区块截留攻击,攻击者的收益率PR>1。

1.5 Bag被赞助的区块截留攻击

自私的攻击者总是寻找一些策略并利用其计算能力来最大化自己的收入。Bag等人发现,通过对受害者矿池的攻击会间接导致除受害者矿池以外所有矿池的收益增加,这就存在了其他矿池合作发动攻击的可能性。在攻击者与雇佣者矿池合谋的情况下,攻击者会因攻击受害者矿池而得到来自雇佣者矿池的奖励,奖励金额应与雇佣者通过攻击受害者矿池而额外获得的激励收益成正比[7]。

当区块链网络中存在两个矿池A 和B 且攻击者的算力稳定不变时,攻击者与A矿池合谋攻击B矿池以期获得更大的利润。攻击者将算力分为两部分,一部分攻击算力受到矿池A的雇佣攻击矿池B,攻击算力在矿池B 中发动区块截留攻击,遇到PPoWs 便提交,遇到FPoWs便交给雇佣者矿池A以证明自己的攻击行为(矿池A 并不能公布此FPoWs),矿池A 的管理者便会给予攻击者一部分奖励,从而导致攻击者与雇佣者矿池A皆会获得比诚实挖矿更多的收益。

攻击者所获得的收益包括三部分:攻击者向矿池P发动区块截留攻击所获得的收益、攻击者诚实挖矿的收益、雇佣者矿池给予攻击者的奖励。

2 收益速度提高的区块截留攻击

很多针对区块截留攻击的研究人员都将策略重心放在了攻击所造成的收益率上(即全网产出一块区块,攻击者所获得的部分),而忽略了对收益速度(单位时间内所获收益)的研究[14]。当攻击者发动区块截留攻击后,渗透矿工对挖矿没有任何实际作用,区块链全网的真实算力降低,而在区块链全网的难度值不变的情况下,产出每块区块的期望时间增大,进而导致了收益速度的降低,因此单纯的针对提高收益率的策略并不会造成事实上的收益提高。

以目前最完善的区块链公有链网络比特币为例,每当全网挖出2 016 块区块,比特币网络会基于全网算力自动调整挖矿难度[15],以保证每挖出一块区块的期望时间为600 s,称每2 016块(约14天)为一个阶段。根据比特币网络规则可知,当某一阶段内出现全网算力变化导致挖矿期望时间不同于600 s,比特币网络不会在瞬时改变全网难度值,而是会根据本阶段末的算力在下一阶段开始前自动调整挖矿难度值,以保证稳定的挖矿秩序。

本文所构造模型通过引入时间参数t来双方面地分析区块截留攻击的收益情况,在攻击者收益率的分析上仿照Courtois 区块截留攻击模型的方案进行实验验证,通过时间参数t来分析攻击者的收益速度,并就收益速度与收益率对区块截留攻击的收益情况进行综合。

通过比特币网络的运行机制,本文将区块截留攻击的过程分为三个阶段,分别为攻击开始阶段、持续攻击阶段和攻击结束阶段,并分别对这三个阶段进行收益分析。

2.1 攻击开始阶段

在阶段开始时,攻击者矿池持有α比例的算力,并将自身β比例的算力渗透进受害者矿池中,对受害者矿池发动区块截留攻击,此时受害者矿池的算力为ρ+αβ,攻击者将自身余下的1-β比例的算力用于诚实挖矿。图3为攻击开始阶段的各部分算力变化。

图3 攻击开始阶段Fig.3 Attack start stage

本阶段攻击者矿池诚实挖矿的收益:

本阶段攻击者矿池渗透攻击的收益:

本阶段受害者矿池的收益:

由于攻击者发动的区块截留攻击,全网内有αβ的算力将不会致力于挖掘区块,导致在比特币网络的难度值不变的情况下,全网的真实算力降低,挖掘区块的速度下降,因此挖出一块区块的期望时间增大,全网内的收益速度降低。

Dh为区块链全网平均每秒产出块数,当全网难度值不变且算力稳定时,有,T为固定值600 s。而在攻击者发动了区块截留攻击后,全网的真实算力为:

由于真实算力的变化,在本阶段,挖出一块区块的平均时间变为,很明显当α、β都大于0 时有t>T,即期望时间增大。

此时攻击者的收益速度rstart为:

而攻击者诚实挖矿时的收益速度rah为:

结论1在攻击者发动区块截留攻击的开始阶段,真实算力降低会引起挖掘区块的期望时间增大,攻击者的收益速度降低。

2.2 持续攻击阶段

在攻击开始阶段结束时,由于开始阶段挖矿时间长于预期,区块链网络会自动调整下一阶段的难度值以匹配全网算力,保证出块的期望时间为T。此时各部分的算力可见图4。

图4 持续攻击阶段Fig.4 Attack continued stage

在持续攻击阶段,假设在攻击者发动攻击后全网内的算力保持稳定,经过区块链网络的自我调整后,此时的全网难度为:

全网真实算力(即诚实算力)为:

而挖出区块的期望时间为600 s。

从上文得知,在发动攻击后攻击者的收益量为:

在此阶段,攻击者的收益速度为:

显然,rmid>rstart,当时,rmid>rah成立。

结论2在持续攻击阶段,当时,攻击者的收益速度将会高于诚实挖矿。

2.3 攻击结束阶段

在攻击者矿池发动区块截留攻击后的某个阶段,攻击者矿池的管理者决定取消攻击策略,转而全力进行诚实挖矿。此阶段的算力变化见图5。

图5 攻击结束阶段Fig.5 Attack end stage

假设全网内的算力保持稳定,由于区块链网络的自我调节,此时全网的挖矿难度值为,而当攻击者矿池将算力全部转为诚实挖矿策略后,全网的实际算力提高到h,在难度值稳定的情况下算力上升将会导致出块速度提升,因此本阶段内出块的期望时间为:

显然t

由于攻击者矿池改变了挖矿策略转而进行诚实挖矿,而诚实挖矿的期望收益与攻击者自身的算力相匹配,本阶段内攻击者矿池的期望收益为α,攻击者矿池的收益速度为:

显然rend>rah,且rend>rmid。

结论3在本模型中,攻击者的渗透算力在满足的条件下rend>rmid>rah>rstart。

2.4 模型总结

持有全网α算力的攻击者矿池利用其自身比例的算力作为渗透算力,针对持有全网ρ算力的受害者矿池发动区块截留攻击,即渗透矿工在挖矿过程中只提交PPoWs,发现FPoWs 不会选择提交而是自行处理(如丢弃或发动FAW攻击)。因为渗透矿工提交了PPoWs,所以受害者矿池的管理员会承认渗透矿工们的工作,从而根据渗透矿工的贡献给其发放收益,渗透矿工们也得到了稳定的收益。在发动攻击后,攻击者应维持攻击行为并保证渗透算力的比例不变,以保证挖矿和收益的稳定性。当攻击者决定改变挖矿策略时,须在攻击的最后一个阶段全力诚实挖矿,以保证收益的最大化。

3 仿真验证

为了验证本文所提出的区块截留攻击模型能够在提高收益率的同时提高收益速度,实验平台布置在Windows10上,通过dockerforWindows 来进行对Hyperledger Fabric 1.2 区块链环境的搭建,实验结果在Python 上进行编码展示。

3.1 前提假设

对区块截留攻击模型的验证实验在以下前提条件中进行:

(1)每挖掘2 016 块区块为一阶段(约14 天),区块链网络将会在每个新阶段更新全网难度值,假设攻击者在一个新阶段发动攻击。

(2)假设攻击者在发动攻击后,全网的区块链节点总数及总算力保持稳定。

(3)假设全网总算力为1,受害者矿池的算力为0.1,攻击者算力α取值范围为0.1~0.2,β为攻击者算力中渗透算力的比例,其余全部算力为若干个诚实矿池所有。设定每个矿池的挖矿幸运值为100%,即矿池收益完全对等于矿池算力,挖矿模拟次数约为10 000次。

3.2 Courtois区块截留攻击收益分析

图6 Courtois模型中攻击者的收益率Fig.6 Attacker’s revenue rate in Courtois model

由图6 可明确得出,在Courtois 提出的区块截留攻击模型中,攻击者在全网的收益占比明显要高于自身算力在全网的比例,但由于攻击者需要投入大量的算力对受害者矿池进行渗透,受害者矿池的收入会明显降低。

Courtois 所提出的模型中,攻击者的收益占比明显提高,但是该策略忽略了在攻击者发动区块截留攻击后,由于全网算力降低所引起的挖矿的期望时间增大,从而间接导致了攻击者单位时间内所获区块量,即收益速度降低。从图7中可明显看出,攻击者在投入了大量的渗透算力后,其收益速度有明显下降。

图7 Courtois模型中攻击者的收益速度Fig.7 Attacker’s revenue speed in Courtois model

3.3 新区块截留攻击模型收益分析

在所构造的区块截留攻击模型中,攻击者改变了攻击策略,且同时减少了渗透算力的大小,因此从图8 中可见攻击者的收益率要小于Courtois 区块截留攻击模型中的收益率,但同时图9表明攻击者的收益速度要高于诚实挖矿且远高于Courtois模型。当β超过了阈值,攻击者的收益速度将会低于诚实挖矿时的收益速度,从而造成事实上的收入减少。

图8 新模型中攻击者的收益率Fig.8 Attacker’s revenue rate in new model

图9 新模型中攻击者的收益速度Fig.9 Attacker’s revenue speed in new model

在所构造的攻击模型中,由于攻击者的攻击行为降低了全网的真实算力,导致诚实矿池的算力占比提高,从而间接提高了收益速度,从图10中可看出诚实矿池的收益速度有所提高,且图11 表明受害者矿池则因为渗透算力的攻击行为而导致自身收益速度的下滑,成为区块截留攻击中全网唯一的受害者。通过模拟挖矿实验也可得出,实验结果符合预期:诚实矿池的收益速度有了少量的提升,而受害者矿池的收益速度则下降明显。

图10 新模型中诚实矿池的收益速度Fig.10 Honest pool’s revenue speed in new model

图11 新模型中受害者矿池的收益速度Fig.11 Victim’s revenue speed in new model

3.4 适用场景分析

本文所构造的模型与Courtois 模型相比,降低了收益率的同时提高了收益速度,且由于本文模型不允许攻击者投入大量的渗透算力,攻击者可以通过少量的渗透算力将受害者矿池的收入维持在一个较为合理的范围内,以保证较高的隐匿性。

由于攻击者的收益速度上升,短期内攻击者所获得的挖矿奖励将会提高,但同时由于攻击者的收益率下降,攻击者挖出的区块量少于Courtois模型。每当挖出区块,比特币网络将会自动向该矿池发放比特币奖励,Courtois 模型由于较低的收益速度,在短期内会减少比特币收入量,但同时由于攻击行为以及其自身较高的收益率,长期来看Courtois模型会提高攻击者的比特币持有比例,考虑到比特币自身的价值,高持有比例会带来更高的效益。相反本文所构造的模型能够在短期内通过高收益速度带来更多的比特币奖励。因此若考虑在短期内提高收益,本文模型会优于Courtois 模型;若考虑通过长期的攻击行为获得更高的比特币持有占比,Courtois模型将会优于本文模型。

4 结束语

本文构造了一个可提高收益速度的区块截留攻击模型,通过引入时间参数重新分析了区块截留攻击的收益情况。基于所构造的模型进行了仿真实验,实验通过与典型的Courtois 区块截留攻击的收益率和收益速度进行分析对比,证明本文所构造的攻击模型攻击有效,并且确实可以同时提高收益速度和收益率。但为了保证收益速度,本文模型收益率较Courtois 攻击模型低,破坏力较弱,隐匿性较高,对攻击者来说属于一种较为安全保守的攻击策略。本文模型依然无法单独解决囚徒困境问题,但同样可以结合FAW攻击,解决囚徒困境问题[16]。

区块链作为一种新兴技术有很广阔的发展前景,其特性保证了它可以应用到多个行业领域中,因此区块链的安全研究将会成为未来区块链研究的重点。针对区块截留攻击,如何在保证区块链特性的同时有效地防御将成为下一步研究的重点内容。

猜你喜欢

挖矿全网算力
算力盗用:一种新型财产侵害*
中科曙光:联合发布全国首个“一体化算力交易调度平台”
中国电信董事长柯瑞文:算力成为数字经济的主要生产力
合力攻坚 全面治理高校“挖矿”
多措并举 全流程整治“挖矿”
算力网络场景需求及算网融合调度机制探讨
《唐宫夜宴》火遍全网的背后
双十一带货6500万,他凭什么?——靠一句“把价格打下来”,牛肉哥火遍全网
挖矿木马的攻击手段及防御策略研究
电力系统全网一体化暂态仿真接口技术