Blockchain can be Blocked(比特幣網絡通信底層漏洞詳解)

如今可見的幾乎全部加密貨幣和區塊鏈的討論都源於中本聰的白皮書:《比特幣:一種點對點的電子現金系統》Bitcoin: A Peer-to-Peer Electronic Cash System (Satoshi Nakamoto)。node

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日,財政大臣正處於實施第二輪銀行緊急援助的邊緣)。」git

當時正是英國的財政大臣達林被迫考慮第二次出手紓解銀行危機的時刻,這句話是泰晤士報當天的頭版文章標題。區塊鏈的時間戳服務和存在證實,讓第一個區塊鏈產生的時間和當時正發生的事件被永久性的保留了下來。算法

2009年10月5日出現了最先的交易所匯率:1美圓=1309.03比特幣。十年後比特幣的價格已經超過8000美圓,按照2017年峯值的最高價20000美圓一枚計算,2100萬枚比特幣的市值達4200億美圓,外加各類山寨幣、分叉幣,加密貨幣總規模已經突破萬億美圓。比特幣帶給咱們最大的衝擊是原來哈耶克的創想可行,技術能夠超越現有政府的框架實現「非國家化的貨幣」並開始流通。安全

在幣值飛漲的瘋狂年代,已經不多人再去翻看中本聰的白皮書。僅有九頁的白皮書只是一套技術方案,全部的篇幅都是爲了探討一個「幣」的實現,超越軟件技術自己,咱們去細加審視更本質的問題:比特幣的「去中心化」是否完全,是否真正成爲了一個權力分散且徹底自治的系統?白皮書中是否還有哪些缺陷,是中本聰默認忽略又事實存在的假性前提。服務器

去中心化=大多數人正義

[白皮書摘要]:本文提出了一種徹底經過點對點技術實現的電子現金系統,它使得在線支付可以直接由一方發起並支付給另一方,中間不須要經過任何的金融機構。雖然數字簽名(Digital signatures)部分解決了這個問題,可是若是仍然須要第三方的支持才能防止雙重支付(double-spending)的話,那麼這種系統也就失去了存在的價值。咱們在此提出一種解決方案,使現金系統在點對點的環境下運行,並防止雙重支付問題。該網絡經過隨機散列(hashing)對所有交易加上時間戳(timestamps),將它們合併入一個不斷延伸的基於隨機散列的工做量證實(proof-of-work)的鏈條做爲交易記錄,除非從新完成所有的工做量證實,否者已經造成的交易記錄將不可更改。最長的鏈條不只將做爲被觀察到的事件序列(sequence)的證實,並且被看作是包含CPU最大計算工做量的鏈。只要絕大多數的CPU計算能力都沒有打算合做起來對全網進行攻擊,那麼誠實的節點將會生成最長的、超過攻擊者的鏈條。這個系統自己須要的基礎設施很是少。信息盡最大努力在全網傳播便可,節點(nodes)能夠隨時離開和從新加入網絡,並將最長的工做量證實鏈條做爲在該節點離線期間發生的交易的證實。網絡

細讀比特幣白皮書,你會發現中本聰的「去中心化」背後的潛臺詞是「大多數人正義」,共識機制是比特幣的核心理念。架構

創建一套「去中心化的P2P支付系統」,沒有中心(中介)的支付系統,要避免「雙花」(雙重支付double-spending)如何覈對記帳?答案是經過共識機制:用密碼原理和工做量證實(Pow)代替中心化權威信用。框架

產生一條新的交易記錄時永遠有前後順序,即使是雙花也總有前後順序,同一用戶不可能同時創造兩筆交易。比特幣首先引入了基於時間戳的隨機散列,讓其造成先後相關的序列,比特幣的交易記錄就是一個時間序列的鏈條。這就是爲何稱之爲區塊鏈的緣由。運維

要避免雙花,咱們只須要證實其中一條鏈有效便可,而且將其記錄到交易鏈條上,其餘的交易就是無效的了。要證實其中一條是有效又不容許中心化從存在,只有一個辦法:發動全部人蔘與這項活動,進行「多數人的正義」。機器學習

POW 共識算法正是爲了解決誰是大多數的問題,「大多數」的決定表達爲最長的鏈。新區塊進行節點廣播,一旦有節點收到了這個區塊的廣播,會按照「當且僅當包含在該區塊中的全部交易都是有效的且以前未存在過的,其餘節點才認同該區塊的有效性」的規則進行驗證。

驗證經過後,這個節點就不會再接受別的節點的一樣區塊了。同時這個節點會終止本身正在進行的包含一樣交易的區塊計算,也就說不會在進行無用功了,節點在這個區塊基礎上啓動新的交易區塊計算,如此往復,造成鏈條。

因爲網絡延遲,若是同時有幾個節點互相收到交易區塊,記錄一樣的鏈條(分叉),該僵局的打破要等到下一個工做量證實發現。經過一段時間運行,總有一條區塊鏈時序最長,做爲最終被承認的鏈條。比特幣區塊鏈就是在不停的分叉、拋棄、又分叉、又合併的過程。

共識機制替代中介信任,那麼咱們探討一下極端狀況下可能會出現什麼問題?

假想的災難

讓咱們一塊兒頭腦風暴一場假想的災難:

2018年某一天下午15:30,中國的海底光纖忽然出現故障,國際出口被阻斷。整個比特幣網絡仍舊正常運轉:國內的礦池、礦場幣照樣挖;國外的礦場、交易所繼續正常挖幣和交易。只是不知不覺間,中國的比特幣網絡和國際比特幣網絡被撕裂爲兩個子網。

17:40,故障後2個小時,光纖故障排除,國際出口復通。

在故障期間,中國境內的算力造成一個鏈,境外的算力造成另一條支鏈。按照共識機制,就看哪條鏈的長度更長,而長度較短的另外一鏈會被淘汰,即這條被淘汰的支鏈上產生的全部交易須要從新覈算,同時記帳獎勵將被做廢。

因爲中國國內的算力佔比高達70%,國外鏈毫無心外會被淘汰,這將爲比特幣帶來滅頂之災:在故障發生的兩個多小時,境外礦場的算力成果被銷燬了,海外全部的比特幣交易面臨從新覈算,你們該收到的比特幣沒收到,該支出的沒支出,整個比特幣上的商業活動被癱瘓。

大規模通信中斷會將比特幣網絡撕裂爲算力懸殊的兩個分支,那麼最優的策略是故障發生那刻起,整個比特幣網絡當即停擺,直到故障修復。不然若是保持隔離狀態繼續運行,復通合併時就會出現更棘手的癱瘓。

爲防止支鏈帶來的干擾形成損失,比特幣一筆交易至少須要 6 個區塊的確認,一個區塊時間是10分鐘,6個區塊就是一小時。假如故障致使的網絡隔斷超過一小時,就會給交易帶來衝擊,隔斷時間越長衝擊越大。

人們對比特幣容災能力的討論,更多地關注於分佈式的多節點存儲備份,忽略了共識機制自己形成的隔離和吞沒效應。

這樣的假想並不是天方夜譚,就在 2018年3 月30日,非洲國家毛里塔尼亞因爲海底電纜被切斷,形成全國範圍內完全斷網時間長達 2 天,該起事件還同時影響數個周邊國家,斷網噩夢首次在現實中上演,說明全球範圍內的網絡基礎設施並不是人們想象的安全。

實際上,全球大約 97% 以上的網絡數據經過海底電纜傳輸,但各國出於軍事目的而進行的海底電纜附近活動並不在少數。2013 年,有 3 名潛水員在埃及被捕,他們被指控爲涉嫌切斷海底電纜。

而在軍事戰略家的理論中,全面切斷海底電纜,影響該國軍事通訊能力,對敵方形成經濟損失和癱瘓性災難,也不失爲一種重要的備選打擊手段。

而且,能讓比特幣陷入癱瘓的可能還不止天災。

算力壟斷≠51%攻擊

目前對比特幣的信仰創建在全網51%算力難以企及上,然而最近人們愈來愈多開始擔心,掌握大規模ASIC礦機的礦場事實上已經壟斷了51%算力。

根據《麻省理工科技評論》在 2018年1月18日發佈的最新研究代表,比特幣和以太坊都屬於開放區塊鏈系統,即原則上任何人均可以成爲礦工,但由於這樣的架構特性,天然造成了相應的組織集中挖礦資源。

基於每週一次的統計,排名前四名的比特幣挖掘活動就佔整個系統挖掘活動的 53%;而以太坊挖掘活動的中心化程度甚至更加穩固,前 3 大礦機佔總體系統每週平均挖掘活動高達 61%。算力壟斷是否已經動搖了比特幣「去中心化」的特性?

答案是否認的。51%攻擊不會來自生態內。

這是由於礦場巨頭們雖然集中控制了算力,但他們按照遊戲規則,付出了大量硬件投資和電費消耗。若是發動51%攻擊,整個系統的價值就會崩潰,那麼攻擊得到的比特幣就沒有任何意義了。

51%攻擊必然來自於體系外。

從假想天災咱們能夠獲得一點啓發,發動51%攻擊不必定要靠控制算力,影響網絡層多是成本更低,更可實現的方式。下面發散列舉一些可能性:

  1. 大規模的黑客攻擊行動,控制主幹網絡設備的路由策略,發動BGP攻擊。
  2. 網絡設備商的後門權限。針對核心路由器0day漏洞的蠕蟲病毒在傳播過程當中,有意或無心地封閉了國際出口。
  3. 電信運營商的國際出口通信故障。
  4. 國家防火牆的限制和阻斷。

以上相似天災的場景中,發動者均可以是體系外的成員,而且不須要耗費大量硬件和電力資源投入,只須要控制網絡層就能夠輕鬆實現。這就暴露出比特幣和全部加密貨幣最致命的缺陷:網絡層自然高度中心化。

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

區塊鏈的底層是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 :

有趣的是,「區塊鏈」Blockchain一詞本不是白皮書中的原生詞彙,儘管原文中說起「區塊」Block達67次,說起「鏈」Chain的有27次,但中本聰從未將Blockchain合併在一塊兒。Block既有「塊」的意思,但不要忘了它同時仍是另一個含義:「限制、阻礙」。人們也許有意忽略,Blockchain can be blocked。

區塊鏈的核心是共識機制,共識是分佈式系統通過網絡傳輸「投票」決策模式,干預和影響分佈式系統的承載網絡。咱們發現,在特定場景下,惡意地利用共識機制,能夠間接影響、左右「共識」的預期結果,形成共識破裂。鑑於攻擊過程涉及到區塊鏈網絡的撕裂與修復,咱們將此方法稱之爲「癒合攻擊」。

癒合攻擊,簡而言之,是先經過「撕裂」,將區塊鏈網絡隔離成能超過「共識閾值」(好比POW的51%)的兩個獨立鏈條,而後間隔必定時間(超過交易確認時間)後,讓兩個鏈條「癒合」,利用合併對衝來強制拋棄其中一條已有大量交易的鏈條。

癒合攻擊其實是分區攻擊(Partition attack)+延遲攻擊(Delay attack)的連續組合攻擊手段,其破壞力遠超DDos攻擊和IP封堵。

針對節點、礦工的DDos、封堵ip地址等攻擊方式,其影響力是短暫的。不管對任何IP地址發動DDos攻擊,被攻擊者都是有感知的,由於節點和礦工將當即意識到,本身沒法和任何人通訊。被攻擊者很快能夠切換IP的方式應對。攻擊對整個區塊鏈網絡形成的破壞並不明顯,由於節點在切換IP後,仍得以與其餘節點進行通訊,確保了交易確認,不會致使區塊鏈網絡帶來毀滅性影響。
癒合攻擊直接撕裂網絡,造成兩個大局域網。兩個網內的節點都可以相互通訊,並沒有斷網感知,也就無從採起防範措施。它利用網絡層,在癒合的一刻使「共識機制」崩潰:假如節點所有遵照「Code is Law」,則必然出現分鏈被吞沒;不遵照代碼約定,則需人爲分叉,進而顛覆信仰。更致命的是,癒合攻擊能夠高效率地反覆進行,分治對衝,比特幣網絡就就會癱瘓。

癒合攻擊並不只針對比特幣網絡有效,對於以太坊等加密數字貨幣,一樣有着致命威脅,儘管以太坊在通信協議上進行了必定程度的加密,但這僅僅是爲了保護智能合約的安全,並非以消除通信協議的識別特徵爲目標的加密。只要根據其網絡通信中長連接、冗餘心跳機制等數據和行爲特性,攻擊者仍然能夠精準打擊,經過隔離網絡,發動癒合攻擊。

所以,不管是哪一種數字貨幣,只要沒有在通信底層從數據和行爲上抹去特徵,便難逃癒合攻擊的火力覆蓋。近年來廣受炒做的山寨幣,包括萊特幣、門羅幣、比特幣現金、量子鏈等則更不能倖免。聲稱還沒有被攻擊過,遠遠不可以做爲具備防破壞性的理論證實。

進一步來看,全部的共識算法,包括POW、POS、DPOS,都須要保證傳輸無干擾。由於分佈式系統的共識算法本質上都是在信道安全的前提下,解決一致性和正確性問題。而信道安全前提一旦不成立,共識算法保障的「一致性」和「正確性」將瓦解。

BGP劫持

癒合攻擊是瓦解區塊鏈的技術手段,實施癒合攻擊,最經常使用的是BGP劫持。什麼是BGP劫持呢?

正常的礦機與礦池的通信應該包括這幾個步驟:
礦機 -> 網絡運營商A -> 網絡運營商B -> 網絡運營商… -> 礦池

因爲比特幣礦池的跨地域性,在礦機和礦池之間的網絡運營商(ISP)可能有數個做爲跳轉。這是極不安全的,任何一個環節的都有可能被黑客經過邊界網關協議(BGP)劫持。

邊界網關協議(BGP)是因特網的關鍵組成部分,用於肯定路由路徑。BGP劫持,即利用BGP操縱因特網路由路徑。不管是網絡犯罪分子仍是國家防火牆,均可以利用這種技術來達到本身的目的,如誤導和攔截流量等。

BGP是一種網絡協議,用於交換因特網上各網絡之間的路由信息。通常狀況下,它用來肯定在獨立運營的網絡或自治系統之間路由數據的最佳路徑。 所以,它也經常用來尋找從ISP到ISP路由數據的路徑。須要注意的是,BGP不是用來傳輸數據的,而是用來肯定最高效的路由路徑的。 實際的傳輸工做,是由其餘協議來完成的,例如TCP/IP協議棧。

如今,假設我須要發送數據到世界的另外一端。最終,這些數據確定會離開個人ISP所控制的網絡,所以,必然就會用到BGP。 固然,路由路徑是沒法經過單獨一個自治系統來決定的,這須要其餘的BGP對等端或鄰居的參與才行。 這些對等端是些已經經過手工配置爲共享路由信息的自治系統。當自治系統學習新路由的時候,這些信息就會進一步傳播到其餘對等端。 經過梳理從BGP對等端收集來的路由信息,處理這些數據的路由器就可以找出最佳路徑。這些最佳路徑是參考多種因素綜合得出的,包括距離以及路由器管理員實現的配置設置等。 因爲傳播路由的對等端是手工配置的,所以有必要入侵一臺邊界路由器來廣播外部BGP通告,從而實現因特網級別的BGP劫持。儘管這作起來很是困難,可是BGP劫持攻擊確實已經出如今現實世界之中了。

由於BGP決定了數據從源端到目的地端的傳輸方式,因此,必需要關注該協議的安全性。經過操縱BGP,攻擊者能夠按照本身的意願來修改數據的傳輸路線,從而達到攔截或者修改數據的目的。 爲了劫持因特網級別的BGP,須要配置一個邊界路由器,讓它發送含有未分配給它的前綴的通告。若是惡意通告比合法通告還要具體,或者聲稱提供更短的路徑,那麼流量就可能被定向到攻擊者那裏去。 攻擊者常常利用棄用的前綴來進行劫持,以避免引發合法屬主的關注。經過廣播含有虛假前綴的通告,受攻擊的路由器可能會污染其餘路由器的路由信息庫。 在污染了其餘路由器以後,惡意路由信息可能會進一步傳播到別的路由器中,或自治系統,甚至主幹因特網上。

最近幾年來,已經有多起BGP劫持攻擊被記錄在案:

比較著名的就是13年巴基斯坦屏蔽Youtube的事件。因爲巴基斯坦電信部門錯誤地把屏蔽youtube加到了BGP上,致使該協議上的全部AS都被屏蔽了。換句話說,全世界其餘全部國家的人都沒法上Youtube了,由於數據包都涌向巴基斯坦了,而巴基斯坦偏偏屏蔽了Youtube。

在Renesys記載的案例中,2013年BGP劫持技術曾經用來從新路由數據,使其在到達目的地以前,先通過任意指定的國家。 其中,一個攻擊案例中的數據流量,在到達起目的地以前,居然先繞道墨西哥至美國,而後轉至白俄羅斯。經過散佈虛假BGP廣播,白俄羅斯的ISP成功將非法路由傳播到了因特網上。 在這個案例中,極可能是一種公司或國家間諜行爲。不過,有跡象說明,即便非國家級別的對手,照樣也可以發動BGP劫持攻擊。

2014年Dell SecureWorks分析的一個案例中,BGP劫持被用來攔截比特幣礦機到採礦池服務器的連接。經過將流量重路由至攻擊者控制的礦池,攻擊者就可以竊取受害者的比特幣。 此次攻擊在兩月內收集到了價值$83,000的比特幣。

在2015年7月,監視軟件供應商Hacking Team被黑,泄露的內部郵件代表,在2013年,意大利政府曾經與Hacking Team有關合做,同時,意大利的一家ISP也購買過該公司的BGP劫持服務。 因爲託管Hacking Team指令控制服務器的IP被阻斷以後,該服務器已經離線,所以該惡意軟件與指令控制服務器的鏈接也一直保持不可達狀態。經過公佈託管該指令控制服務器的虛假IP前綴,Hacking Team居然又恢復了對受害者機器的訪問能力。 這是第一個記載在冊的西方國家政府使用BGP劫持的案例。

致命傷: 「拜占庭將軍問題」&「兩軍問題」

比特幣是分佈式系統一次空前的社會實驗,也被稱爲解決」拜占庭將軍「問題的成功實例。在此強烈建議你們百度或者維基一下理論原型。

拜占庭將軍問題是2013年圖靈獎得主 Leslie Lamport 在 1980 年的論文 The Byzantine Generals Problem 中提出的分佈式領域的容錯問題,這是分佈式領域最複雜、最嚴格的容錯模型。Lamport是分佈式系統的祖師爺級的大師,這個故事也廣爲流傳:

拜占庭位於現在的土耳其的伊斯坦布爾,是東羅馬帝國的首都。因爲當時拜占庭羅馬帝國國土遼闊,爲了防護目的,所以每一個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳消息。 在戰爭的時候,拜占庭軍隊內全部將軍和副官必需達成一致的共識,決定是否有贏的機會纔去攻打敵人的陣營。可是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂總體軍隊的秩序。在進行共識時,結果並不表明大多數人的意見。這時候,在已知有成員謀反的狀況下,其他忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此造成。

拜占庭將軍問題不去考慮信差是否會被截獲或沒法傳遞信息等問題。Lamport已經證實,在存在消息丟失的不可靠信道上試圖經過消息傳遞的方式達到一致性是不可能的。

另外一個比「拜占庭將軍問題」更基礎,更廣爲人知的是「兩軍問題」Two Generals’ Problem:

兩支軍隊,分別由兩個將軍領導,正在準備攻擊一個堅固的城市。兩支軍隊都駐紮在城市旁邊的兩個不一樣的山谷裏。兩軍之間隔着第三個山谷,兩個將軍想要通信的惟一方法就是穿過第三個山谷傳送信件。問題是,第三個山谷被城市的守衛敵軍佔據,而且經此傳送的信件可能會被守衛敵軍截獲。雖然兩個將軍商量好要同時對城市發起攻擊,可是他們沒有約定特定的攻擊時間。爲了保證取勝,他們必須同時發起攻擊,不然任何單獨發起攻擊的軍隊都有可能全軍覆沒。他們必須互相通訊來決定一個同時攻擊時間,而且贊成在那個時間發起攻擊。兩個將軍彼此之間要知道另外一個將軍知道本身贊成了做戰計劃。

兩軍問題是闡述在一個不可靠的通訊鏈路上試圖經過通訊以達成一致是存在缺陷的和困難的,這個問題常常出如今計算機網絡入門課程中,用於闡釋TCP協議不能保證通訊兩端狀態的一致性。不過兩軍問題一樣適用於任何有可能通訊失敗狀況下的兩點通訊。

對比兩個故事,咱們會發現兩軍問題和拜占庭將軍問題有必定的類似性,但必須注意的是,信差得通過敵人的山谷,在這過程當中他可能被捕,也就是說,兩軍問題中信道是不可靠的,而且其中沒有叛徒之說,這就是兩軍問題和拜占庭將軍問題的根本性不一樣。

兩軍問題是在計算機通訊領域首個被證實無解的問題,由此也可推論出,信道不可靠條件下的「拜占庭將軍問題」也一樣無解。

這意味着咱們傳輸信息時仍然可能出現丟失、監聽或篡改的狀況。也許只有將來的「量子通信」可能解決加密通訊的問題。

擱置各類加密貨幣共識算法的優劣爭論,咱們必須看到本質問題,是共識算法離不開信道安全前提。

比特幣在理論上的缺陷,就是出在網絡通信層的安全上。人們太高的着迷於區塊鏈這種技術在時間戳簽名、哈希鏈等密碼學上的貢獻,而忽略了其做爲分佈式系統的網絡層安全。事實上這種技術還在早期階段,儘管十年來比特幣曾被上百次的預言死亡而仍健在,但做爲科學和技術的本體,是更不該被盲目迷信的。

網絡通信混淆協議BSO

比特幣的信仰創建在完全去中心化的大前提下:整個體系公平、自治,不依賴也不須要現有的中心化機構介入,甚至也沒法介入。所以,評價一個加密貨幣成功的標準必須在因而否完全去中心化,中本聰理想化的忽略了網絡的中心化現實,任何不完全的「中心化」殘餘之處,均可能成爲擊垮整個比特幣的「阿琉克斯之踵」。

比特幣要實現完全去中心化,承載價值網絡之名,就必須運行於安全的網絡上,成爲加密到底層通信協議的全加密貨幣。現實的網絡世界,徹底安全、透明、中立的網絡通信是不存在的。量子通信從理論到落地仍需假以時日。現實的思路是立足當下技術之可爲,從安全和成本制衡的角度,改良和從新設計區塊鏈的P2P通信協議,使工程學所能實現的安全量級大大超過現實可用於監聽、攔截、破壞區塊鏈通信所要付出的成本代價。

以太坊和一些加密貨幣開始使用加密通信協議,這是一個好的開始。然而這些協議仍留有不少痕跡。在2018年初,移動互聯網系統與應用安全國家實驗室舉辦的一場通信加密數據識別邀請賽中,幾乎全部的加密貨幣通信數據全被識別了出來。

咱們認爲須要從新設計一種更優的區塊鏈通信混淆協議BSO(Blockchain Security Obscure Protocol),協議設計思想是讓P2P網路在通信傳輸時無明顯特徵,混淆在通常的網絡通信中。增長網絡層尋識特徵的難度,提升網絡層識別、篡改或攔截的成本,從而保護區塊鏈網絡通信的安全性。

混淆協議屬於一種安全對抗工程,通常有兩種對抗方向,一種是正面對抗,經過設計一種新的強加密協議,讓中間人沒法經過分析流量內容識別出應用業務,可是新協議自己的特色,容易成爲被針對的特徵;另外一種是迂迴對抗,將應用業務的流量假裝成和互聯網中絕大部分正常流量同樣的協議,而且同時是一種合法的加密協議,從協議特徵、內容加密就能夠作到難以從流量上被針對識別。

BSO混淆協議只是一個起步,將來混淆和機器學習將是一個在長期對抗中共同演進的技術,而區塊鏈網絡能夠經過不斷軟分叉方式不斷完善,健壯起來。

分佈式網絡治理和監控

區塊鏈生長於網絡之上,算力節點在網絡上的分佈生態是一個未被足夠關注的問題。分佈式系統的共識離不開信道安全,甚至須要網絡保護。

運行在區塊鏈上的數據,資產,應當如同承載在互聯網上的信息同樣,被全世界全部國家的政府、網絡管理機構、運營商來保護,並承諾安全。

全部的加密貨幣和區塊鏈應用,必須爭取得到得到國家和政府的承認、監管而且保護。由於加密貨幣並不像看上去那樣,能夠沒法無天無人可管,又令管制機構迫不得已。可能不需更多的國家跨國聯手,一兩個超級大國足以讓整個加密貨幣世界停擺。以網管鏈,以鏈治幣,區塊鏈的監管將毫不是空話。

從事區塊鏈、加密貨幣研究的企業、機構,更應該呼籲和推進政府部門儘快出臺相關法律法規和監管政策,規範、保護並約束一個良好的生態環境。

另外一個維度,區塊鏈是須要運維的。這個觀點與追求「維持開放、無需權限和分佈式」的理念彷佛有點格格不入。但當千百億資本涌入那些加密貨幣,專業的攻擊者也會盯上這片「無主之地」。在去中心化的理念下,傳統的運維手段幾乎都再也不適用,須要探索原創性的技術資源。用分佈式的監控模式,去監控分佈式網絡和節點的健康狀態,是咱們認爲可欲可行的。這將是一個相似比特幣挖礦同樣,宏大而廣闊的工程:在不一樣的國家、運營商,部署足夠多的監控節點,來反覆檢測線路健壯程度,是否通暢,是否被劫持。以比特幣爲例,若是能夠提升對劫持的預警靈敏度,以致於在不可逆的6個區塊確認前,及時採起措施,也是一條能夠避免癒合攻擊的發生的方案。而這樣的一套相似「晴雨表」的分佈式節點的監控設施,將是區塊鏈必須的基礎設施之一。

信仰代碼

哈耶克終身都在反對人爲建構的秩序,認爲人類理性不及,須要由市場自生自發的秩序來認知和管理世界,並提出了《貨幣的去國家化》的開創性構想,他在序言寫下:

「當下的政治必然性不該當是經濟學家關注的問題。他的任務應當是像我不厭其煩地重複過的那樣,是從今天的政治角度看來不可行的政策,具備政治上的可能性。決定此時此刻應當作什麼,這是政治家而不是經濟學家的任務···(《貨幣的非國家化》第二版,1978年)」

做爲技術開發者,引發咱們共鳴的是:應從技術的角度探求,使得今天可能在政治上不可能的事情具備政治上的可能性。剩下的交給政治家。

最後,期待人們仍能夠回到對代碼的信仰上。在它完善以後。

附錄:致謝和參與者

由衷的感謝下面的人,他們慷慨的分享和貢獻了他們的時間和看法:

Satoshi Nakamoto Bitcoin: A Peer-to-Peer Electronic Cash System 2008Zach Julian An Overview of BGP Hijacking AUGUST 17, 2015Dave Hudson Look back to Satoshi's White Paper to Find the Essence of Blockchain 2016Maria Apostolaki,Aviv Zohar,Laurent Vanbever Hijacking Bitcoin: Routing Attacks on Cryptocurrencies May 2017Liang Wang,Kevin P. Dyer,Aditya Akella,Thomas Ristenpart,Thomas Shrimpton Seeing through Network-Protocol ObfuscationAdem Efe Gencer, Soumya Basu, Ittay Eyal, Robbert van Renesse, and Emin Gün Sirer Decentralization in Bitcoin and Ethereum NetworksByron Gibson Bitcoin and the byzantine generals problemTan Qingfeng, Shi Jinqiao, Fang Binxing, Guo Li, Zhang Wentao, Wang Xuebin, Wei Bingjie Towards Measuring Unobservability in Anonymous Communication SystemsZhu Yixiang,Li Ziyang,Liang Yingfeng,Chen Yexuan,Wang Si,Eleven zhang,Jiang Zhuojian Security analysis and improvement of Blockchain network communication focus on Bitcoin 2018

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息