從區塊鏈誕生的那一刻起,區塊鏈的安全事件就層出不窮,無論是比特幣、以太坊還是最近的 Filecoin 都在不斷地改進中,不斷地提升自身的安全性。但是,這個一個新生事物,多數都是包含著無數的缺陷誕生的,同樣受到各種追捧和持續快速地迭代。
在區塊鏈領域流行著一句話:In BlockChain We Trust。為什么?區塊鏈運行起來,參與的人員眾多,良莠不齊,許多節點經常遭受攻擊,但是大家還是說 “In Blockchain We Trust”。也就是說,我們就是相信區塊鏈。
這一方面表明區塊鏈是顛覆性的,其本身就是一種建立信任的技術,另一方面,大家也相信,區塊鏈是一種安全的技術。這一點有些意思,因為許多人看到的是區塊鏈領域發生的安全時間,而很少思考區塊鏈所帶來的安全變革。
區塊鏈的安全問題
大家經常提到的區塊鏈安全,涉及到的方面非常多,但其實,多數都是與傳統的軟件系統的安全性有共通之處。大體說來,可以考慮以下一些方面(我對這些安全問題加一些評注,以藍色斜體表示):
代碼安全:許多安全問題來自于代碼漏洞,非常著名的就是 Ethereum 的 DAO 事件,直接導致以太坊分叉至兩個網絡:ETH 和 ETC;Filecoin 前段事件發生的網絡暫停事件,也是一個代碼問題導致的安全事件,所幸的是,未發生資金方面的問題。(評:代碼問題是一個通用的問題,在任何的軟件系統和網絡中都存在,與是不是區塊鏈沒有直接關系。)
私鑰遺失或被盜:這是大家談論的比較多的安全問題,業界也在不停地教育和改善系統,一些對私鑰的保存和找回的機制和方式也逐漸成熟。(評:這和一般系統中的賬號和密碼丟失類似,但中心化系統一般可以通過身份認證找回,而區塊鏈系統的去中心化特性,使得找回私鑰需要一些其他的方式。)
黑客入侵:最著名的就是直接導致門頭溝(Mt.Gox)倒閉的黑客事件了,當然幾乎所有交易所都發生了黑客入侵和丟幣的事件,這似乎也是區塊鏈領域的常見安全問題。(評:這些安全事件都發生在中心化交易所,這些安全事件與區塊鏈技術本身關系不大。反而,這些安全事件正說明去中心化的安全性更高,你什么時候聽說過去中心化交易所的黑客事件?)
釣魚攻擊:完全與區塊鏈沒有關系,中心化系統的常規安全問題
女巫攻擊/路由攻擊:這通常發生在有些區塊鏈系統還不成熟,或者參與人比較少的情況,需要對鏈和網絡有一定的控制權
51% 攻擊:老生常談了。(評:這是區塊鏈真正的安全問題。但這也正是區塊鏈的設計基礎,即網路朝著符合大多數人(或投票權)的方向走。同時這也要求一條鏈必須要有足夠的去中心化,和足夠的參與度來保障安全)
我們看一看,上面提到的安全問題,除了51% 攻擊區塊鏈特有的,而其他部分,都基本上與區塊鏈沒有直接的關系,是通用網絡都會遇到的問題。而 51% 攻擊,從另一份方面來講,也體現了區塊鏈的安全性之高,要作惡的成本之高昂,在一條成熟的、參與人眾多的鏈面前,這種攻擊顯得太難而不可行。
區塊鏈對網絡安全的提升
如果我們提升一個層次,真正考慮網絡的安全問題,而不是拘泥于一個一個點來看。我們會發現,實際上,區塊鏈技術解決了非常多的安全問題。這也是為什么說區塊鏈是第三代互聯網的基石的重要原因。因為第三代互聯網(Web3.0)是一個可信的網絡,可信的基礎就來自于區塊鏈。
區塊鏈賦能Web3.0,通過去中心化技術建立信任,那么沒有那么多的安全軟件,沒有防火墻,沒有安全專家為每一個網絡軟件的運行把關,行嗎?區塊鏈說,這都不需要。
開源是安全的基礎:沒有絕對的代碼安全,但是,一條成熟的公鏈,其代碼必然是開源的,共享的,經過很多人驗證和測試的,經過審計的。在安全的世界里,早就有一條共識,加密要用大家都認可的開源算法和實現,安全機制要采用標準的開源的經過驗證的機制,而不是私有的、未公開的。區塊鏈作為一個去中心化的系統,其運行機制和經濟激勵都以開源為基礎,當持續運行下去,其安全和信任度會越來越高。如今的比特幣網絡就是一個最好的例證。
開放和去中心化使攻擊無處借力:第二代互聯網的基礎設施被網絡寡頭把控,盡管這些寡頭投入重金來保障安全,但是安全事件常年不斷,Gmail停服,Twitter故障,微博罷工,信用卡賬號被盜等等。但是,一條區塊鏈網絡運行起來,除非代碼問題(前面提到,非常少而且會快速成熟),絕不會停工,長久服務,這就是技術和架構本身帶來的安全性。
密碼學技術保障運算和存儲安全:黑客入侵是傳統軟件和系統非常頭疼的問題,但是,你聽說過有黑客入侵一條區塊鏈嗎?有黑客能夠為一個上線的智能合約植入木馬嗎?區塊鏈的驗證技術使得這些安全攻擊不可行,Bitcoin的一個交易一旦發生,Ethereum的一個合約一旦上鏈就不可篡改。Filecoin 的一份內容上線后任何時候檢索出來都保證沒有任何偏差。這些技術,是區塊鏈的基礎,也是天然地保證交易、計算和存儲的安全。
激勵機制導致攻擊成本高昂:區塊鏈世界歡迎任何形式的運算,因為本身區塊鏈世界就是開放的,你可以上傳自己的應用,有人用就好。按照傳統的觀點,這不是為病毒泛濫大開方便之門?不然,因為區塊鏈的經濟激勵機制使得病毒傳播和運行并不可行,因為每一個運算、每一份存儲都有定價,區塊鏈世界沒有免費的午餐。要傳播、要運行,那就付費。這從根本上解決了無阻礙傳播和攻擊的問題。
模塊重用提升安全:一條公鏈很重要的特性就是智能合約之間的相互調用,也就是說,你可以把一條鏈看成一臺計算機,而不是像Web2.0世界中網絡是聯通的,但實際上各種應用之間是割裂了。相似的程序實現相似的功能,但代碼各不相同,帶來無數的安全問題。而在區塊鏈世界中,已經經過驗證的合約和接口直接使用,使得應用的建立變得更簡單也更安全。試想,一個傳統的借貸系統需要多么復雜,會有多少的安全問題,然而,在區塊鏈世界,借用已經誕生的應用和模塊,你可以利用數百行代碼,構建復雜的應用,代碼量減少幾個數量級,安全問題也就更容易處理。
透明性和可追蹤性提升安全:也就是我們常說的 Availability/Transparency 和 Tracibility。如果一個應用的所有事物都被記錄,并能夠追蹤,其安全性就更容易把握。而這恰恰是區塊鏈的重要特性之一。
安全的另一個維度
In BlockChain We Trust
業界有無數的安全公司,從不同的角度來處理安全問題,提出了無數的安全方案和設想。但如果我們要真的安全,必然做顛覆式的思考。提升一個維度來看問題。
從另一個角度來看問題,你會發現,新的范式下,以前你看見的問題都不再是問題了,自然地被解決了。一些新的問題還會出現,但是角度完全不同了。
傳統的安全更注重個體,如何保障個體的安全從而保證網絡的安全,它基于的基礎是,網絡是由個體組成的,沒有個體就沒有網絡;而對于區塊鏈而言,網絡是基礎,運算、存儲、網絡鏈接等等不再依賴于哪一個個體,網絡就是網絡,每一個個體網絡構建的細胞,它基于的基礎是:網絡是一個整體,個體依賴網絡而存在。每一個個體都可以隨意進入或退出網絡,個體構成的整體更重要,這就如我們身體的細胞,每天在更新,但人還是那個人,我們的記憶,發展都是延續的。
有了這個理解,安全就是一個整體的設計。區塊鏈中密碼學技術的廣泛應用,所有事務和交易的強制驗證,代碼開源和共享,激勵機制的采用都在更上一個維度來建立一個更安全和更可信任的網絡。