每日最新頭條.有趣資訊

拜佔庭共識已經無法滿足今天公鏈和聯盟鏈的安全需求

作者:王永革教授,Sperax 首席科學家,著名華裔密碼學家,北卡羅來納大學夏洛特分校 (UNC, Charlotte) 計算機系終身教授,德國海德堡大學獲得博士學位。

自從 Facebook 推出聯盟鏈 Libra 的白皮書,並尋求在 5 年之後逐漸過渡到公鏈後,區塊鏈社區內很多人對聯盟鏈和公鏈的區別與相似性展開了富有卓效的討論。而針對目前公鏈和聯盟鏈在安全方面存在的一些隱慮,業內給出了一些觀點。

簡單來說,聯盟鏈是 permissioned 區塊鏈,只有少數得到許可的節點可以決定下一個區塊的生成。而公鏈 (permissionless) 則是一個開放的系統,所有的節點都有機會去生成下一個節點。所以從治理機制的角度來講,兩種鏈的區別是明顯的。如果不從安全性的角度去考慮,兩種鏈的應用場景應該沒有很大的區別。可以在聯盟鏈上的開發的應用場景也可以自然的作為公鏈上的應用場景,反過來也是。

今天我們主要通過兩種鏈治理機制的區別來討論為什麽在目前的技術支持下,不是所有的聯盟鏈應用場景都可以作為公鏈的應用場景。同時也嘗試解釋為什麽臉書不是從一開始就推出基於公鏈的 Libra。在聯盟鏈裡,具有投票權的節點是要經過審查許可的,其投票權也可以被收回。所以聯盟鏈並沒有達到徹底的去中心化。但正是由於這種審查許可機制的存在,有投票權的節點之間雖然存在著某種競爭關係而不能完全相互信任,但他們之間的關係也不是完全的不信任。

在密碼學的研究中,我們一般用半信任的威脅模型來表達這種關係。在公鏈上,任何節點都有機會平等的參與下一個區塊的生成。為了各自利益的最大化,有投票權的節點之間不存在任何信任關係。在密碼學研究中,我們用拜佔庭威脅模型來表達這種關係。

被人忽略的共識機制威脅模型

共識協議是區塊鏈的核心技術。共識協議決定了下一個區塊是如何生成的。換一種說法,共識協議決定了對整個系統所有交易的一種完全排序。而這種排序必須是系統所有誠實參與者之間的共識。

在現實生活中,如果我們對兩個交易的前後順序沒法達成共識,那我們就沒法對整個系統產生信任。如果一個不誠實的區塊鏈節點(不論是否具有投票權)可以通過某種方式而對這種排序進行攻擊,那將產生不可估量的災難性結果,其中最典型的例子就是「雙花攻擊」,這種攻擊模式已經在包括 Zencash、Ethereum Classic、Bitcoin Gold 等區塊鏈上發生。

一個安全可靠的區塊鏈共識協議應滿足一下兩個條件:

1.安全性 (Safety): 誠實的節點對合法交易將達成統一的 (consistent) 意見

2.活性 (Liveness): 一筆合法交易在合理時間長度內會被確認

比特幣的共識協議是基於工作量的 PoW 系統。由於 PoW 系統存在很多挑戰,目前社區內的共識是我們將逐步推廣基於權益證明(Proof of Stake,簡寫「PoS」)的共識協議。PoS 共識協議最早在區塊鏈 Peercoin 裡被使用。

在目前所使用的 PoS 共識協議裡,一個參與者必須滿足特定的條件才能夠生成下一個區塊。在很多情況下,可能多個參與者滿足這些條件。這些滿足條件的參與者都會去生成下一個區塊。因為區塊生成者會獲取多種利益,所以每個區塊生成者都希望自己生成的區塊是被大家接受的那個區塊。如果區塊鏈系統允許兩個參與者同時生成下一個區塊,那麽將出現區塊鏈分叉的情況。

為了避免區塊鏈的分叉,不論是聯盟鏈或是公鏈,一般都採用拜佔庭協議來從這些候選區塊中選出下一個大家都可以接受的區塊。這就涉及到很多核心問題:

1.一個參與者滿足什麽樣的條件才可以生成下一個區塊?

2.一個參與者在公布他有權生成下一個區塊之前,有多少人知道他的身份?

3.拜佔庭協議是如何進行的?

4.等等。

在不同的威脅模型中,對上述各個問題的解決方案是不同的。我們上面已經提到,聯盟鏈採用的是半信任的威脅模型,而公鏈採用的是拜佔庭威脅模型。因為在半信任的威脅模型裡安全可靠的應用場景不一定在拜佔庭威脅模型裡安全可靠,所以不是所有的聯盟鏈的應用場景都可以有對應的公鏈應用場景。

一般來講,開發者在開發應用場景的時候,必須考慮這些應用場景在什麽威脅模型裡是安全的。此外,我們還需特別考慮我們的應用場景可不可以在一個具體的聯盟鏈或公鏈上運行?雖然前面講了,聯盟鏈的假定是半信任的威脅模型,這不意味著所有的聯盟鏈都在半信任的威脅模型裡安全可靠。同樣的,我們講了公鏈需要在拜佔庭威脅模型裡安全可靠,但並不意味市場上所有的公鏈都在拜佔庭威脅模型裡安全可靠。

讀到這裡,大家可能會問:目前市場上有多少公鏈能否做到在拜佔庭威脅模型中完全安全?當然大家還會問:我們目前的公鏈是否有足夠的技術支持,來保證其在拜佔庭威脅模型中完全安全?我們在這篇文章以及以後的系列文章裡嘗試回答這些問題。

當你能猜出下一個塊誰來出的時候,那就可怕了!

我們先用一個非常初級的例子來說明理想與現實之間的差距:在基於 PoS 的聯盟鏈或公鏈裡,如果在下一個區塊生成之前,大家能夠預測到下一個區塊將由某一個特定的參與者 A 來生成,那麽這個區塊鏈系統將很容易被攻擊。這種情況在 EOSIO - Blockchain software architecture 區塊鏈上已經發生過數次,EOS 系統的黑名單機制以及超級節點順序出塊機制,讓黑客可以在部分黑名單遺漏節點出塊期間輕鬆完成交易。

比如,有些參與者或非參與者可能會賄賂 A 讓其在下一個區塊中不包括某些交易。此外,如果兩個參與者 A 和 B 都滿足下一個區塊的生成條件,A 可能會對 B 的網絡發起 DoS 攻擊,從而讓 B 無法公布其生成的區塊。其結果很可能是 A 的區塊被大家接受。所以在理想的區塊鏈系統裡,參與者都希望在下一個區塊生成之前,其生成者身份是不可預知的。但是市場上的很多區塊鏈系統都沒發實現我們的這種理想。也許在聯盟鏈所採用的半信任的威脅模型裡,這種下一個區塊生成者身份的可預測性是可以「接受」的。

但是在公鏈所採用的拜佔庭模型裡,這種可預測性是絕對不能接受的。在目前的一些公鏈裡,有些系統(比如Algorand)採用了可驗證的隨機數生成器 (VRF) 來保證下一區塊生成者身份的不可預測性。而另外一些公鏈 (比如Sperax) 使用了基於防篡改的硬體系統來保證下一區塊生成者身份的不可預測性。所以大家在分析一個鏈是不是安全可靠的,首先大家應分析一下其系統的隨機數來源於何處,是否安全。雖然大部分聯盟鏈裡沒有使用足夠的隨機數,但是我們相信即使在半信任的威脅模型裡,我們還是需要保證下一區塊生成者身份的不可預測性。作為一個練習題,讀者可以自行去分析市場上所有的區塊鏈,看能不能滿足這個基本條件。

另一個很重要的核心問題是目前大家使用的拜佔庭協議是不是在基於 Internet 的網絡環境裡仍然是安全的?拜佔庭協議是一個古老的話題。在兩千多年前的羅馬帝國的首都拜佔庭(今天的伊斯坦布爾),羅馬帝國的各軍隊之間都分隔很遠,將軍與將軍之間只能靠信差傳遞消息。帝國軍隊的將軍們必須全體一致決定是否攻擊某一支敵軍。但是將軍中存在叛徒。叛徒可以采取任何手段不讓忠誠的將軍們達成一個一致的決定。

為了解決分布式計算裡伺服器之間的協調問題,圖靈獎獲得者 Lamport 和他的合作者在 1982 年左右,將拜佔庭協議問題引入到計算機科學中。從此以後,一系列的分布式共識協議被設計並廣泛應用(比如 Rampart 和 SecureRing)。這些協議主要被用於相對封閉的環境(比如數據中心),所以他們都有比較強的假設。特別是很多拜佔庭協議都使用了以下兩個假設:

1.拜佔庭協議所使用的通訊網絡是一個完全圖(complete graph)。換一種說法,拜佔庭協議的所有參與者之間存在安全的點多點的通訊渠道。這種假定對聯盟鏈來說,都很難達到。對一個完全開放的公鏈,我們很懷疑這種假定仍然是成立的。

2.拜佔庭協議所使用的通訊網絡是一個同步網絡。也就是說,存在一個全局變量。每一個協議參與者在 t 時刻發出的消息, 一定會在 t+ 時刻之前到達接受節點。

這兩個假設對於比較封閉的環境來說,比較容易達到。但是對於一個開放的網絡,這種假設顯然是不現實的。比如說在我們使用的 Internet 上,DoS 攻擊是很容易展開的。所以即使基於 Internet 的聯盟鏈也不使用如上的假設。一般來說,Internet 是一個異步網絡,常用的異步網絡是用如下的模型來刻畫的:

存在一個 Global Stabilization Time (GST),在 GST 之前,任何消息可能丟失(比如 DoS 攻擊),或被重新排序。在 GST 之後,網絡變為同步網絡 GST 什麽時候開始,沒人知道。

所以說,我們區塊鏈所需要的拜佔庭協議必須在可以丟失很多信息的異步網絡具有魯棒性。目前市場上的區塊鏈裡使用最多的拜佔庭協議很多是圖靈獎獲得者 BARBARA LISKOV 和她的學生設計的 PBFT (practical BFT) 及其變種(比如 Tendermint BFT)。

拜佔庭協議並不能保證區塊鏈系統安全可靠

那麽我們關心的問題是:這些為異步網絡設計的拜佔庭協議對區塊鏈的應用來說是安全可靠的嗎?特別是,這些拜佔庭協議在基於 Internet 的網絡環境裡是安全的嗎?如果這些拜佔庭協議達不到在拜佔庭威脅模型裡的安全性,我們很難想象大家會對這些區塊鏈系統提供的服務產生信任。

如果我們仔細的去分析這些拜佔庭協議,我們會發現他們都有一個基本的假設:拜佔庭所使用的通訊網絡存在一個安全的廣播協議

如果一個節點在時刻 t 廣播一條消息 m,所有的節點在 t+ 時刻之前,會收到同樣的消息 m

但是我們知道,在 Internet 的網絡環境裡,DoS (De年l of Service) 攻擊可以讓某些節點接受不到廣播者發送的消息的。特別是,在異步網絡的 GST 時刻前,DoS 是允許的。所以說廣播協議在異步網絡的 GST 時刻前是不安全的。我們的結論是:如果 DoS 攻擊是可能的,那麽我們沒法保證目前很多區塊鏈使用的拜佔庭協議是安全的。

帶著好奇心,大家可能很想知道目前的區塊鏈系統是如何實現廣播協議的?大部分的廣播協議都是基於 Bracha 在 1987 年發表的如下論文:

G. Bracha. "Asynchronous Byzantine agreement protocols." Information and Computation 75.2 (1987): 130-143.

但是很遺憾,Bracha 的論文有一個經常被大家忽略的假設:

如果要使 Bracha 的廣播協議安全,其通訊網絡必須要有點對點可靠通訊渠道

問題就出在這個假定。因為要保證可靠的點對點的通訊渠道,那麽 DoS 攻擊應該是不被允許的。此外要保證網絡裡可靠的點對點的通訊渠道,網絡需要有足夠的連接度。大家可以參閱以下文章關於可靠的點對點的通訊渠道以及網絡連接度之間的關係刻畫:

Y. Wang and Y. Desmedt. Perfectly secure message transmission revisited. Information Theory, IEEE Tran., 54(6):2582–2595, 2008

綜合以上討論,我們很容易得出結論:目前很多區塊鏈系統(聯盟鏈和公鏈)所使用的拜佔庭協議並不能保證在基於 Internet 的網絡環境裡是安全的。我們將在以後的一些列文章裡逐個分析目前聯盟鏈和公鏈裡普遍使用的拜佔庭協議是不是在基於 Internet 的網絡環境裡是安全的。

如果這些區塊鏈系統使用的拜佔庭協議達不到在拜佔庭威脅模型裡的安全性,我們很難想象大家會對這些區塊鏈系統提供的服務產生信任。

總結一下:我們認為目前已開發的區塊鏈系統的安全性還沒有經過足夠的分析。所以我們無法來確認哪些應用場景是可以在聯盟鏈或公鏈上運行的。我們對區塊鏈系統的安全性研究還處於很初級的階段。就像上世紀八十年代我們對 Internet 安全性研究的理解一樣。

在 1988 年一個 MIT 研究生寫的毛毛蟲 Morris worm 感染了世界上當時 10% 的電腦。從而讓整個世界的 Internet 系統處於癱瘓狀態。如果我們沒有對區塊鏈系統的安全性有足夠的研究和準備,這種毛毛蟲攻擊很可能在區塊鏈系統上會上演。我們將在下幾個月的系列文章裡將我們的研究逐步介紹給大家!敬請大家關注。

下期文章預告:區塊鏈廣泛使用的拜佔庭協議PBFT的安全性分析:PBFT被廣泛使用於聯盟鏈(比如Hyperledger sawtooth和趣鏈科技的Hyperchain)和一些公鏈。

作者介紹

王永革教授,Sperax 首席科學家,著名華裔密碼學家,北卡羅來納大學夏洛特分校 (UNC, Charlotte) 計算機系終身教授,德國海德堡大學獲得博士學位。王教授發表了一百多篇學術論文,研究範圍包含計算複雜性理論、密碼學(加密、解密和密碼分析)、容錯計算、分布式計算、基礎設施保護、安全通信、計算機和網絡安全、雲安全、信息論和後量子密碼學。王教授參與標準組織制定協議,如 IETF、W3C、XML 安全協議、IEEE 1363 加密技術標準化組和 SAN 網絡安全標準 ANSI T11 小組。

區塊律動 BlockBeats 提醒,根據銀保監會等五部門於 2018 年 8 月發布《關於防範以「虛擬貨幣」「區塊鏈」名義進行非法集資的風險提示》的文件,請廣大公眾理性看待區塊鏈,不要盲目相信天花亂墜的承諾,樹立正確的貨幣觀念和投資理念,切實提高風險意識;對發現的違法犯罪線索,可積極向有關部門舉報反映。

*區塊律動 BlockBeats 提示各位投資者防範追高風險,本文所提觀點不構成任何投資建議。

----更多區塊鏈行業信息,歡迎掃碼訪問官網----

獲得更多的PTT最新消息
按讚加入粉絲團