區塊鏈技術資源分享
追尋中本聰先生的腳步
?

區塊鏈底層安全問題_苗知秋博士_白墨子安全實驗室_大萌資訊

區塊鏈分層架構

關于區塊鏈底層的層級劃分問題,尚無權威的國家或者國際標準,一直是眾說紛紜的。但通常都是細節上的小分歧,對于區塊鏈的基本架構,目前已經有比較統一的共識。一個典型的區塊鏈分層架構如下圖所示:

區塊鏈分層架構

這是一個廣義上的區塊鏈分層架構,最上層的“合約層”和“應用層”,嚴格意義上來說不算是區塊鏈底層。真正的區塊鏈底層我們認為應該到“共識層”或者“激勵層”為止,再往上應該算是區塊鏈的上層應用層面了,劃入底層是不太合適的。

下面我們從“數據層”、“網絡層”、“共識層”三個角度闡述區塊鏈底層的安全問題。

“數據層”是區塊鏈底層安全的核心

比特幣為代表的區塊鏈從誕生之初,主要就是以“分布式賬本”或“分布式數據庫”的形式被世人所認知的。

以分布式賬本為主的底層數據是區塊鏈安全運行的核心,區塊鏈底層安全工作的最終歸宿都是為了維護底層數據的安全、完整和無誤。只要底層賬本數據沒有問題,那么可以認為區塊鏈的安全是有基本保障的,相反,一旦底層數據出現錯誤,那么所有安全工作的成果都是差評。

“網絡層”是區塊鏈底層安全的基礎

從結構上來看,區塊鏈本質上是一個“分布式的P2P網絡”,所有節點之間的消息傳遞、數據同步全都依賴于P2P網絡的通信機制。這個網絡層一旦出現安全問題,則區塊鏈的安全基礎會被動搖,所以,我們說網絡層是區塊鏈安全的基礎。

區塊鏈底層的安全,一定要構建在一個強健、穩定的網絡基礎之上的。一旦網絡層出現問題,區塊鏈底層的安全將受到極大威脅。目前已出現多起瞄準網絡層發起的安全攻擊事件,比如面向以太坊的日蝕攻擊等。

日蝕攻擊(Eclipse Attack)是發生在網絡層的攻擊,由其它節點通過囤積和壟斷受害者的對等連接槽執行,從而導致該節點位于隔離網絡。這種類型的攻擊旨在通過阻止最新區塊鏈信息到達被遮蔽的節點從而實現隔離節點的目的。

共識層”是區塊鏈底層安全的關鍵

“共識”是區塊鏈技術的核心概念之一,前面提到過的底層賬本數據就是“共識的結果”。

底層賬本數據的重要性我們前面已經強調過,為了達成一個讓眾多節點公認的“正確的結果”,前提就是共識機制的安全性。區塊鏈底層數據由于各種安全機制的保護,難以被直接攻破,因此很多攻擊者將目光轉向產生底層數據的共識機制,企圖通過對共識機制的操縱,達到更改底層數據的目的。這也使得對共識層的安全防護日益重要,成為區塊鏈底層安全的關鍵所在。

區塊鏈底層安全性

我們知道,區塊鏈底層是支撐整個區塊鏈生態的關鍵性基礎設施。如果底層不安全,那么像轉賬、智能合約、包括最上層的應用等等這些,都會受到哪些具體影響?請白墨子解讀一下。

如果底層不安全,上層的安全將是沙上筑塔。

白墨子認為,區塊鏈底層的安全是整體安全的基礎,并且通常無法通過上層解決。如果區塊鏈底層不安全,那么像轉賬、智能合約、包括最上層的應用都將處于高風險之中。因為上層的各種應用,都是基于底層提供的各種基礎服務運行的,并通過底層傳輸各種數據。

底層的不安全,必將給上層帶來極大的安全風險。

有些安全風險在上層可以采取打補丁的辦法彌補,但是會造成應用的臃腫和復雜化;而有些安全風險是上層完全無法彌補的,只能從底層來解決。因此白墨子建議區塊鏈安全問題要著眼底層,這一點對于井通、墨客這樣的區塊鏈平臺公司來說尤為重要。

上面說的內容有些抽象,下面舉例說明。

比如,虛擬機自從被以太坊引入區塊鏈系統之后,已經成為區塊鏈底層不可或缺的基礎部件,由于虛擬機安全問題引發的區塊鏈安全事件層出不窮,這里面最典型的就是:由于虛擬機缺乏溢出檢測機制而導致計算溢出問題。

更進一步舉例,以太坊虛擬機EVM定義無符號整數為uint256,可以表示一個256位的大整數,但是底層的虛擬機模塊并沒有提供溢出的檢測機制,這樣如果使用不謹慎就造成了之前我們常見的溢出攻擊,比如最近很熱門的God.Game事件。

此外,“GAS費用較高者優先被打包進入區塊”的機制,理論上是為了讓區塊鏈更便于使用,激勵用戶為生態貢獻力量,但是在某些情況下會被攻擊者利用而成為安全漏洞,Fomo3D攻擊就是利用了這點發起大量消耗巨量gas的垃圾交易獲得了勝利。這也是由于底層不安全導致的上層應用安全風險案例。

系統安全是設計出來還是打補丁出來的

白墨子在第一講中,有個觀點:安全的錢包是設計出來的,而不是通過打補丁修改出來的。是否也同樣適用于區塊鏈底層?大家平時對諸如電腦端的Windows系統補丁、手機上的IOS或Android的升級等都習以為常了,區塊鏈底層也會發展成這樣嗎?

安全是一個沒有盡頭的事業,沒有一步到位的安全,也沒有百分百的安全。

“安全是設計出來的,而不是打補丁修改出來的?!?/p>

這里并不是把安全設計和安全補丁對立起來,這句話的主要意思是,安全需要從產品的設計之初就納入考慮范疇,從整體框架的設計上就要融入安全的思想,而不能一開始不管不顧,只管多拉快跑,妄圖事后再通過打補丁的方式提升安全水平。因為系統的基本設計一旦定型,遇到安全問題再打補丁不僅費時費力,而且很多問題已經無法在現有框架內解決,除非把整個系統推倒重來。

因此,安全設計是必須的,就像房子的地基一樣,如果地基都沒有建好,后面的安全機制都是空談。

安全設計是系統安全的基礎,是系統的先天體質,同時也是后續安全補丁的基礎。由于在設計之初不可能一步到位,同時由于安全環境的不斷變化,所以安全補丁也是必須的。

安全補丁是對初始設計的補充,是后天的增強,先天的安全設計和后天的安全補丁是相輔相成的,共同增強系統的安全能力。

電腦端的Windows系統和手機端的Android、IOS系統,隨著安全環境的變化都需要不斷地打補丁,但由于它們都是單機中心化系統,因此更新升級是非常方便的,一般都是在線升級,一鍵搞定。

進入區塊鏈時代之后,如果出現安全問題,依然需要通過打補丁的方式來解決,除非安全問題影響輕微可以放任不管。

區塊鏈時代最大的變化就是從中心化單機環境變成了去中心化的分布式環境。一個區塊鏈平臺經常涉及幾十萬甚至上百萬的節點,與傳統環境相比,更新升級的難度超出想象。一旦出現問題,需要更新整個網絡,讓每一個節點都打補丁,這個時間成本與經濟成本都較高。

分叉

在區塊鏈時代,網絡的更新升級有一個新的名詞,叫做“分叉”。這是因為區塊鏈平臺的更新是需要全網節點協調一直,才能完成更新任務。由于分布式環境的復雜性,有時候無法達成全員一致,這樣就會導致同一個網絡中運行不同的系統,這種不一致就是所謂的“分叉”。

區塊鏈的更新升級打補丁是一件非常麻煩的事情,升級之前的社區協商和動員工作就是一件極有挑戰性的工作,尤其涉及各種利益糾紛時,甚至是不可能完成的任務。鼎鼎大名的以太坊就發生分叉事件,統一的以太坊社區發生分裂,造成了ETC和ETH雙雄并立的局面,這對以太坊生態體系而言,不能不說是一個重大損失。

將來,區塊鏈平臺升級也有可能像游戲魔獸世界一樣,固定時間——每周或每月,所有節點全部統一打補丁。當然,鑒于區塊鏈平臺未來更新升級的繁瑣性和不確定性,白墨子強烈建議在設計階段充分考慮安全性,盡量少出問題,省時省力更省心。在這方面,比特幣是我們的楷模。

白墨子是否有底層安全設計的實際經驗或案例可供分享?未來白墨子也會做底層安全測評嗎?

作為墨客區塊鏈公司的信息安全部門,白墨子積極參與了墨客區塊鏈底層的實際設計和開發工作,同時也一直在為墨客和井通社區的技術開發人群提供安全檢測、建議和咨詢服務。

區塊鏈底層平臺的開發工作一度是一個熱點,大大小小的公鏈不下數百家。目前正慢慢從發散開始收斂,大致處于從“群雄逐鹿”到“問鼎中原”的路上。白墨子認為:

最終問鼎中原的王者,必將是安全性突出的區塊鏈平臺,而中途夭折的逐鹿群雄,將有相當比例是在安全問題上折戟沉沙。

區塊鏈底層的安全測評一直是白墨子的核心安全服務之一,目前一直在對井通和墨客平臺進行安全方面的檢測和測評。未來白墨子將發揮自己的專業優勢,繼續做好區塊鏈底層的安全測評工作,幫助區塊鏈產業的健康發展。

EOS安全問題

今年5月底的時候,出了一個熱點事件:360團隊在EOS主網即將上線之際,發布了EOS存在高危安全漏洞的消息,聲稱史詩級、價值超百億。EOS創始人BM卻回應稱漏洞是來源于第三方代碼庫而非EOS核心代碼,并暗指360借機炒作,引發了爭議。白墨子如何看待這一事件?是否在區塊鏈底層安全方面的具有里程碑意義?

就事論事的說,這件事屬于BM在狡辯和開脫。

打個比方,BM造了一輛汽車,命名為EOS,然后360作為安全檢測方來對這輛汽車進行安全檢測,發現這輛車的輪胎存在安全隱患,然后作為EOS汽車的制造方,BM振振有詞地說:這不關我的事,因為輪胎并不是我造的,這是輪胎公司的問題,EOS汽車是非常安全的,你這是炒作!

經過此事之后,市場對區塊鏈的安全有些重視,但是還沒有到特別重視的地步,因為大家都在比拼公鏈盡早上線,關注的重點是功能完備、性能優越,人只有存活下來,才會有高端的需求。

說到此事在區塊鏈安全方面的里程碑意義,我認為是言過其實了。區塊鏈安全領域的里程碑事件一般是一次次血淋淋的安全事故,這比任何公司的公告都更加發人深省,更富有說服力。正如血淋淋的事故現場對駕駛員的教育意義和心靈上的觸動超過一千次照本宣科的交規宣講,真正教育市場、警醒業界的也主要是現實中一次次的安全事件,血淋淋的現實是最有說服力的。

還是那句老話:現實專治各種不服。

比特幣安全問題

比特幣從2009年問世到現在,基本一直穩定運行,沒出過什么大問題。它的底層安全性和其他底層相比,有什么獨特優勢嗎?比特幣底層不適合大規模商用,是不是意味著安全性和商用性之間存在著矛盾?其他底層該如何吸取或借鑒比特幣底層的安全經驗?

說到比特幣平臺的安全性,不得不提起比特幣的創始人中本聰大神。

與隨后的多家區塊鏈平臺相比,比特幣平臺的一大特色是創始人中本聰是安全人員出身(雖然中本聰的現實身份一直存疑,但從他活躍的社區和之前的發言,可以斷定他有深厚的安全背景,這一點無疑),因此比特幣在設計之初對安全考慮得非常全面、設計得非常周到,甚至很多地方為了安全舍棄了很多非核心的功能。

舉個小例子,實現比特幣平臺,不可避免地要用到大量的密碼算法及其算法庫。江湖傳言,現在網絡上公開的相當比例的密碼學相關開源算法庫,都有NSA(National Security Agency,美國國家安全局)內置的后門,但中本大神選擇的算法庫,正好完美地避開了NSA的陷阱,這難道只是一個巧合嗎?我們更相信這是中本聰舉手投足之間展露的安全大師的風范。此處可以對照前述BM關于EOS安全事件的辯解來看,孰高孰低,一目了然。

同時,作為一名老資格的安全專家,中本聰非常明白“越簡單越安全,越復雜越危險”的道理,他為此不惜削減了大量周邊功能,包括將比特幣底層功能限制于轉賬等基本指令,而沒有采用后來以太坊采用的圖靈完備的指令體系,心無旁騖,專注于基于區塊鏈技術實現電子現金系統的這一核心目標。

共識機制上比特幣采用了最簡單也最費力的POW機制。

所有這一切,都極大限制了比特幣的應用場景,但也給比特幣帶來了無與倫比的安全性。

比特幣平臺是自出現以來安全事件最少見、安全補丁打得最少的區塊鏈平臺,作為第一代區塊鏈平臺,用戶可能對比特幣平臺有這樣那樣的不滿,但對比特幣平臺的安全能力從來是非常信賴的,而比特幣平臺也確實沒有辜負用戶的信賴。這也是白墨子一直倡導的核心安全理念:“安全的系統是設計出來的,而不是打補丁修改出來的”。

比特幣不適合商用并不意味著安全性和商用性之間存在矛盾,而是與比特幣的核心定位有關。

中本聰從設計之初對比特幣的定位就是一個安全可靠的電子貨幣系統,從這一點上來看,比特幣完美實現了這一目標。在有的外貿公司,比特幣已經成為貿易結算的選項之一,實現了遠超過正常外匯結算的結算效率,解決了許多外貿公司的痛點問題。

由于商用場景的復雜性,比特幣這樣單一的區塊鏈平臺無法滿足其需求,因此需要像以太坊、MOAC等這樣的區塊鏈2.0/3.0/4.0等平臺的不斷演進。演進過程中,需要同時關注平臺的安全性和商用的便利性,找到這兩者之間的平衡點,不可偏廢。

在安全方面,比特幣已經成為很多區塊鏈平臺的榜樣;而在商業應用方面,則需要根據具體的應用場景、核心需求,和區塊鏈的技術優勢相結合,實現商業應用和安全性的平衡。

總結比特幣平臺在安全方面的成功經驗,我們認為主要有以下幾點:

  1. 系統設計之初即融入安全思想,為區塊鏈平臺先天注入安全基因;
  2. “如無必要,勿增實體”的奧卡姆剃刀定律,不在核心目標之外做畫蛇添足的事;
  3. 涉及到核心安全方案時,要慎重取巧,甚至寧拙勿巧;

“在繼承中創新,在創新中發展”,白墨子認為這應當是我們面對比特幣這一區塊鏈技術老前輩的正確態度。如果中本聰大神還在,我想他會向我們這些區塊鏈領域的后進生們說:“學我者生,似我者死?!?/p>

白墨子安全實驗室

分享到:更多 ()
0
區塊鏈神吐槽
pi幣注冊流程教程圖解中文版

來評論吐槽 搶沙發

評論前必須登錄!

 

區塊鏈資源分享聯系我

區塊鏈資源分享聯系我首頁更多新聞
做滴滴代驾还是开滴滴那个赚钱