拒绝服务(DoS)攻击:成也矿工,败也矿工
来源:头等仓
摘要:我们发现了一种针对类似比特币区块链的拒绝服务攻击,这种攻击模式比之前的攻击模式成本要低得多(只需全网20%算力)。区块链依赖于激励机制来保证系统安全。我们展示了攻击者如何破坏这些激励机制,从而导致理性的挖矿者停止挖矿。
自互联网诞生以来,拒绝服务(DoS)攻击问题(也称为洪水攻击)就一直在困扰着互联网。DoS攻击者以各种服务为目标,旨在获取乐趣和利润。最常见的是,他们会向服务器发送大量的请求,导致服务器太忙,以至于无法为正常用户提供服务。应对措施通常是通过识别洪水来源来防止这类攻击。
因此,在所谓的分布式拒绝服务(DDoS)攻击中,攻击者必须协调来自多台计算机的洪泛(Flooding)。
头等仓注:DDoS宽带消耗攻击可以分为两个不同的层次;洪泛攻击或放大攻击。洪泛攻击的特点是利用僵尸程序发送大量流量至受损的受害者系统,目的在于堵塞其宽带。放大攻击与其类似,是通过恶意放大流量限制受害者系统的宽带;其特点是利用僵尸程序通过伪造的源IP(即攻击目标IP)向某些存在漏洞的服务器发送请求,服务器在处理请求后向伪造的源IP发送应答,由于这些服务的特殊性导致应答包比请求包更长,因此使用少量的宽带就能使服务器发送大量的应答到目标主机上。
有趣的事实:分布式源通常是用户的受害机器形成了机器人网络或僵尸网络。
像比特币这样的加密货币,则是DoS攻击一个特别有利可图的目标。理论上,期货市场和保证金交易允许攻击者做空一种加密货币,通过压低该货币的价格来获取利润。而竞争激烈的加密货币,以及担心加密货币影响金融主权的政府,则是其他潜在的攻击者。据我们所知,在实际操作中,还没有过对重要加密货币的成功DoS攻击。
原因是区块链协议的去中心化性质。在区块链的世界中,并没有可攻击的中心服务器。运行区块链的机器被称为矿机,它们会完全复制区块链数据。虽然发生过对个别机器的攻击,但几台机器的完全关闭(甚至是被破坏),对整个系统的可用性几乎没有影响。
更有趣的事实:比特币的P2P网络是为了抵御攻击而构建的,它吸取了僵尸网络(僵尸网络是为抵御反恶意软件公司的攻击而构建的)的教训。
实际上,针对比特币这类区块链的DoS攻击是非常昂贵的。中本聪提出的比特币协议依靠工作量证明机制(PoW)来保证系统的安全性,矿工只能证明他们在系统外花费了资源(即计算能力)来创建区块。仅当系统中的大部分计算能力运行正常时,才能维护区块链的安全。因此,攻击者要进行DoS攻击,其拥有的计算能力就要比其他参与者的总和都要高,即51%攻击。对于主要的加密货币来说,51%攻击的代价对于大多数实体而言都是难以承担的。
这类攻击在2018年底Bitcoin ABC和Bitcoin SV之间的“哈希战争”中有过尝试,但没有成功。
BDoS的提出
我们发现,中本聪协议的固有特性,会使其容易受到明显更便宜的DoS攻击,我们利用了区块链协议依赖于安全性激励的这一事实。在区块链中,参与者(矿工)因参与加密货币挖矿而获得奖励。当这些激励措施不再能够促进良好行为时,该系统就会处于危险之中。我们将这种攻击称为区块链DoS(BDoS),它剥夺了矿工的理性,使得他们违反规则要比遵循规则更有利可图。为了充分发挥效力,攻击者需要矿工了解这种攻击行为,以及让他们意识到可以通过此攻击行为增加利润的事实。显然,这种策略行为并没有在挖矿软件中预先编程。因此,我们认为,这种攻击并不会带来迫在眉睫的风险,因为矿工们在面对攻击时,必须重新编程挖矿设备,以最大化其利润。
这种攻击的存在,也许并不令人惊讶,它确实是BryanFord和Rainer Böhme所提出理论的一种表现,他们认为,从理性主体的角度分析系统效用是有限的,因为外在激励是无法与拜占庭行为进行区分的。
下面我们将概述这种BDoS攻击的机制。首先,让我们先从中本聪背景开始讲起。
背景
绝大多数加密货币都在使用中本聪为比特币提出的区块链协议。在中本聪区块链中,系统中的所有交易都被放在区块中,并形成一个不断增长的链。矿工们通过新交易组成的新区块来扩展这条链,并将其发布给所有其他系统参与者。区块生产的速度,是通过要求矿工们在区块中提供工作量证明(密码难题的解决方案)来调节的。(按照定义,没有PoW的区块是无效的)为了激励矿工们的工作,生产区块将获得一些固定的奖励(例如,当前比特币的固定区块奖励是12.5 BTC)。如果矿工规模不是太大,那么他们就会被激励来延长区块链,并获得相应的奖励。由于矿工遍布全球,因此偶尔会有两个或多个矿工同时生产区块,而这些区块有相同的父块,这导致的结果就是分叉,也就是链出现了多个分支。而要确定哪条链是主链,中本聪提出的规则是:最长链就是主链,所有矿工都应该延长这个最长链,而与主链分离的区块以及它们的回报都会被忽略。
为了避免失去奖励,矿工在接收并验证最新区块之前就开始采矿。一旦在最新区块的header中接收到它的元数据,矿工们就开始对它进行挖矿。这样就能避免了在旧区块上浪费挖矿资源,增加了挖取下一个区块的机会。通常,这不是好的做法,并引起了很多安全研究者的担忧。在轻量级客户端使用简化支付验证(SPV)协议进行部分区块链验证之后,这种基于区块头的挖矿方法便被应用了,并被称为SPV挖矿。
攻击
我们提出的攻击者会使系统处于一种状态,在这种状态下,理性矿工的最佳行动就是停止挖矿。为了诱发这种状态和相应的证明,攻击者生成一个区块,并只发布其区块头。而给定一个区块头,一个理性的矿工有三种可能的行动:(1)其可以延长主链,然后忽略区块头;(2)其可以扩展这个区块头(SPV挖矿);
(3)其可以停止挖矿,既不消耗算力,也不赢得奖励;
如果理性矿工遵循选项1并扩展主链,找到并广播了新的区块,那么攻击者矿工将使用其相对较高的连接性(如自私挖矿)并传播与区块头BA相对应的完整区块。这会导致两组矿工之间的竞争,其中一组先接收到攻击者的区块数据,另一组则先接收到理性矿工的区块。
理性矿工很有可能会输掉比赛,而区块Bi永远不会被包含在主链当中。与“无攻击”情况相比,这降低了在最后一个完整区块进行挖掘的预期收益。
如果理性矿工遵循选项2,并成功地扩展了攻击者的区块头BA,则攻击者就不会发布完整的区块BA。这导致理性矿工的区块永远不会包含在主链当中,从而导致该区块的预期回报为零。
因此,在这两种情况下,如果“无攻击”设置中的原始盈利能力不是太高,则攻击者都可以确保诚实的矿工最终会蒙受损失。因此,BDoS攻击者的威胁,意味着诚实矿工最好是放弃,而不是选择挖矿,即选择第三个方案。正如电影《战争游戏》中所说的那样,“唯一能赢的途径,就是不参与。”
BDoS攻击成功的条件
现在我们来说下BDoS攻击者成功的条件是什么。具体来说,对于特定的理性矿工i,我们要考虑在什么条件下,无论其他参与者的行为如何,i停止挖矿要比继续挖矿更有利可图。答案取决于三个因素:首先,如果攻击者的算力足够多,那么攻击将成功;其次,如果矿工i的算力足够少,那么他将成功;最后,如果矿工i一开始利润不高,那么他将成功;矿工i的盈利因素是,如果没有发生攻击,其在挖矿中的每1美元投资都将获得回报。下面的图片显示,对于不同攻击者大小(X轴)和矿工大小(不同曲线)成功进行攻击的最大收益率。
在我们的分析中,我们使用了一个称为收益因子的属性,它代表每美元投资的回报。这取决于挖矿设备以及电力成本,以及相关加密货币的价格。
举个具体的例子,如果最大矿工拥有的算力占全网算力的20%,那么一个拥有全网20%算力的攻击者,就可以激励所有的矿工在其盈利系数低于1.37时停止挖矿。
目前,对于比特币而言,在电价为0.05美元/kWh 的情况下,比特大陆S17 Pro矿机的收益因子接近2,而S9 的收益因子接近1。如果币价大幅下降,难度增加,攻击者将能够激励现有的矿工停止挖矿,从而导致比特币网络完全停止运行。此外,比特币区块奖励预计将在2020年减半,这相应会降低矿工的盈利能力。
两种币模型
请注意,我们的模型是保守的,在某种意义上低估了攻击者的机会。到目前为止,我们假设一个矿工在利润为0的情况下可以继续挖矿或停止挖矿。但是,加密货币矿工通常会将挖矿工作转移到第二种加密货币上,甚至是暂时性的。如果两种币的初始盈利能力(在攻击前)是相似的,那么在攻击发生时,切换到另一种币上,几乎就是能盈利的。这意味着在这种情况下,我们称之为两种币模型的攻击威胁,甚至要比我们上面分析所显示的还要高。事实上,两种币模型更符合现实场景。例如,有证据表明,矿工们经常会根据盈利率在BTC和BCH之间进行切换。
缓解措施以及披露责任
我们没有租用挖矿设备来进行攻击,也没有做空比特币然后跑去躲避,而是遵循安全研究的最佳做法,并经历了一段负责任的披露期。我们向受影响的主要加密货币的开发人员发出了攻击警报,并讨论了缓解措施。我们建议对共识规则进行小小的修改,这样矿工们就可以对区块header在body在之前某个阈值时间(比如1分钟)以上的区块给予较低的优先级。这将增加攻击者输掉区块传播竞赛的机会,因此可降低BDoS攻击的有效性。不幸的是,这一对策并不是根本性的。正如我们在论文中所解释的,攻击者可以使用智能合约或零知识证明来证明其找到了一个区块(而不是发布区块头)。使用这些技术,就会使得区块传播竞赛中的攻击者区块与理性矿工区块之间无法被区分,从而使缓解技术无效。
BDoS攻击的另一个可能解决方案,是使用叔块奖励机制,正如以太坊采用的方案。叔块奖励机制将奖励挖到非主链(但与主链直接相连)区块的矿工。如果使用了叔块奖励机制,理性的矿工在BDoS攻击中停止挖矿的的机会要低得多,因为即使其输掉了比赛,它也会得到奖励(相当于以太坊完整区块奖励的7/8)。不过,这是一个折衷方案,因为叔块会降低抵御自私挖矿攻击的安全性。此外,另一种类似BDoS的攻击可能会比区块头链更长,从而再次造成严重的竞争损失。
结论
BDoS对中本聪共识区块链而言是一种威胁,因为它允许攻击者使用远低于之前攻击的算力执行拒绝服务攻击。我们已经展示了攻击者如何扭曲激励机制,并引导追求利润的矿工停止挖矿活动。我们提出的缓解措施很容易实施(不需要网络分叉),但仅会影响BDoS攻击的特定类型。如果没有更有力的缓解措施,中本聪共识区块链的活跃性,就取决于矿工在收入损失的情况下是否愿意遵守协议,也就是要有利他主义。