比特币漏洞:在国家网络掌控之中

发布:2018-04-25 10:54:13来源:chen阅读:69

  比特币存在漏洞,这句话对许多炒币者来说是难以理解的。货币怎么会存在漏洞呢?其实很好理解,现实中的纸币如果设计得不够严密,就有被仿制的危险,比特币也一样,虽然或许不会以假币的形式表现出来,但是潜在的危害是绝对有的。

  几乎所有关于加密货币和区块链的讨论都源于中本聪的白皮书:《比特币:一种点对点的电子现金系统》Bitcoin: A Peer-to-Peer Electronic Cash System (Satoshi Nakamoto)。

  2008 年11月1日,一个密码学邮件组收到了 satoshi@vistomail.com 邮箱发出的这份白皮书,2009年1月3日,中本聪的个人电脑里挖出了50个比特币,并在创世区块里留下一句永不可修改的话:

  “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks(2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘)。”

  当时正是英国的财政大臣达林被迫考虑第二次出手纾解银行危机的时刻,这句话是泰晤士报当天的头版文章标题。区块链的时间戳服务和存在证明,让第一个区块链产生的时间和当时正发生的事件被永久性的保留了下来。

  2009年10月5日出现了最早的交易所汇率:1美元=1309.03比特币。十年后比特币的价格已经超过8000美元,按照2017年峰值的最高价20000美元一枚计算,2100万枚比特币的市值达4200亿美元,外加各种山寨币、分叉币,加密货币总规模已经突破万亿美元。

  比特币带给我们最大的冲击是原来哈耶克的创想可行,技术可以超越现有政府的框架实现“非国家化的货币”并开始流通。

  在币值飞涨的疯狂年代,已经很少人再去翻看中本聪的白皮书。仅有九页的白皮书只是一套技术方案,所有的篇幅都是为了探讨一个“币”的实现,超越软件技术本身,我们去细加审视更本质的问题:比特币的“去中心化”是否彻底?是否真正成为了一个权力分散且完全自治的系统?白皮书中是否还有哪些缺陷,是中本聪默认忽略又事实存在的假性前提?

  算力垄断≠51%攻击

  目前对比特币的信仰建立在全网51%算力难以企及上,然而最近人们越来越多开始担忧,掌握大规模ASIC矿机的矿场早已垄断了51%算力。

  《麻省理工科技评论》在2018年1月18日发布的最新研究表明,比特币和以太坊都属于开放区块链系统,即原则上任何人都可以成为矿工,但因为这样的架构特性,自然形成了相应的组织集中挖矿资源。

  基于每周一次的统计,排名前四名的比特币挖掘活动就占整个系统挖掘活动的 53%;而以太坊挖掘活动的中心化程度甚至更加稳固,前 3 大矿机占整体系统每周平均挖掘活动高达 61%。算力垄断是否已经动摇了比特币“去中心化”的特性?

  答案是否定的。51%攻击不会来自比特币生态内。

  这是因为矿场巨头们虽然集中控制了算力,但他们按照游戏规则,付出了大量硬件投资和电费消耗。如果发动51%攻击,整个系统的价值就会崩溃,那么攻击获得的比特币将没有任何意义。

  51%攻击必然来自于体系外。

  去中心化=大多数人正义

  [白皮书摘要]:

  本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。虽然数字签名(Digital signatures)部分解决了这个问题,但是如果仍然需要第三方的支持才能防止双重支付(double-spending)的话,那么这种系统也就失去了存在的价值。

  我们在此提出一种解决方案,使现金系统在点对点的环境下运行,并防止双重支付问题。该网络通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,除非重新完成全部的工作量证明,否者已经形成的交易记录将不可更改。

  最长的链条不仅将作为被观察到的事件序列(sequence)的证明,而且被看做是包含CPU最大计算工作量的链。只要绝大多数的CPU计算能力都没有打算合作起来对全网进行攻击,那么诚实的节点将会生成最长的、超过攻击者的链条。这个系统本身需要的基础设施非常少。

  信息尽最大努力在全网传播即可,节点(nodes)可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。

  细读比特币白皮书,你会发现中本聪的“去中心化”背后的潜台词是“大多数人正义”,共识机制是比特币的核心理念。

  用密码原理和工作量证明(Pow)代替中心化权威信用。而产生一条新的交易记录时永远有先后顺序,即便是双花也总有先后顺序,同一用户不可能同时创造两笔交易。比特币首先引入了基于时间戳的随机散列,让其形成前后相关的序列,比特币的交易记录就是一个时间序列的链条。这就是为什么称之为区块链的原因。

  要避免双花,我们只需要证明其中一条链有效即可,并且将其记录到交易链条上,其他的交易就是无效的了。要证明其中一条是有效又不允许中心化从存在,只有一个办法:发动所有人参与这项活动,进行“多数人的正义”。

  PoW共识算法正是为了解决谁是大多数的问题,“大多数”的决定表达为最长的链。新区块进行节点广播,一旦有节点收到了这个区块的广播,会按照“当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性”的规则进行验证。

  验证通过后,这个节点就不会再接受别的节点的同样区块了。同时这个节点会终止自己正在进行的包含同样交易的区块计算,也就说不会在进行无用功了,节点在这个区块基础上启动新的交易区块计算,如此往复,形成链条。

  由于网络延迟,如果同时有几个节点互相收到交易区块,记录同样的链条(分叉),该僵局的打破要等到下一个工作量证明发现。通过一段时间运行,总有一条区块链时序最长,作为最终被认可的链条。比特币区块链就是在不停的分叉、抛弃、又分叉、又合并的过程。

  共识机制替代中介信任,那么我们探讨一下极端情况下可能会出现什么问题?

  2018年某一天下午15:30,中国的海底光纤突然出现故障,国际出口被阻断。整个比特币网络仍旧正常运转:国内的矿池、矿场币照样挖;国外的矿场、交易所继续正常挖币和交易。

  只是不知不觉间,中国的比特币网络和国际比特币网络被撕裂为两个子网。

  在故障期间,中国境内的算力形成一个链,境外的算力形成另外一条链。按照共识机制,就看哪条链的长度更长,而长度较短的另一链会被淘汰,即这条被淘汰的支链上产生的所有交易需要重新核算,同时记账奖励将被作废。

  17点40,故障后2个小时,光纤故障排除,国际出口复通。

  由于中国国内的算力占比高达70%,国外链毫无意外会被淘汰,在故障发生的两个多小时,境外矿场的算力成果被销毁了,海外所有的比特币交易面临重新核算,整个比特币上的商业活动被瘫痪。

  大规模通讯中断会将比特币网络撕裂为算力悬殊的两个分支,那么最优的策略是故障发生那刻起,整个比特币网络立即停摆,直到故障修复。否则如果保持隔离状态继续运行,复通合并时就会出现更棘手的瘫痪。

  比特币对此也有一些防御措施,为防止支链的干扰造成损失,比特币一笔交易至少需要6个区块的确认,一个区块时间是10分钟,6个区块就是一小时。假如故障导致的网络隔断超过一小时,就会给交易带来冲击,隔断时间越长冲击越大。

  人们对比特币容灾能力的讨论,更多地关注于分布式的多节点存储备份,忽略了共识机制本身造成的隔离和吞没效应。

  这样的想法并非是不可能的,就在 2018年3 月30日,非洲国家毛里塔尼亚由于海底电缆被切断,造成全国范围内彻底断网时间长达 2 天,该起事件还同时影响数个周边国家,断网噩梦首次在现实中上演,说明全球范围内的网络基础设施并非人们想象的安全。

  实际上,全球大约97%以上的网络数据均是通过海底电缆传输,但各国出于军事目的而进行的海底电缆附近活动并不在少数。2013年,有3名潜水员在埃及被捕,他们被指控为涉嫌切断海底电缆。

  而在军事战略家的理论中,全面切断海底电缆,影响该国军事通信能力,对敌方造成经济损失和瘫痪性灾难,也不失为一种重要的备选打击手段。

  并且,能让比特币陷入瘫痪的可能还不止拔网线这一种。

  下面我们来发散一些可以影响比特币网络的可能:

  大规模的黑客攻击行动,控制主干网络设备的路由策略,发动BGP攻击。

  网络设备商的后门权限。针对核心路由器0day漏洞的蠕虫病毒在传播过程中,有意或无意地封闭了国际出口。

  电信运营商的国际出口通讯故障。

  国家防火墙的限制和阻断。

  以上场景中,发动者都可以是体系外的成员,并且不需要耗费大量硬件和电力资源投入,只需要控制网络层就可以轻松实现。这就暴露出比特币和所有加密货币最致命的缺陷:网络层天然高度中心化。

  被忽略的默认前提:信道安全

  区块链的底层是P2P网络通信技术,区块链本质上是一个基于P2P的价值传输协议。

  比特币采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平(flat)”的拓扑结构相互连通。在P2P网络中不存在任何服务端(server)、中央化的服务、以及层级结构。

  P2P网络的节点之间交互运作、协同处理:每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。

  早期的国际互联网就是P2P网络架构的一个典型用例:IP网络中的各个节点完全平等。当今的互联网架构具有分层架构,但是IP协议仍然保留了扁平拓扑的结构。在比特币之外,规模最大也最成功的P2P技术应用是在文件分享领域:Napster是该领域的先锋,BitTorrent是其架构的最新演变。

  “比特币网络”是按照比特币P2P协议运行的一系列节点的集合。除了比特币P2P协议之外,比特币网络中也包含其他协议。例如Stratum协议就被应用于挖矿、以及轻量级或移动端比特币钱包之中。网关(gateway)路由服务器提供这些协议,使用比特币P2P协议接入比特币网络,并把网络拓展到运行其他协议的各个节点。

  例如,Stratum服务器通过Stratum协议将所有的Stratum挖矿节点连接至比特币主网络、并将Stratum协议桥接(bridge)至比特币P2P协议之上。我们使用“扩展比特币网络(extended bitcoin network)”指代所有包含比特币P2P协议、矿池挖矿协议、Stratum协议以及其他连接比特币系统组件相关协议的整体网络结构。

  运行比特币P2P协议的比特币主网络由大约7000-10000个运行着不同版本比特币核心客户端(Bitcoin Core)的监听节点、以及几百个运行着各类比特币P2P协议的应用(例如BitcoinJ、Libbitcoin、btcd等)的节点组成。比特币P2P网络中的一小部分节点也是挖矿节点,它们竞争挖矿、验证交易、并创建新的区块。

  比特节点通常采用TCP协议、使用8333端口(该端口号通常是比特币所使用的,除8333端口外也可以指定使用其他端口)与已知的对等节点建立连接。

  P2P网络只是为所有节点提供了信息交换的方式,做事的还是共识算法和加密算法。但接收方必须信任,数据区块的传送过程中没有被任何中间方改变破坏。这实际上需要一个“信道安全”的前提保证(这是中本聪没有明确提出,又默认必须的条件):

  我们信任区块链软件,相信它在运行中不受破坏,而传输的是非伪造的数据。

  我们信任运行区块链软件的运行系统,它在运行中不受破坏,而传输的是非伪造的数据;

  我们信任为系统提供网络的中央处理机,相信它不受破坏,而传输的是非伪造的数据。

  这种信任,基于“网络中立化”而产生。然而,互联网的传输和承载网建设,属于高度资本性投资。因此,所有的互联网基础建设,均来自通讯企业高额投资,而互联网服务,均由各大ISP及其分销商提供。

  这便带来了一个相对矛盾的问题:“去中心化”的分布式系统,承载于中心化的互联网服务之上,但却并未被广泛意识到,这种天然的高度中心化的底层传输网络,对“去中心化”的互联网产品有着轻而易举的打击实力和控制能力。

  从比特币的协议细节便可看出,其对传输层的攻击并未充分防范。比特币的传输协议报头都是明文,且规律恒定,其报文开头4个字节就是0xF9BEB4D9。相信中本聪在设计协议时,将大部分精力都集中在交易过程的密码学设计上。因为对区块链而言,传输数据是否加密,并不影响交易本身的有效性:中间人即使窃取了报文,亦无法让篡改后的交易数据被其他节点接纳。

  但这种高度自信、过分依赖于信道安全性的协议,在网络底层发动的攻击中,便显得格外脆弱。愈合攻击便是一种足以瓦解比特币信仰的攻击手段。

  愈合攻击Merge attack

  愈合攻击,简而言之,是先通过“撕裂”,将区块链网络隔离成能超过“共识阈值”(比如POW的51%)的两个独立链条,然后间隔一定时间(超过交易确认时间)后,让两个链条“愈合”,利用合并对冲来强制抛弃其中一条已有大量交易的链条。

  愈合攻击实际上是分区攻击(Partition attack)+延迟攻击(Delay attack)的连续组合攻击手段,其破坏力远超DDos攻击和IP封堵。

  针对节点、矿工的DDos、封堵ip地址等攻击方式,其影响力是短暂的。

  无论对任何IP地址发动DDos攻击,被攻击者都是有感知的,因为节点和矿工将立即意识到,自己无法和任何人通信。被攻击者很快可以切换IP的方式应对。攻击对整个区块链网络造成的破坏并不明显,因为节点在切换IP后,仍得以与其他节点进行通信,确保了交易确认,不会导致区块链网络带来毁灭性影响。

  愈合攻击直接撕裂网络,形成两个大局域网。

  两个网内的节点均可以相互通信,并无断网感知,也就无从采取防范措施。它利用网络层,在愈合的一刻使“共识机制”崩溃:假如节点全部遵守“Code is Law”,则必然出现分链被吞没;不遵守代码约定,则需人为分叉,进而颠覆信仰。更致命的是,愈合攻击可以高效率地反复进行,分治对冲,比特币网络就就会瘫痪。

  愈合攻击并不仅针对比特币网络有效,对于以太坊等加密数字货币,同样有着威胁,尽管以太坊在通讯协议上进行了一定程度的加密,但这仅仅是为了保护智能合约的安全,并不是以消除通讯协议的识别特征为目标的加密。

  只要根据其网络通讯中长链接、冗余心跳机制等数据和行为特性,攻击者仍然可以精准打击,通过隔离网络,发动愈合攻击。

  因此,无论是哪种数字货币,只要没有在通讯底层从数据和行为上抹去特征,这种打击就仍然有效。近年来广受炒作的山寨币,包括莱特币、门罗币、比特币现金、量子链等则更不能幸免。

  进一步来看,所有的共识算法,包括PoW、PoS、DPoS,都需要保证传输无干扰。因为分布式系统的共识算法本质上都是在信道安全的前提下,解决一致性和正确性问题。而网络信道安全前提一旦不成立,共识算法保障的“一致性”