前段时间,在加密货币领域出现了一件重要的攻击事件。以太坊经典(ETC)在1月8号遭遇到了51%算力的双花攻击,根据不同的计算口径,那次攻击造成了数十到上百万美元的损失。这是攻击者首次成功实现针对排名靠前的主流密码货币的51%算力攻击,相对于这些可计算的现实损失,当前加密货币背后所面临的深层次安全问题更加值得关注。
什么是51%算力攻击
目前以比特币(Bitcoin)为代表的大多数密码数字货币采用基于工作量证明(Proof of Work, PoW)的共识协议,参与工作量证明的矿工通过计算产生新的区块使得区块链不断增长。由于区块链是一个无中心的系统,任何人都可以尝试从任何位置产生新的区块。如果攻击者掌握的计算资源比较少,则攻击者生成的新的分叉增长速度就慢于公开的区块链的增长速度,因此不会形成被诚实用户所接受的长分叉。但是如果攻击者掌握了超过诚实用户的计算资源,则攻击者所生成的新的分叉增长速度就会快于公开的区块链的增长速度,他很容易形成一个新的更长的区块链分支取代公开的最长区块链。具体过程参见图1与图2。
图1. 攻击者算力较少 图2. 攻击者算力占优攻击者的计算资源占优,简单的数学描述就是攻击者掌握了超过51%的计算能力,这也是51%算力攻击名称的由来。当攻击者掌握了51%以上的计算资源,他的攻击行为一定能够成功。事实上,当攻击者掌握足够比例的计算资源,例如40%,如果以6个区块作为确认长度,他就能以比较大的概率成功实现分叉的攻击。
一旦成功实施51%算力攻击,区块链就会发生最长链的切换,带来的后果是已经在区块上得到确认的交易数据可能会被擦除。如果这种攻击是有意构造的,则攻击者可以撤回已经在区块上得到确认的高额交易数据,进而使得这部分数字货币可以重新使用。这种攻击也就是我们常说的双花攻击,显然这种攻击行为严重破坏了密码数字货币的安全性和公信力。
这次攻击为什么能成功
与一般的网络安全攻击不同,51%算力攻击是早已为人所知的攻击方法,这次攻击者的整个攻击行为与流程并没有任何的新意。
一般而言,基于PoW的密码货币系统整体算力越强,控制其中51%的算力所需要的成本越高。由于大多数PoW算法具有相似的核心计算结构,算力可以容易地在不同密码货币直接切换,甚至出现了可按照时间方便租赁的算力资源。Crypto51(https://www.crypto51.app/)统计计算了针对不同数字货币进行1小时51%攻击所要花费的成本(不计区块奖励)以及可以从NiceHash借用的算力比例。其中针对ETC进行1小时51%攻击只需要花费5116美元,且可以从NiceHash中租借到80%的算力(该数据持续变化,可以到该网站查看实时数据),可见该攻击发生的可能性是不可以忽略的。
另外一个不容忽略的因素是,PoW算法需要依赖大量的能源驱动挖矿运算。当密码货币市场价值低于挖矿收益时,由于利益的驱动矿机将会关闭停止挖矿。此时会引起全网算力的急剧下降,这将使得51%攻击更加容易实现。这次针对ETC实施的51%攻击正是利用了这个时机。而对于新出现的基于PoW的密码货币而言,由于全网的算力较低,因此攻击成本更低。
ETH遭受51%攻击的可能性要小于ETC,因为ETH与ETC使用相同的挖矿算法,但ETH的全网算力大约是ETC的20倍。虽然如此,Ethereum的创始人Vitalik在此次攻击事件发生之后依然发声说此次事件证明了他准备从PoW转向PoS的决定是正确的。
基于PoW的区块链还安全吗
毫无疑问,在过去的10年中,以比特币为代表的加密数字货币取得了巨大的成功,其安全性也得到了实际运行网络的检验。不仅如此,密码学家从理论上也证明了基于PoW区块链的安全性。人们相信,数学是区块链安全的基石,也就是所谓的In Math We Trust。但是近年来的技术发展和研究表明,基于PoW的区块链也有安全隐患。
1)算力集中问题
事实上,在比特币等密码数字货币系统中,由于超级矿池的存在,人们对算力集中的担忧由来已久。大型的矿池以及利益相关者所组成的矿池联盟可能掌握了接近甚至超过了51%的算力。我们不能说这些大的算力集团会对系统发动51%算力攻击,但是至少他们具备了发起这种攻击的能力。
2)算力黑天鹅隐患
在当前的技术条件下,密码数字货币的算力依赖于硬件运算速度以及能源供应。一个始终存在的隐患是,技术的发展一旦出现了算力资源的跳跃式进步,系统的安全性可能面临重大威胁。如由于快速算法的发明或者芯片工艺的换代,可能出现相对原有资源压倒式的新计算资源,在此情况下系统的安全性将会完全被破坏。
上面的分析表明了,PoW区块链的安全性并不是构建在数学基础之上的,数学仅仅是物理资源和区块链之间的粘合剂。一旦物理资源的安全性假设不成立,区块链系统的安全性均会受到威胁。
从系统层面看,基于PoW的区块链依靠算力竞争来选取区块的生产者也就是记账人。算力对于区块链生态系统本身来说是属于外部资源,也就是说当前链上所存有的价值与其目前矿工持有的算力并无关系。算力的多少就成为了发起攻击的唯一因素,如果采取自私挖矿等策略,可以在没有达到51%算力的情况下对当前公有链进行攻击产生双花。因此,在PoW区块链系统中,外来的攻击者可以通过投资计算资源威胁到数字货币已有的价值体系。由于现有的PoW算法高度同质化,大量的计算资源可以在系统内用户完全不知晓的情况下注入进来,这个过程甚至可以不涉及任何生态系统中已有的任何用户。借用《三体》中的一句话“我消灭你,与你无关。”
我们有没有更好的选择
近年来,越来越多的区块链系统以及分布式共识协议被提了出来。其中一个重要的方向是基于权益的共识(Proof of Stake, PoS)。PoS的提出在最初主要是为了解决PoW存在能源消耗的问题。PoS与PoW的本质目的是相同的,都是为了在区块链网络的参与节点中随机选出一个节点来记账。“随机”看似是一个很简单的词,它意味着公平、不可预测、不受恶意节点控制,但是在一个去中心化的网络中是很难做到的,因为不存在一位上帝来掷骰子。PoW的随机原则是拥有的算力越多越有可能成为记账人,PoS的随机原则是拥有的stake越多越有可能成为记账人,看起来这两者很相似,只是用来选举的“凭证”不同,但是针对两者的设计以及其所面临的攻击却有很大的区别。
PoS依靠stake来选取记账人,参与选举的人所拥有的stake都被记录在区块链上,stake占比也是指持有的stake占区块链上stake总数的比例。对于PoS要想进行51%攻击,需要持有链上51%的stake,而stake的获取只有从已有用户手中购买而无法在系统外投资生产。因此对PoS系统发起51%攻击的成本等于其从市场购买stake的成本。
以ETC为例,目前ETC的发行总量是107,514,088 ETC,若该共识算法是PoS,那对其进行51%攻击需要持有53,747,044 ETC,折合市值约229,542,578美元,而在PoW情况下通过租用算力仅需5000美元左右。其他数字货币针对PoS 51%攻击所需资金与针对PoW进行1小时的51%攻击花费的对比如下表所示(数据来自Crypto51,数据会实时变动,以下数据取于笔者写稿时)。并且在合法链上持有stake越多的人越倾向于维护该链,若将stake转移租用给攻击者,其面临的风险要远远大于租用算力,因此攻击者也难以通过租用获得足够多的stake。所以就51%攻击而言,PoS比PoW更有优势。这也是ETH要演进为PoS共识的重要原因。
(表中数据来自Crypto51,数据会实时变动,以上数据取于笔者写稿时)总而言之,相对于PoW来说,PoS最大的优点有两点,一个是可以避免能源浪费,同时也降低了节点参与共识的成本,另一个是它提高了产生51%攻击的门槛,在当前算力集中的形势下,PoS相对于PoW来说更加安全。但是,就如一些全网算力较小的新兴数字货币一样,以PoS为共识算法的数字货币在初始阶段也易受51%攻击,因为初始时链上stake总量较小,发生51%攻击所需的资金相应也比较少,所以需要在初始启动的时候加强安全防护,提前准备好应对策略。
PoS共识协议的担忧与应对
相比于PoW已经在多个区块链项目中得到了成功的应用,PoS共识协议目前还没有得到大规模的应用,因此不少人对PoS共识协议存在各种担忧。我们在此针对PoS可能存在的攻击与弱点逐一进行分析。
1)PoS是集中化的系统
在PoS算法研究之初,众多的研究者很自然地受到了分布式计算理论与密码学研究的启发。拜占庭容错协议(BFT)是用于在分布式环境中达成共识的经典算法,因此大多数已经提出的PoS共识算法可以看做是BFT的某种变形形式。BFT算法的优点是在理想的网络环境中确认延迟较短,但其又因为较高的通信复杂度限制了参与共识的节点数目,因此在全球范围的公有链中不能直接使用。在EOS(DPoS)、Algorand等系统中,通过选择部分代表实现类拜占庭协议实现共识,因此给人带来了PoS是集中化协议的主观印象。实时上,目前的研究也已提出了类似PoW的竞争性PoS协议,完全不用担心PoS是集中化的系统。
2)PoS新链冷启动不安全
一个观点是,由于PoS系统的共识节点是由Token所确定的,因此PoS系统的控制权属于少量的早期参与者,这些垄断者可能为了获得超额利益而作恶甚至不惜破坏整个系统实现双花等攻击。在实际中这些担心是不存在的,理由如下:
目前区块链的生态发展已经较为成熟,新的区块链主链上线前往往经过了多轮的募资活动,因此即便是创始团队也不可能控制过多的Token份额。并且理性的团队也不会追求对份额的过多控制,只有Token足够分散系统才有安全性。
在PoS系统中,Token的拥有者的权益完全体现在Token的价值中。引起有更大的动力维护系统的安全,因此更加不容易参与恶意行动。而在PoW系统中,攻击者实施攻击获取短期利益后可将算力等硬件投资转移到其他区块链系统中,因此采取恶意行为的可能性更高。
在新区块链的启动阶段,如果采用PoW协议,外部的计算资源可以不受控制的涌入系统中。此时由于全系统总算力不高,攻击者利用较少的资源即可完成攻击,因此PoW区块链的冷启动阶段更加不安全。事实上,除了比特币、以太坊等已经聚集了大量算力的PoW区块链,新产生的区块链均面临此问题。前一阶段BCH分叉带来的算力竞争就体现了新链启动的危险性,为了避免被攻击往往是中心化的矿池来维持早期的安全性,因此集中化程度比PoS更高。
3)PoS财富集中化严重
在前面的讨论中,我们已经分析了在启动阶段PoS区块链往往已经实现了Token的初始化分配。初始得到的Token在后续的区块链生长过程中确实会带来进一步的投资收益,因此有人担心富者越富造成财富集中化。针对此问题,我们分析如下:
在任何经济系统中都会出现财富集中化现象,在PoS系统中并没有更严重。已有的经济学研究表明,即便在最公平的经济系统中也会出现财富集中现象。我们常说的财富二八分配现象正式财富集中现象的体现。PoS系统的初始Token分配比大多数成为巨无霸的上市公司在初始阶段的股权分配更加分散与透明。
只要提供了公平透明的交易环境,财富集中化现象并不会无限放大无需担心。如果Token能够在二级市场自由流通,Token自然会得到一个市场公允的价格估值。如果获得了足够的利益吸引,原始投资者也会抛售获利;如果对系统前景看好,后来的投资者也会理性购买。因此完全不用担心后来者买不到,或财富完全集中化。
实际上,由于参与PoW系统挖矿需要大量的硬件投资与电力投入,零散的参与者从成本上看远远不如大型的矿池,在币价市场波动的时候往往也是规模小的挖矿者首先退出,因此在PoW系统中财富和算力的集中化会更加明显。
4)PoS将会遭受Nothing-at-Stake攻击
Nothing-at-Stake是指在PoS系统中,由于尝试产生一个区块并不会消耗大量的硬件资源,所以攻击者可以不遵守协议而在不同的区块后面都尝试产生新的区块。这给我们一个明确的直觉,PoS系统更容易产生分叉。但是设计良好的PoS系统完全可以抵抗Nothing at Stake攻击。
论文[1]给出了一种全新的PoS协议iChing,此协议是类似PoW的竞争性共识协议。论文对Greedy Attack(基于Nothing-at-Stake的一种攻击策略)进行了理论分析,结果表明攻击者贪婪地尝试在链的任意位置进行扩展确实会让攻击者得利,但是其获利并不是无限大的。其表现在若攻击者与诚实节点持有相同占比的stake,攻击者产生的链的增长速度最多会达到诚实链的e倍,因此PoS所能容忍的恶意stake比例不超过30%。针对这种情况,论文给出了一种应对策略,在鼓励诚实节点适度贪心的策略下,所能容忍的恶意stake比例能达到43%以上。因此Nothing at Stake并不是一种不能克服的攻击行为。
5)PoS将会遭受Long-Range攻击
Long-Range攻击是指攻击者通过长期的时间积累对PoS系统进行攻击的手段,其具体的表现形式可能各有不同。最直接的Long-Range攻击是攻击者搜集或者购买在过去的某个时间点有效的大量stake账户,从而从较早的时间点开始发起分叉。论文[2]中提出了一种属于Long-Range的攻击策略,叫做Stake-Bleeding攻击。在这个攻击中,攻击者通过长时间隐秘的分叉挖矿,积累足够多的奖励token后发起分叉攻击。
论文中对Long-Range的攻击手段做了分类总结,总体而言Long-Range攻击需要较长时间的准备以及运行才能实施。针对这个特点Long-Range可以采用相应的技术手段加以避免或者消除,其中包括设立定期的检测点(check points)。事实上,为了提高区块链的验证速度,检测点技术在PoW区块链中也经常被采用。因此Long-Range攻击对真实的PoS区块链系统并不能产生严重威胁。
下一代区块链应满足的特性
为了支持更多的实际应用落地,区块链除了要满足安全、去中心化的基本特性要求,还要解决吞吐率不高、确认时延长等问题。
吞吐率低主要是由于区块链的传统单链结构以及网络传输延迟导致的,因此近来提出的DAG结构、交易打包方式、交易分片处理方式均是为了提高区块链吞吐率而做的研究。
确认时延长是竞争类区块链共识算法都具有的问题,针对此问题可以通过在上层叠加快速确认协议加以改善。
我们认为下一代区块链必须满足以下特点才能真正支持安全、高效、灵活的应用落地:
基于PoS的共识算法,避免对外部资源的安全性依赖,消除来自系统外的攻击威胁。
坚持去中心化设计,避免将系统共识权利委托给少量节点,否则将倒退为已有的中心化系统。
精巧的数据分布式存储设计,避免交易数据在全网的广播与存储以支持高吞吐率的应用。
叠加高速确认算法,实现对正常交易的快速确认,以支持准实时的应用场景。
Reference
[1] Fan L, Zhou H S. iChing: A Scalable Proof-of-Stake Blockchain in the Open Setting.
[2] Gaži P, Kiayias A, Russell A. Stake-bleeding attacks on proof-of-stake blockchains. 2018 Crypto Valley Conference on Blockchain Technology (CVCBT). IEEE, 2018: 85-92
网友评论