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