比特幣底層漏洞:大多數(shù)正義與信道安全

比特幣帶給我們最大的沖擊是原來(lái)哈耶克的創(chuàng)想可行,技術(shù)可以超越現(xiàn)有政府的框架實(shí)現(xiàn)“非國(guó)家化的貨幣”并開(kāi)始流通。同時(shí)我們也應(yīng)審視這些更本質(zhì)的問(wèn)題:比特幣的“去中心化”是否徹底?是否真正成為了一個(gè)權(quán)力分散且完全自治的系統(tǒng)?白皮書(shū)中是否還有哪些缺陷,是中本聰默認(rèn)忽略又事實(shí)存在的假性前提?
幾乎所有關(guān)于加密貨幣和區(qū)塊鏈的討論都源于中本聰?shù)陌灼?shū):《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》【原英文名<Bitcoin: A Peer-to-Peer Electronic Cash System >(Satoshi Nakamoto)】。
2008 年11月1日,一個(gè)密碼學(xué)郵件組收到了satoshi@vistomail.com?郵箱發(fā)出的這份白皮書(shū);2009年1月3日,中本聰?shù)膫€(gè)人電腦里挖出了50個(gè)比特幣,并在創(chuàng)世區(qū)塊里留下一句永不可修改的話:
“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks(2009年1月3日,財(cái)政大臣正處于實(shí)施第二輪銀行緊急援助的邊緣)?!?/p>
當(dāng)時(shí)正是英國(guó)的財(cái)政大臣達(dá)林被迫考慮第二次出手紓解銀行危機(jī)的時(shí)刻,這句話是泰晤士報(bào)當(dāng)天的頭版文章標(biāo)題。區(qū)塊鏈的時(shí)間戳服務(wù)和存在證明:讓第一個(gè)區(qū)塊鏈產(chǎn)生的時(shí)間和當(dāng)時(shí)正發(fā)生的事件被永久性的保留了下來(lái)。
2009年10月5日出現(xiàn)了最早的交易所匯率:1美元=1309.03比特幣。十年后比特幣的價(jià)格已經(jīng)超過(guò)8000美元,按照2017年峰值的最高價(jià)20000美元一枚計(jì)算:2100萬(wàn)枚比特幣的市值達(dá)4200億美元,外加各種山寨幣、分叉幣,加密貨幣總規(guī)模已經(jīng)突破萬(wàn)億美元。
比特幣帶給我們最大的沖擊是原來(lái)哈耶克的創(chuàng)想可行,技術(shù)可以超越現(xiàn)有政府的框架實(shí)現(xiàn)“非國(guó)家化的貨幣”并開(kāi)始流通。
在幣值飛漲的瘋狂年代,已經(jīng)很少人再去翻看中本聰?shù)陌灼?shū)。僅有九頁(yè)的白皮書(shū)只是一套技術(shù)方案,所有的篇幅都是為了探討一個(gè)“幣”的實(shí)現(xiàn)。
超越軟件技術(shù)本身,我們?nèi)ゼ?xì)加審視更本質(zhì)的問(wèn)題:比特幣的“去中心化”是否徹底?是否真正成為了一個(gè)權(quán)力分散且完全自治的系統(tǒng)?白皮書(shū)中是否還有哪些缺陷,是中本聰默認(rèn)忽略又事實(shí)存在的假性前提?
一、算力壟斷≠51%攻擊
目前對(duì)比特幣的信仰建立在全網(wǎng)51%算力難以企及上,然而最近人們?cè)絹?lái)越多開(kāi)始擔(dān)憂,掌握大規(guī)模ASIC礦機(jī)的礦場(chǎng)早已壟斷了51%算力。
《麻省理工科技評(píng)論》在2018年1月18日發(fā)布的最新研究表明:比特幣和以太坊都屬于開(kāi)放區(qū)塊鏈系統(tǒng),即原則上任何人都可以成為礦工。但因?yàn)檫@樣的架構(gòu)特性,自然形成了相應(yīng)的組織集中挖礦資源。
基于每周一次的統(tǒng)計(jì),排名前四名的比特幣挖掘活動(dòng)就占整個(gè)系統(tǒng)挖掘活動(dòng)的 53%;而以太坊挖掘活動(dòng)的中心化程度甚至更加穩(wěn)固,前3大礦機(jī)占整體系統(tǒng)每周平均挖掘活動(dòng)高達(dá) 61%。算力壟斷是否已經(jīng)動(dòng)搖了比特幣“去中心化”的特性?
答案是否定的。51%攻擊不會(huì)來(lái)自比特幣生態(tài)內(nèi)。
這是因?yàn)榈V場(chǎng)巨頭們雖然集中控制了算力,但他們按照游戲規(guī)則,付出了大量硬件投資和電費(fèi)消耗。如果發(fā)動(dòng)51%攻擊,整個(gè)系統(tǒng)的價(jià)值就會(huì)崩潰,那么攻擊獲得的比特幣將沒(méi)有任何意義。
51%攻擊必然來(lái)自于體系外。
二、去中心化=大多數(shù)人正義
白皮書(shū)摘要:
本文提出了一種完全通過(guò)點(diǎn)對(duì)點(diǎn)技術(shù)實(shí)現(xiàn)的電子現(xiàn)金系統(tǒng),它使得在線支付能夠直接由一方發(fā)起并支付給另外一方,中間不需要通過(guò)任何的金融機(jī)構(gòu)。
雖然數(shù)字簽名(Digital signatures)部分解決了這個(gè)問(wèn)題,但是如果仍然需要第三方的支持才能防止雙重支付(double-spending)的話,那么這種系統(tǒng)也就失去了存在的價(jià)值。
我們?cè)诖颂岢鲆环N解決方案,使現(xiàn)金系統(tǒng)在點(diǎn)對(duì)點(diǎn)的環(huán)境下運(yùn)行,并防止雙重支付問(wèn)題。該網(wǎng)絡(luò)通過(guò)隨機(jī)散列(hashing)對(duì)全部交易加上時(shí)間戳(timestamps),將它們合并入一個(gè)不斷延伸的基于隨機(jī)散列的工作量證明(proof-of-work)的鏈條作為交易記錄,除非重新完成全部的工作量證明,否者已經(jīng)形成的交易記錄將不可更改。
最長(zhǎng)的鏈條不僅將作為被觀察到的事件序列(sequence)的證明,而且被看做是包含CPU最大計(jì)算工作量的鏈。
只要絕大多數(shù)的CPU計(jì)算能力都沒(méi)有打算合作起來(lái)對(duì)全網(wǎng)進(jìn)行攻擊,那么誠(chéng)實(shí)的節(jié)點(diǎn)將會(huì)生成最長(zhǎng)的、超過(guò)攻擊者的鏈條。這個(gè)系統(tǒng)本身需要的基礎(chǔ)設(shè)施非常少。
信息盡最大努力在全網(wǎng)傳播即可,節(jié)點(diǎn)(nodes)可以隨時(shí)離開(kāi)和重新加入網(wǎng)絡(luò),并將最長(zhǎng)的工作量證明鏈條作為在該節(jié)點(diǎn)離線期間發(fā)生的交易的證明。
細(xì)讀比特幣白皮書(shū),你會(huì)發(fā)現(xiàn)中本聰?shù)摹叭ブ行幕北澈蟮臐撆_(tái)詞是“大多數(shù)人正義”,共識(shí)機(jī)制是比特幣的核心理念。
用密碼原理和工作量證明(Pow)代替中心化權(quán)威信用,而產(chǎn)生一條新的交易記錄時(shí)永遠(yuǎn)有先后順序,即便是雙花也總有先后順序,同一用戶不可能同時(shí)創(chuàng)造兩筆交易。
比特幣首先引入了基于時(shí)間戳的隨機(jī)散列,讓其形成前后相關(guān)的序列,比特幣的交易記錄就是一個(gè)時(shí)間序列的鏈條,這就是為什么稱之為區(qū)塊鏈的原因。
要避免雙花,我們只需要證明其中一條鏈有效即可,并且將其記錄到交易鏈條上,其他的交易就是無(wú)效的了。要證明其中一條是有效又不允許中心化從存在,只有一個(gè)辦法:發(fā)動(dòng)所有人參與這項(xiàng)活動(dòng),進(jìn)行“多數(shù)人的正義”。
PoW共識(shí)算法正是為了解決誰(shuí)是大多數(shù)的問(wèn)題,“大多數(shù)”的決定表達(dá)為最長(zhǎng)的鏈。新區(qū)塊進(jìn)行節(jié)點(diǎn)廣播,一旦有節(jié)點(diǎn)收到了這個(gè)區(qū)塊的廣播,會(huì)按照“當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過(guò)的,其他節(jié)點(diǎn)才認(rèn)同該區(qū)塊的有效性”的規(guī)則進(jìn)行驗(yàn)證。
驗(yàn)證通過(guò)后,這個(gè)節(jié)點(diǎn)就不會(huì)再接受別的節(jié)點(diǎn)的同樣區(qū)塊了。同時(shí)這個(gè)節(jié)點(diǎn)會(huì)終止自己正在進(jìn)行的包含同樣交易的區(qū)塊計(jì)算,也就說(shuō)不會(huì)在進(jìn)行無(wú)用功了,節(jié)點(diǎn)在這個(gè)區(qū)塊基礎(chǔ)上啟動(dòng)新的交易區(qū)塊計(jì)算,如此往復(fù),形成鏈條。
由于網(wǎng)絡(luò)延遲,如果同時(shí)有幾個(gè)節(jié)點(diǎn)互相收到交易區(qū)塊,記錄同樣的鏈條(分叉),該僵局的打破要等到下一個(gè)工作量證明發(fā)現(xiàn)。通過(guò)一段時(shí)間運(yùn)行,總有一條區(qū)塊鏈時(shí)序最長(zhǎng),作為最終被認(rèn)可的鏈條。
比特幣區(qū)塊鏈就是在不停的分叉、拋棄、又分叉、又合并的過(guò)程。
共識(shí)機(jī)制替代中介信任,那么我們探討一下極端情況下可能會(huì)出現(xiàn)什么問(wèn)題?
2018年某一天下午15:30,中國(guó)的海底光纖突然出現(xiàn)故障,國(guó)際出口被阻斷。整個(gè)比特幣網(wǎng)絡(luò)仍舊正常運(yùn)轉(zhuǎn):國(guó)內(nèi)的礦池、礦場(chǎng)幣照樣挖;國(guó)外的礦場(chǎng)、交易所繼續(xù)正常挖幣和交易。
只是不知不覺(jué)間,中國(guó)的比特幣網(wǎng)絡(luò)和國(guó)際比特幣網(wǎng)絡(luò)被撕裂為兩個(gè)子網(wǎng)。
在故障期間,中國(guó)境內(nèi)的算力形成一個(gè)鏈,境外的算力形成另外一條鏈。按照共識(shí)機(jī)制,就看哪條鏈的長(zhǎng)度更長(zhǎng),而長(zhǎng)度較短的另一鏈會(huì)被淘汰,即這條被淘汰的支鏈上產(chǎn)生的所有交易需要重新核算,同時(shí)記賬獎(jiǎng)勵(lì)將被作廢。
17點(diǎn)40,故障后2個(gè)小時(shí),光纖故障排除,國(guó)際出口復(fù)通。
由于中國(guó)國(guó)內(nèi)的算力占比高達(dá)70%,國(guó)外鏈毫無(wú)意外會(huì)被淘汰,在故障發(fā)生的兩個(gè)多小時(shí),境外礦場(chǎng)的算力成果被銷毀了,海外所有的比特幣交易面臨重新核算,整個(gè)比特幣上的商業(yè)活動(dòng)被癱瘓。
大規(guī)模通訊中斷會(huì)將比特幣網(wǎng)絡(luò)撕裂為算力懸殊的兩個(gè)分支,那么最優(yōu)的策略是故障發(fā)生那刻起,整個(gè)比特幣網(wǎng)絡(luò)立即停擺,直到故障修復(fù)。否則如果保持隔離狀態(tài)繼續(xù)運(yùn)行,復(fù)通合并時(shí)就會(huì)出現(xiàn)更棘手的癱瘓。
比特幣對(duì)此也有一些防御措施:為防止支鏈的干擾造成損失,比特幣一筆交易至少需要6個(gè)區(qū)塊的確認(rèn),一個(gè)區(qū)塊時(shí)間是10分鐘,6個(gè)區(qū)塊就是一小時(shí)。假如故障導(dǎo)致的網(wǎng)絡(luò)隔斷超過(guò)一小時(shí),就會(huì)給交易帶來(lái)沖擊,隔斷時(shí)間越長(zhǎng)沖擊越大。
人們對(duì)比特幣容災(zāi)能力的討論,更多地關(guān)注于分布式的多節(jié)點(diǎn)存儲(chǔ)備份,忽略了共識(shí)機(jī)制本身造成的隔離和吞沒(méi)效應(yīng)。
這樣的想法并非是不可能的,就在 2018年3 月30日,非洲國(guó)家毛里塔尼亞由于海底電纜被切斷,造成全國(guó)范圍內(nèi)徹底斷網(wǎng)時(shí)間長(zhǎng)達(dá) 2 天,該起事件還同時(shí)影響數(shù)個(gè)周邊國(guó)家,斷網(wǎng)噩夢(mèng)首次在現(xiàn)實(shí)中上演,說(shuō)明全球范圍內(nèi)的網(wǎng)絡(luò)基礎(chǔ)設(shè)施并非人們想象的安全。
實(shí)際上,全球大約97%以上的網(wǎng)絡(luò)數(shù)據(jù)均是通過(guò)海底電纜傳輸,但各國(guó)出于軍事目的而進(jìn)行的海底電纜附近活動(dòng)并不在少數(shù)。2013年,有3名潛水員在埃及被捕,他們被指控為涉嫌切斷海底電纜。
而在軍事戰(zhàn)略家的理論中,全面切斷海底電纜,影響該國(guó)軍事通信能力,對(duì)敵方造成經(jīng)濟(jì)損失和癱瘓性災(zāi)難,也不失為一種重要的備選打擊手段。
并且,能讓比特幣陷入癱瘓的可能還不止拔網(wǎng)線這一種。
下面我們來(lái)發(fā)散一些可以影響比特幣網(wǎng)絡(luò)的可能:
- 大規(guī)模的黑客攻擊行動(dòng),控制主干網(wǎng)絡(luò)設(shè)備的路由策略,發(fā)動(dòng)BGP攻擊。
- 網(wǎng)絡(luò)設(shè)備商的后門權(quán)限。針對(duì)核心路由器0day漏洞的蠕蟲(chóng)病毒在傳播過(guò)程中,有意或無(wú)意地封閉了國(guó)際出口。
- 電信運(yùn)營(yíng)商的國(guó)際出口通訊故障。
- 國(guó)家防火墻的限制和阻斷。
以上場(chǎng)景中,發(fā)動(dòng)者都可以是體系外的成員,并且不需要耗費(fèi)大量硬件和電力資源投入,只需要控制網(wǎng)絡(luò)層就可以輕松實(shí)現(xiàn)。
這就暴露出比特幣和所有加密貨幣最致命的缺陷:網(wǎng)絡(luò)層天然高度中心化。
三、被忽略的默認(rèn)前提:信道安全
區(qū)塊鏈的底層是P2P網(wǎng)絡(luò)通信技術(shù),區(qū)塊鏈本質(zhì)上是一個(gè)基于P2P的價(jià)值傳輸協(xié)議。
比特幣采用了基于國(guó)際互聯(lián)網(wǎng)(Internet)的P2P(peer-to-peer)網(wǎng)絡(luò)架構(gòu)。P2P是指位于同一網(wǎng)絡(luò)中的每臺(tái)計(jì)算機(jī)都彼此對(duì)等,各個(gè)節(jié)點(diǎn)共同提供網(wǎng)絡(luò)服務(wù),不存在任何“特殊”節(jié)點(diǎn)。每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)以“扁平(flat)”的拓?fù)浣Y(jié)構(gòu)相互連通。
在P2P網(wǎng)絡(luò)中不存在任何服務(wù)端(server)、中央化的服務(wù),以及層級(jí)結(jié)構(gòu)。
P2P網(wǎng)絡(luò)的節(jié)點(diǎn)之間交互運(yùn)作、協(xié)同處理:每個(gè)節(jié)點(diǎn)在對(duì)外提供服務(wù)的同時(shí)也使用網(wǎng)絡(luò)中其他節(jié)點(diǎn)所提供的服務(wù)。
早期的國(guó)際互聯(lián)網(wǎng)就是P2P網(wǎng)絡(luò)架構(gòu)的一個(gè)典型用例:IP網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)完全平等。當(dāng)今的互聯(lián)網(wǎng)架構(gòu)具有分層架構(gòu),但是IP協(xié)議仍然保留了扁平拓?fù)涞慕Y(jié)構(gòu)。
在比特幣之外,規(guī)模最大也最成功的P2P技術(shù)應(yīng)用是在文件分享領(lǐng)域:Napster是該領(lǐng)域的先鋒,BitTorrent是其架構(gòu)的最新演變。
“比特幣網(wǎng)絡(luò)”是按照比特幣P2P協(xié)議運(yùn)行的一系列節(jié)點(diǎn)的集合。除了比特幣P2P協(xié)議之外,比特幣網(wǎng)絡(luò)中也包含其他協(xié)議。
例如,Stratum協(xié)議就被應(yīng)用于挖礦、以及輕量級(jí)或移動(dòng)端比特幣錢包之中。網(wǎng)關(guān)(gateway)路由服務(wù)器提供這些協(xié)議,使用比特幣P2P協(xié)議接入比特幣網(wǎng)絡(luò),并把網(wǎng)絡(luò)拓展到運(yùn)行其他協(xié)議的各個(gè)節(jié)點(diǎn)。
例如,Stratum服務(wù)器通過(guò)Stratum協(xié)議將所有的Stratum挖礦節(jié)點(diǎn)連接至比特幣主網(wǎng)絡(luò)、并將Stratum協(xié)議橋接(bridge)至比特幣P2P協(xié)議之上。
我們使用“擴(kuò)展比特幣網(wǎng)絡(luò)(extended bitcoin network)”指代所有包含比特幣P2P協(xié)議、礦池挖礦協(xié)議、Stratum協(xié)議以及其他連接比特幣系統(tǒng)組件相關(guān)協(xié)議的整體網(wǎng)絡(luò)結(jié)構(gòu)。
運(yùn)行比特幣P2P協(xié)議的比特幣主網(wǎng)絡(luò)由大約7000-10000個(gè)運(yùn)行著不同版本比特幣核心客戶端(Bitcoin Core)的監(jiān)聽(tīng)節(jié)點(diǎn)、以及幾百個(gè)運(yùn)行著各類比特幣P2P協(xié)議的應(yīng)用(例如BitcoinJ、Libbitcoin、btcd等)的節(jié)點(diǎn)組成。
比特幣P2P網(wǎng)絡(luò)中的一小部分節(jié)點(diǎn)也是挖礦節(jié)點(diǎn),它們競(jìng)爭(zhēng)挖礦、驗(yàn)證交易、并創(chuàng)建新的區(qū)塊。
比特節(jié)點(diǎn)通常采用TCP協(xié)議、使用8333端口(該端口號(hào)通常是比特幣所使用的,除8333端口外也可以指定使用其他端口)與已知的對(duì)等節(jié)點(diǎn)建立連接。
P2P網(wǎng)絡(luò)只是為所有節(jié)點(diǎn)提供了信息交換的方式,做事的還是共識(shí)算法和加密算法。但接收方必須信任,數(shù)據(jù)區(qū)塊的傳送過(guò)程中沒(méi)有被任何中間方改變破壞。這實(shí)際上需要一個(gè)“信道安全”的前提保證(這是中本聰沒(méi)有明確提出,又默認(rèn)必須的條件):
- 我們信任區(qū)塊鏈軟件,相信它在運(yùn)行中不受破壞,而傳輸?shù)氖欠莻卧斓臄?shù)據(jù)。
- 我們信任運(yùn)行區(qū)塊鏈軟件的運(yùn)行系統(tǒng),它在運(yùn)行中不受破壞,而傳輸?shù)氖欠莻卧斓臄?shù)據(jù);
- 我們信任為系統(tǒng)提供網(wǎng)絡(luò)的中央處理機(jī),相信它不受破壞,而傳輸?shù)氖欠莻卧斓臄?shù)據(jù)。
這種信任,基于“網(wǎng)絡(luò)中立化”而產(chǎn)生。然而,互聯(lián)網(wǎng)的傳輸和承載網(wǎng)建設(shè),屬于高度資本性投資。
因此,所有的互聯(lián)網(wǎng)基礎(chǔ)建設(shè),均來(lái)自通訊企業(yè)高額投資,而互聯(lián)網(wǎng)服務(wù),均由各大ISP及其分銷商提供。
這便帶來(lái)了一個(gè)相對(duì)矛盾的問(wèn)題:“去中心化”的分布式系統(tǒng),承載于中心化的互聯(lián)網(wǎng)服務(wù)之上,但卻并未被廣泛意識(shí)到,這種天然的高度中心化的底層傳輸網(wǎng)絡(luò),對(duì)“去中心化”的互聯(lián)網(wǎng)產(chǎn)品有著輕而易舉的打擊實(shí)力和控制能力。
從比特幣的協(xié)議細(xì)節(jié)便可看出:其對(duì)傳輸層的攻擊并未充分防范。
比特幣的傳輸協(xié)議報(bào)頭都是明文,且規(guī)律恒定,其報(bào)文開(kāi)頭4個(gè)字節(jié)就是0xF9BEB4D9。相信中本聰在設(shè)計(jì)協(xié)議時(shí),將大部分精力都集中在交易過(guò)程的密碼學(xué)設(shè)計(jì)上。
因?yàn)閷?duì)區(qū)塊鏈而言,傳輸數(shù)據(jù)是否加密,并不影響交易本身的有效性:中間人即使竊取了報(bào)文,亦無(wú)法讓篡改后的交易數(shù)據(jù)被其他節(jié)點(diǎn)接納。
但這種高度自信、過(guò)分依賴于信道安全性的協(xié)議,在網(wǎng)絡(luò)底層發(fā)動(dòng)的攻擊中,便顯得格外脆弱。愈合攻擊便是一種足以瓦解比特幣信仰的攻擊手段。
1.愈合攻擊Merge attack
愈合攻擊,簡(jiǎn)而言之,是先通過(guò)“撕裂”,將區(qū)塊鏈網(wǎng)絡(luò)隔離成能超過(guò)“共識(shí)閾值”(比如POW的51%)的兩個(gè)獨(dú)立鏈條,然后間隔一定時(shí)間(超過(guò)交易確認(rèn)時(shí)間)后,讓兩個(gè)鏈條“愈合”,利用合并對(duì)沖來(lái)強(qiáng)制拋棄其中一條已有大量交易的鏈條。
愈合攻擊實(shí)際上是分區(qū)攻擊(Partition attack)+延遲攻擊(Delay attack)的連續(xù)組合攻擊手段,其破壞力遠(yuǎn)超DDos攻擊和IP封堵。
針對(duì)節(jié)點(diǎn)、礦工的DDos、封堵ip地址等攻擊方式,其影響力是短暫的。
無(wú)論對(duì)任何IP地址發(fā)動(dòng)DDos攻擊,被攻擊者都是有感知的,因?yàn)楣?jié)點(diǎn)和礦工將立即意識(shí)到,自己無(wú)法和任何人通信,被攻擊者很快可以切換IP的方式應(yīng)對(duì)。
攻擊對(duì)整個(gè)區(qū)塊鏈網(wǎng)絡(luò)造成的破壞并不明顯,因?yàn)楣?jié)點(diǎn)在切換IP后,仍得以與其他節(jié)點(diǎn)進(jìn)行通信,確保了交易確認(rèn),不會(huì)導(dǎo)致區(qū)塊鏈網(wǎng)絡(luò)帶來(lái)毀滅性影響。
愈合攻擊直接撕裂網(wǎng)絡(luò),形成兩個(gè)大局域網(wǎng)。
兩個(gè)網(wǎng)內(nèi)的節(jié)點(diǎn)均可以相互通信,并無(wú)斷網(wǎng)感知,也就無(wú)從采取防范措施。它利用網(wǎng)絡(luò)層,在愈合的一刻使“共識(shí)機(jī)制”崩潰:假如節(jié)點(diǎn)全部遵守“Code is Law”,則必然出現(xiàn)分鏈被吞沒(méi);不遵守代碼約定,則需人為分叉,進(jìn)而顛覆信仰。
更致命的是,愈合攻擊可以高效率地反復(fù)進(jìn)行,分治對(duì)沖,比特幣網(wǎng)絡(luò)就就會(huì)癱瘓。
愈合攻擊并不僅針對(duì)比特幣網(wǎng)絡(luò)有效,對(duì)于以太坊等加密數(shù)字貨幣,同樣有著威脅,盡管以太坊在通訊協(xié)議上進(jìn)行了一定程度的加密,但這僅僅是為了保護(hù)智能合約的安全,并不是以消除通訊協(xié)議的識(shí)別特征為目標(biāo)的加密。
只要根據(jù)其網(wǎng)絡(luò)通訊中長(zhǎng)鏈接、冗余心跳機(jī)制等數(shù)據(jù)和行為特性,攻擊者仍然可以精準(zhǔn)打擊,通過(guò)隔離網(wǎng)絡(luò),發(fā)動(dòng)愈合攻擊。
因此,無(wú)論是哪種數(shù)字貨幣,只要沒(méi)有在通訊底層從數(shù)據(jù)和行為上抹去特征,這種打擊就仍然有效。近年來(lái)廣受炒作的山寨幣,包括萊特幣、門羅幣、比特幣現(xiàn)金、量子鏈等則更不能幸免。
進(jìn)一步來(lái)看:所有的共識(shí)算法,包括PoW、PoS、DPoS,都需要保證傳輸無(wú)干擾。因?yàn)榉植际较到y(tǒng)的共識(shí)算法本質(zhì)上都是在信道安全的前提下,解決一致性和正確性問(wèn)題。
而網(wǎng)絡(luò)信道安全前提一旦不成立,共識(shí)算法保障的“一致性”和“正確性”將瓦解。
2.BGP劫持
愈合攻擊是瓦解區(qū)塊鏈的技術(shù)手段,實(shí)施愈合攻擊,最常用的是BGP劫持。
什么是BGP劫持呢?
正常的礦機(jī)與礦池的通訊應(yīng)該包括這幾個(gè)步驟:
礦機(jī) -> 網(wǎng)絡(luò)運(yùn)營(yíng)商A -> 網(wǎng)絡(luò)運(yùn)營(yíng)商B -> 網(wǎng)絡(luò)運(yùn)營(yíng)商… -> 礦池
由于比特幣礦池的跨地域性,在礦機(jī)和礦池之間的網(wǎng)絡(luò)運(yùn)營(yíng)商(ISP)可能有數(shù)個(gè)作為跳轉(zhuǎn)。這是極不安全的,任何一個(gè)環(huán)節(jié)的都有可能被黑客通過(guò)邊界網(wǎng)關(guān)協(xié)議(BGP)劫持。
邊界網(wǎng)關(guān)協(xié)議(BGP)是因特網(wǎng)的關(guān)鍵組成部分,用于確定路由路徑。BGP劫持,即利用BGP操縱因特網(wǎng)路由路徑。無(wú)論是網(wǎng)絡(luò)犯罪分子還是國(guó)家防火墻,都可以利用這種技術(shù)來(lái)達(dá)到自己的目的,如誤導(dǎo)和攔截流量等。
BGP是一種網(wǎng)絡(luò)協(xié)議,用于交換因特網(wǎng)上各網(wǎng)絡(luò)之間的路由信息。一般情況下,它用來(lái)確定在獨(dú)立運(yùn)營(yíng)的網(wǎng)絡(luò)或自治系統(tǒng)之間路由數(shù)據(jù)的最佳路徑。 因此,它也常常用來(lái)尋找從ISP到ISP路由數(shù)據(jù)的路徑。
需要注意的是:BGP不是用來(lái)傳輸數(shù)據(jù)的,而是用來(lái)確定最高效的路由路徑的。 實(shí)際的傳輸工作,是由其他協(xié)議來(lái)完成的,例如TCP/IP協(xié)議棧。
現(xiàn)在,假設(shè)我需要發(fā)送數(shù)據(jù)到世界的另一端。最終,這些數(shù)據(jù)肯定會(huì)離開(kāi)我的ISP所控制的網(wǎng)絡(luò),因此,必然就會(huì)用到BGP。當(dāng)然,路由路徑是無(wú)法通過(guò)單獨(dú)一個(gè)自治系統(tǒng)來(lái)決定的,這需要其他的BGP對(duì)等端或鄰居的參與才行。
這些對(duì)等端是些已經(jīng)通過(guò)手工配置為共享路由信息的自治系統(tǒng)。
當(dāng)自治系統(tǒng)學(xué)習(xí)新路由的時(shí)候,這些信息就會(huì)進(jìn)一步傳播到其他對(duì)等端。通過(guò)梳理從BGP對(duì)等端收集來(lái)的路由信息,處理這些數(shù)據(jù)的路由器就能夠找出最佳路徑。這些最佳路徑是參考多種因素綜合得出的,包括距離以及路由器管理員實(shí)現(xiàn)的配置設(shè)置等。
由于傳播路由的對(duì)等端是手工配置的,因此有必要入侵一臺(tái)邊界路由器來(lái)廣播外部BGP通告,從而實(shí)現(xiàn)因特網(wǎng)級(jí)別的BGP劫持。盡管這做起來(lái)非常困難,但是BGP劫持攻擊確實(shí)已經(jīng)出現(xiàn)在現(xiàn)實(shí)世界之中了。
因?yàn)锽GP決定了數(shù)據(jù)從源端到目的地端的傳輸方式,所以,必須要關(guān)注該協(xié)議的安全性。通過(guò)操縱BGP,攻擊者可以按照自己的意愿來(lái)修改數(shù)據(jù)的傳輸路線,從而達(dá)到攔截或者修改數(shù)據(jù)的目的。為了劫持因特網(wǎng)級(jí)別的BGP,需要配置一個(gè)邊界路由器,讓它發(fā)送含有未分配給它的前綴的通告。
如果惡意通告比合法通告還要具體,或者聲稱提供更短的路徑,那么流量就可能被定向到攻擊者那里去。攻擊者經(jīng)常利用棄用的前綴來(lái)進(jìn)行劫持,以免引起合法屬主的關(guān)注。
通過(guò)廣播含有虛假前綴的通告,受攻擊的路由器可能會(huì)污染其他路由器的路由信息庫(kù)。在污染了其他路由器之后,惡意路由信息可能會(huì)進(jìn)一步傳播到別的路由器中,或自治系統(tǒng),甚至主干因特網(wǎng)上。
最近幾年來(lái),已經(jīng)有多起B(yǎng)GP劫持攻擊被記錄在案。
比較著名的就是13年巴基斯坦屏蔽Youtube的事件。由于巴基斯坦電信部門錯(cuò)誤地把屏蔽youtube加到了BGP上,導(dǎo)致該協(xié)議上的所有AS都被屏蔽了。換句話說(shuō),全世界其他所有國(guó)家的人都無(wú)法上Youtube了,因?yàn)閿?shù)據(jù)包都涌向巴基斯坦了,而巴基斯坦恰恰屏蔽了Youtube。
在Renesys記載的案例中,2013年BGP劫持技術(shù)曾經(jīng)用來(lái)重新路由數(shù)據(jù),使其在到達(dá)目的地之前,先經(jīng)過(guò)任意指定的國(guó)家。其中,一個(gè)攻擊案例中的數(shù)據(jù)流量,在到達(dá)起目的地之前,竟然先繞道墨西哥至美國(guó),然后轉(zhuǎn)至白俄羅斯。通過(guò)散布虛假BGP廣播,白俄羅斯的ISP成功將非法路由傳播到了因特網(wǎng)上。
在這個(gè)案例中,很可能是一種公司或國(guó)家間諜行為。不過(guò),有跡象說(shuō)明,即使非國(guó)家級(jí)別的對(duì)手,照樣也能夠發(fā)動(dòng)BGP劫持攻擊。
2014年Dell Secure Works分析的一個(gè)案例中,BGP劫持被用來(lái)攔截比特幣礦機(jī)到采礦池服務(wù)器的鏈接。通過(guò)將流量重路由至攻擊者控制的礦池,攻擊者就能夠竊取受害者的比特幣。這次攻擊在兩月內(nèi)收集到了價(jià)值$83,000的比特幣。
在2015年7月,監(jiān)視軟件供應(yīng)商Hacking Team被黑,泄露的內(nèi)部郵件表明:在2013年,意大利政府曾經(jīng)與Hacking Team有關(guān)合作。同時(shí),意大利的一家ISP也購(gòu)買過(guò)該公司的BGP劫持服務(wù)。
由于托管Hacking Team指令控制服務(wù)器的IP被阻斷之后,該服務(wù)器已經(jīng)離線,因此該惡意軟件與指令控制服務(wù)器的連接也一直保持不可達(dá)狀態(tài)。通過(guò)公布托管該指令控制服務(wù)器的虛假IP前綴,Hacking Team竟然又恢復(fù)了對(duì)受害者機(jī)器的訪問(wèn)能力。
這是第一個(gè)記載在冊(cè)的西方國(guó)家政府使用BGP劫持的案例。
四、“拜占庭將軍問(wèn)題”&“兩軍問(wèn)題”
比特幣是分布式系統(tǒng)一次空前的社會(huì)實(shí)驗(yàn),也被稱為解決“拜占庭將軍”問(wèn)題的成功實(shí)例。在此強(qiáng)烈建議大家百度或者維基一下“拜占庭將軍”和“兩軍問(wèn)題”這兩個(gè)理論的原型。
拜占庭將軍問(wèn)題是2013年圖靈獎(jiǎng)得主Leslie Lamport在1980年的論文The Byzantine Generals Problem中提出的分布式領(lǐng)域的容錯(cuò)問(wèn)題,這是分布式領(lǐng)域最復(fù)雜、最嚴(yán)格的容錯(cuò)模型。
Lamport是分布式系統(tǒng)的祖師爺級(jí)的大師,這個(gè)故事也廣為流傳:
拜占庭位于如今的土耳其的伊斯坦布爾,是東羅馬帝國(guó)的首都。由于當(dāng)時(shí)拜占庭羅馬帝國(guó)國(guó)土遼闊,為了防御目的,因此每個(gè)軍隊(duì)都分隔很遠(yuǎn),將軍與將軍之間只能靠信差傳消息。 在戰(zhàn)爭(zhēng)的時(shí)候,拜占庭軍隊(duì)內(nèi)所有將軍和副官必需達(dá)成一致的共識(shí),決定是否有贏的機(jī)會(huì)才去攻打敵人的陣營(yíng)。
但是,在軍隊(duì)內(nèi)有可能存有叛徒和敵軍的間諜,左右將軍們的決定又?jǐn)_亂整體軍隊(duì)的秩序。在進(jìn)行共識(shí)時(shí),結(jié)果并不代表大多數(shù)人的意見(jiàn)。
這時(shí)候,在已知有成員謀反的情況下,其余忠誠(chéng)的將軍在不受叛徒的影響下如何達(dá)成一致的協(xié)議,拜占庭問(wèn)題就此形成。
拜占庭將軍問(wèn)題不去考慮信差是否會(huì)被截獲或無(wú)法傳遞信息等問(wèn)題。Lamport已經(jīng)證明:在存在消息丟失的不可靠信道上,試圖通過(guò)消息傳遞的方式達(dá)到一致性是不可能的。
另一個(gè)比“拜占庭將軍問(wèn)題”更基礎(chǔ),更廣為人知的是“兩軍問(wèn)題”——Two Generals’Problem:
兩支軍隊(duì),分別由兩個(gè)將軍領(lǐng)導(dǎo),正在準(zhǔn)備攻擊一個(gè)堅(jiān)固的城市。兩支軍隊(duì)都駐扎在城市旁邊的兩個(gè)不同的山谷里,兩軍之間隔著第三個(gè)山谷,兩個(gè)將軍想要通訊的唯一方法就是穿過(guò)第三個(gè)山谷傳送信件。
問(wèn)題是,第三個(gè)山谷被城市的守衛(wèi)敵軍占據(jù),并且經(jīng)此傳送的信件可能會(huì)被守衛(wèi)敵軍截獲。雖然兩個(gè)將軍商量好要同時(shí)對(duì)城市發(fā)起攻擊,但是他們沒(méi)有約定特定的攻擊時(shí)間。
為了保證取勝,他們必須同時(shí)發(fā)起攻擊,否則任何單獨(dú)發(fā)起攻擊的軍隊(duì)都有可能全軍覆沒(méi)。他們必須互相通信來(lái)決定一個(gè)同時(shí)攻擊時(shí)間,并且同意在那個(gè)時(shí)間發(fā)起攻擊。兩個(gè)將軍彼此之間要知道另一個(gè)將軍知道自己同意了作戰(zhàn)計(jì)劃。
兩軍問(wèn)題是闡述在一個(gè)不可靠的通信鏈路上試圖通過(guò)通信以達(dá)成一致是存在缺陷的和困難的,這個(gè)問(wèn)題經(jīng)常出現(xiàn)在計(jì)算機(jī)網(wǎng)絡(luò)入門課程中,用于闡釋TCP協(xié)議不能保證通信兩端狀態(tài)的一致性。不過(guò)兩軍問(wèn)題同樣適用于任何有可能通信失敗情況下的兩點(diǎn)通信。
對(duì)比兩個(gè)故事,我們會(huì)發(fā)現(xiàn):兩軍問(wèn)題和拜占庭將軍問(wèn)題有一定的相似性,但必須注意的是,信差得經(jīng)過(guò)敵人的山谷,在這過(guò)程中他可能被捕。也就是說(shuō),兩軍問(wèn)題中信道是不可靠的,并且其中沒(méi)有叛徒之說(shuō),這就是兩軍問(wèn)題和拜占庭將軍問(wèn)題的根本性不同。
兩軍問(wèn)題是在計(jì)算機(jī)通信領(lǐng)域首個(gè)被證明無(wú)解的問(wèn)題,由此也可推論出,信道不可靠條件下的“拜占庭將軍問(wèn)題”也同樣無(wú)解。
這意味著我們傳輸信息時(shí)仍然可能出現(xiàn)丟失、監(jiān)聽(tīng)或篡改的情況。也許只有未來(lái)的“量子通訊”可能解決加密通信的問(wèn)題。
擱置各種加密貨幣共識(shí)算法的優(yōu)劣爭(zhēng)論,我們必須看到本質(zhì)問(wèn)題:是共識(shí)算法離不開(kāi)信道安全前提。
比特幣在理論上的缺陷,就是出在網(wǎng)絡(luò)通訊層的安全上。人們過(guò)高的著迷于區(qū)塊鏈這種技術(shù)在時(shí)間戳簽名、哈希鏈等密碼學(xué)上的貢獻(xiàn),而忽略了其作為分布式系統(tǒng)的網(wǎng)絡(luò)層安全。
事實(shí)上這種技術(shù)還在早期階段,盡管十年來(lái)比特幣曾被上百次的預(yù)言死亡而仍健在,但作為科學(xué)和技術(shù)的本體,是更不應(yīng)被盲目迷信的。
如果將這個(gè)世界看做一層一層協(xié)議,底下一層協(xié)議將控制和影響上一層。比特幣作為應(yīng)用層,必然被下一層網(wǎng)絡(luò)層所控制。
網(wǎng)絡(luò)層代表著提供網(wǎng)絡(luò)服務(wù)的運(yùn)營(yíng)商,深究下去是一整個(gè)社會(huì)架構(gòu),直接受到現(xiàn)實(shí)世界的金融和法律影響,而這個(gè)世界的最終的協(xié)議,即最終控制者其實(shí)是政治層。
非國(guó)家化加密貨幣,底層仍是掌握在國(guó)家的網(wǎng)絡(luò)設(shè)施中。
這事實(shí)看起來(lái)未免有些悲觀,但從另一個(gè)維度來(lái)看,區(qū)塊鏈也是需要運(yùn)維的。
雖然這個(gè)觀點(diǎn)與追求“維持開(kāi)放、無(wú)需權(quán)限和分布式”的理念似乎有點(diǎn)格格不入,但當(dāng)千百億資本涌入那些加密貨幣,專業(yè)的攻擊者也會(huì)盯上這片“無(wú)主之地”。
行業(yè)若想得到發(fā)展與保護(hù),更應(yīng)該呼吁和推動(dòng)政府部門盡快出臺(tái)相關(guān)法律法規(guī)和監(jiān)管政策,規(guī)范、保護(hù)并約束一個(gè)良好的生態(tài)環(huán)境。
本文由 @羊羊233 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
- 目前還沒(méi)評(píng)論,等你發(fā)揮!