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