瓦解比特币神话 Blockchain can be Blocked


2009 年 10 月 5 日,世界上最早的虚拟货币交易所汇率出现:1 美元=1309.03 比特币。十年后,一枚比特币的价格大部分时间超过 8000 美元,按照 2017 年峰值最高价 20000 美元一枚计算,2100 万枚比特币全部发行完成之后的市值高达 4200 亿美元,外加各种山寨币和分叉币,加密货币总规模已经突破万亿美元。

在币值剧烈波动上扬的疯狂年代,已经很少人再去翻看中本聪的白皮书,仅有九页的篇幅都是为了探讨一个“币”的实现,然而超越软件技术本身,我们去细加审视更本质的问题:

比特币的“去中心化”是否彻底,是否真正成为了一个权力分散且完全自治的系统?白皮书中还有哪些缺陷,是中本聪默认忽略又事实存在的假性前提。

去中心化=大多数人正义

细读比特币白皮书,你会发现中本聪的“去中心化”背后,潜台词是“大多数人正义”,共识机制是比特币的核心理念。一套去中心化的 P2P 支付系统避免产生“双花”(双重支付double-spending)的方式,是通过以密码学原理为基础的共识机制,代替类似支付宝银行的中心化信用主体。

究其原理,产生一条新的交易记录时有先后顺序,同一用户不可能同时创造两笔交易。比特币通过引入时间戳,将交易记录打包成区块,再前后连接成一个基于时间散列的链条。(这也是为什么称之为区块链的原因)

要避免双花,我们只需要证明其中一条链有效,并将其记录到交易链条上,其他的交易就无效了。中本聪的办法是发动所有人投票,投票证明哪条链有效,进行“多数人的正义”。

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

验证通过后,这个节点就不会再接受其他节点广播的相同区块。同时会终止自己正在进行的包含同样交易的区块计算,在新区块的基础上启动下一个交易区块计算,如此往复,形成链条。

由于网络延迟,可能同时有几个节点互相收到交易区块,记录同样的链条(造成分叉),该僵局的打破要等到下一个工作量证明发现。

通过一段时间运行,总有一条区块链时序最长,作为最终被认可的链条。比特币区块链就是在不停的分叉、抛弃、又分叉、又合并的过程。

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

算力垄断 ≠ 51%攻击

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

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

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

答案是否定的。51%攻击不会来自生态内。矿场巨头们虽然集中控制了算力,但他们按照游戏规则付出了大量硬件投资和电费消耗。如果发动攻击,整个系统的价值就会崩溃,握在手里的比特币迅速贬值甚至归零,最终得不偿失。

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

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

区块链的底层是 P2P 网络通信技术,区块链本质上是一个基于 P2P 的价值传输协议。比特节点通常采用 TCP 协议、使用 8333 端口(该端口号通常是比特币所使用的,除8333端口外也可以指定使用其他端口)与已知的对等节点建立连接。

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

我们信任区块链软件,相信它在运行中不受破坏,而传输的是非伪造的数据。
我们信任运行区块链软件的运行系统,它在运行中不受破坏,而传输的是非伪造的数据;
我们信任为系统提供网络的中央处理机,相信它不受破坏,而传输的是非伪造的数据。
这种信任基于“网络中立化”而产生。然而,互联网的传输和承载网建设,属于高度资本性投资。因此互联网服务均由各大ISP及其分销商提供。这种天然高度中心化的底层传输网络,对“去中心化”的互联网产品有着轻而易举的打击实力。

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

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

愈合攻击 Merge attack :

区块链的核心是共识机制,共识是分布式系统经过网络传输“投票”决策模式,干预和影响分布式系统的承载网络。我们发现在特定场景下恶意地利用共识机制,可以间接影响、左右“共识”的预期结果,造成共识破裂。

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

这是一种现有的分区攻击(Partition attack)+延迟攻击(Delay attack) 连续组合攻击手段,其破坏力远超 DDos 攻击和 IP 封堵。

针对节点、矿工的 DDos、封堵 IP 地址等攻击方式,其影响力是短暂的,被攻击者都有感知的,因此节点和矿工将立即意识到,当自己无法和任何人通信,很快可以切换 IP 的方式应对。攻击对整个区块链网络造成的破坏并不明显。
愈合攻击直接撕裂网络,形成两个大局域网。两个网内的节点均可以相互通信,并无断网感知,也就无从采取防范措施。它利用网络层在愈合的瞬间使“共识机制”崩溃:假如节点全部遵守“Code is Law”,则必然出现分链被吞没;不遵守代码约定,则需人为分叉,进而颠覆信仰。更致命的是,愈合攻击可以高效率地反复进行,分治对冲,比特币网络就就会瘫痪。
愈合攻击并不仅针对比特币网络有效,对于以太坊等加密数字货币同样有着致命威胁,只要不在通讯底层从数据和行为上抹去特征,终难逃一劫。近年来广受炒作的山寨币,包括莱特币、门罗币、比特币现金、量子链等更不能幸免。

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

致命伤: “拜占庭将军问题”&“两军问题”

比特币是分布式系统一次空前的社会实验,也被称为解决”拜占庭将军“问题的成功实例。

拜占庭将军问题是 2013 年图灵奖得主 Leslie Lamport 在 1980 年的论文 The Byzantine Generals Problem 中提出的分布式领域容错问题,这是分布式领域最复杂、最严格的容错模型。这个故事广为流传:

拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,每个军队分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

另一个比“拜占庭将军问题”更基础,更广为人知的是“两军问题”Two Generals’ Problem:

两支军队,分别由两个将军领导,正在准备攻击一个坚固的城市。两支军队都驻扎在城市旁边的两个不同的山谷里。两军之间隔着第三个山谷,两个将军想要通讯的唯一方法就是穿过第三个山谷传送信件。问题是,第三个山谷被城市的守卫敌军占据,并且经此传送的信件可能会被守卫敌军截获。虽然两个将军商量好要同时对城市发起攻击,但是他们没有约定特定的攻击时间。为了保证取胜,他们必须同时发起攻击,否则任何单独发起攻击的军队都有可能全军覆没。

两军问题是在计算机通信领域首个被证明无解的问题,由此也可推论出,信道不可靠条件下的“拜占庭将军问题”也同样无解。两军问题是阐述在一个不可靠的通信链路上,试图通信以达成一致是存在缺陷的和困难的,拜占庭将军问题不去考虑信差是否会被截获或无法传递信息,Lamport 已经证明,在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。

比特币在理论上的缺陷,就是出在网络通讯层的安全上。人们过高的着迷于区块链这种技术在时间戳签名、哈希链等密码学上的贡献,而忽略了其作为分布式系统的网络层安全。事实上这种技术还在早期阶段,尽管十年来比特币曾被上百次的预言死亡而仍健在,但作为科学和技术的本体,是更不应被盲目迷信的。

网络通讯混淆协议BSO

比特币的信仰建立在彻底去中心化的大前提下:整个体系公平、自治,不依赖也不需要现有的中心化机构介入,甚至也无法介入。因此,评价一个加密货币成功的标准必须在于是否彻底去中心化。

中本聪理想化的忽略了网络的中心化现实,任何不彻底的“中心化”残余之处,都可能成为击垮整个比特币的“阿琉克斯之踵”。比特币要实现彻底去中心化,承载价值网络之名,就必须运行于安全的网络上,成为加密到底层通讯协议的全加密货币。

完全安全、透明、中立的网络通讯是不存在的。现实的思路是立足当下技术之可为,从安全和成本制衡的角度,改良和重新设计区块链的 P2P 通讯协议,使工程学所能实现的安全量级大大超过现实可用于监听、拦截、破坏区块链通讯所要付出的成本代价。

以太坊和一些加密货币开始使用加密通讯协议,这是一个好的开始。然而这些协议仍留有很多痕迹。在 2018 年初,移动互联网系统与应用安全国家实验室举办的一场通讯加密数据识别邀请赛中,几乎所有的加密货币通讯数据全被识别了出来。

我们认为需要重新设计一种更优的区块链通讯混淆协议BSO(Blockchain Security Obscure Protocol),协议设计思想是让 P2P 网路在通讯传输时无明显特征,混淆在一般的网络通讯中。增加网络层寻识特征的难度,提高网络层识别、篡改或拦截的成本,从而保护区块链网络通讯的安全性。

分布式网络治理和监控

区块链算力节点在网络上的分布生态是一个未被足够关注的问题,分布式系统的共识离不开信道安全,运行在区块链上的数据,资产,应当如同承载在互联网上的信息一样,被全世界所有国家的政府、网络管理机构、运营商来保护,并承诺安全。

加密货币并不像看上去那样,可以无法无天无人可管,又令管制机构无可奈何。可能不需更多的国家跨国联手,一两个超级大国足以让整个加密货币世界停摆。以网管链,以链治币,区块链的监管将绝不是空话。

从事区块链、加密货币研究的企业、机构,更应该呼吁和推动政府部门尽快出台相关法律法规和监管政策,规范、保护并约束一个良好的生态环境。

另一个维度,区块链是需要运维的。这个观点与追求“维持开放、无需权限和分布式”的理念似乎有点格格不入。但当千百亿资本涌入那些加密货币,专业的攻击者也会盯上这片“无主之地”。在去中心化的理念下,传统的运维手段几乎都不再适用,需要探索原创性的技术资源。

用分布式的监控模式,去监控分布式网络和节点的健康状态,是我们认为可欲可行的。这将是一个类似比特币挖矿一样,宏大而广阔的工程:在不同的国家、运营商,部署足够多的监控节点,来反复检测线路是否通畅,是否被劫持。

以比特币为例,如果可以提高对劫持的预警灵敏度,以至于在不可逆的 6 个区块确认前,及时采取措施,也是一条可以避免愈合攻击的发生的方案。而这样的一套类似“晴雨表”的分布式节点的监控设施,将是区块链必须的基础设施之一。

也许那时,我们才能重新回到对于代码的信仰之上。

-全文完-

分享到