“黑客”這個詞,相信大家再熟悉不過了。自從互聯網誕生以來,黑客就成了以高超手段盜取用戶信息的代名詞。

然而,現在黑客也越來越與時俱進了:美國甲骨文公司旗下的 PeopleSoft 軟件公司,不久前就發生了黑客襲擊事件。按照常理來說,一般用戶系統被侵入後,都會發生數據泄露。

數據泄露……咦,這怎麼聽起來有點像Facebook?

小扎:老子國會都道完歉了好嗎!你還有完沒完!

話說這黑客侵入系統以後,轉了一圈,竟然沒動數據!

啥情況?

緊接着,這個叫 PeopleSoft 的公司發現自己的電費突然開始猛增。原來,這名黑客利用這家公司的CPU挖了611 個門羅幣,價值22多萬美元!

這個“笑話”似乎告訴我們,未來世界最值錢的可能不是數據,而是算力哦!

看來,這傳統意義上的數據安全,在區塊鏈的世界要被重新定義了。那麼針對於區塊鏈,會存在哪些層面的安全問題?目前又有哪些可以解決得措施?

今天,小探請到了位於硅谷的丹華資本董事總經理 Judy Yan, 來給大家講講區塊鏈世界的安全問題。

區塊鏈:我招誰惹誰了?

話說區塊鏈自從出現以來,關於區塊鏈安全問題產生的奇葩故事就不少。除了交易所被盜,許多區塊鏈項目自身的 Bug 也層出不窮。作爲區塊鏈投資人的 Judy,對這些故事可謂如數家珍。

最著名的黑客攻擊事件要數The DAO。早在2016年,這個平臺被盜了高達1.5個億美金的ETH。攻擊者利用了遞歸調用 splitDAO 函數這一技術層面的漏洞,這起事件同時也暴露了智能合約安全性的早期缺陷。

而去年 Parity Multisig 電子錢包版本1.5+的漏洞被發現,使得攻擊者從三個高安全的多重簽名合約中竊取到超過15萬ETH(約3000萬美元)。而這個漏洞竟然是工程師一不小心在編程時寫了一個不閉合的函數。

而另一個項目 IOTA 前一階段被詬病大跌的原因是底層最關鍵的哈希加密函數不工作。

就在今年三月,BEC(美鏈)爆出 ERC20 協議安全漏洞,攻擊者利用整數溢出BUG,可無限生成代幣,直接導致BEC幣值跳水,幾乎歸零。

如此種種的事件的發生,讓人們不得不重新面對區塊鏈的安全問題。

據 Judy 回憶,菩提去年在 Qtum 上進行合約部署時,雖然當時有很多人質疑Qtum能不能上線(後來上線成功),合約部署是否會使得運行機制癱瘓等問題,但是Judy只問了菩提和量子一個最簡單問題:

用戶會不會丟幣?

這個問題聽着很簡單,實際上反映了所有區塊鏈都是建立在安全信任的基礎上,吞吐量等問題都可以被犧牲,慢慢改進;但如果丟幣,整個系統就不會再有人使用。

“安全,是唯一不能犧牲的因素。”

在Judy看來,公鏈的安全、智能合約的安全、雲安全這三個層面都是未來最值得關注的區塊鏈安全層面。

其實在做區塊鏈安全的項目有很多。比如:Zeppelin 是一個社區驅動項目,它構建了安全智能合約的開源架構,目的在於實現安全智能合約的開發。目前有很多優質的海外區塊鏈項目都採用了 Zeppelin 的智能合約安全服務

Quantstamp 是一家智能合約的安全審計平臺,而且還是爲數不多的、被 YC 錄取的區塊鏈公司哦!小探也在之前名爲《錯過了區塊鏈第一波淘金熱?這家公司“賣鏟子”被YC相中》的文章中介紹過。

區塊鏈公司 Axoni 不是一家專門做智能合約安全的公司。但他們最近也在專注與形式化驗證技術。開發了專門服務於形式化驗證的智能合約語言 Axlong。

其中,Certik 是一家用形式化驗證爲智能合約和區塊鏈應用提供安全性服務的公司。形式化應用?這個聽起來好像很有故事!在講故事之前,咱們先看看爲什麼智能合約和公鏈容易出現安全問題?

公鏈、智能合約的安全誰能承包?

我們先來看智能合約爲什麼容易出現安全問題。

第一,不可逆性:智能合約一旦發佈在區塊鏈上,合約的源代碼是無法被修改的。

第二,代碼開源:在平時不公開源代碼的情況下都能被黑客攻擊,更何況大多數區塊鏈項目的代碼都是開源的。開源只會讓黑客的攻擊將變得更加容易。

第三,成本高:如果將智能合約放在區塊鏈上進行不斷的安全測試,資產的不斷轉換會是一筆很大的開銷。

第四,思維設限:即使開發者會預想智能合約在哪些情況下會遭攻擊,再針對這些情景測試,但黑客的厲害之處在於,可以從程序員預想之外的路徑下手。

由於智能合約在安全上存在的這四個方面問題,從而導致區塊鏈上的數字資產很容易被黑客掠奪。

對於公鏈上產生的問題,Judy 用了一個清晰明瞭的比方來說明。

Judy 認爲,區塊鏈,尤其是在智能合約出現之後,是個兩層的結構。其中一層爲公鏈,在其上運行智能合約。 由於公鏈是一種開源的架構,智能合約的開發者每個人都可以在上面可以寫一段腳本。

然而,這也是問題存在的根源:由於每個開發者動能用,所以在公鏈上書寫腳本時,往往會帶來意想不到的“副作用”。

這是什麼意思呢?Judy 給小探舉了個例子:

“假如我要在以太坊上寫一個智能合約,我寫這段智能合約的目的是A,但是我並不會預料出當A完成時,同時會出現副作用B,而B很有可能會使得公鏈系統癱瘓掉。”

那有沒有辦法提前得知是否會出現副作用B而避免悲劇的發生呢?

還真有!Certik使用的形式化驗證就是目前解決這一問題的最佳方式。

什麼是形式化驗證呢?

根據 CertiK 聯合創始人顧榮輝教授的講述,形式化驗證(Formal Verification)就是:用邏輯語言來描述規範,通過嚴謹的數學推演來檢查給定的系統是否滿足要求。

簡而言之,形式化驗證的作用就是讓你只完成A的目的,而不會產生副作用B。

Judy認爲,對於形式化驗證,我們要從兩個維度來看。

在傳統維度上,形式化驗證是一個統計學的概率問題。

比如說,如果你能計算出在執行A目的時90%的可能性系統不會出問題,那麼對於一個手機應用APP的研發可能就足夠了。換句話說,傳統維度上大家只需要做“計算題”算出安全運行的概率就可以了。

但是在區塊鏈的世界,我們需要的,是確確實實 100% 地確定我們在執行A目的時,不會有副作用B產生,底層系統不會受到任何因素的影響。那麼顯然需要我們進行完備性驗證。

怎麼保證100%不會出錯呢?有兩種辦法:用人工檢查來證明, 或者用算法證明。目前雖然有許多做人工驗證的區塊鏈項目,但是耗時多,成本高 —— 畢竟在現在的人才市場上,有能力、有意願免費爲你檢查的白帽黑客很有限。

那麼算法證明又怎樣呢?我們來看看 CertiK 是怎麼做的。

具體來看,CertiK 的驗證過程體現了化整爲零的解題思想,將一個難以證明的大問題拆分爲許多容易證明的小問題,然後再將證明過的小問題重新組合回分解之前的較難的大問題,並且保證其中從端到端的正確性(end-to-end guarantees)。

在這個過程中,這些小問題都將發送給整個社區,社區的開發者們可以利用 CertiK 提供的方法,也可以運用自己的算法來證明這些問題。一旦某個問題通過多方獨立的開發者的驗證,那麼其便可以用來作爲建立其他理論的依據,從而形成互助協作的技術機制和良好的社區氛圍。

CertiK 背後的團隊陣容也十分強大:CertiK 的聯合創始人顧榮輝從清華大學本科畢業,耶魯大學的博士,現爲哥倫比亞大學計算機系助理教授。

另一位聯合創始人邵中,是形式化驗證的最有成就的科學家,耶魯大學計算機系的主任和 Thomas L. Kempner 冠名教授, 有 20 餘年的安全領域經驗。

未來:如何保證雲上的安全?

說完了如何保證公鏈和智能合約的安全,我們來看一看目前區塊鏈世界十分流行的雲安全。

在講雲安全之前,Judy首先從目前最炙手可熱的DPOS(delegated Proof of Stake) 講起。

我們都知道POW和POS是區塊鏈的兩種共識機制。那麼共識機制DPOS相比較於這兩種共識機制其特點如何呢?

首先,應用DPOS時,社區成員不必再同話語權極大的曠工打交道了,省了不少事。

其次,DPOS上的應用開發進度更快。雖然整個系統犧牲了“去中心化”,但是提高了scalability,從而讓DPOS公鏈上可以做出更多DAPP。

“DPOS在2018年的發展一定會更快,” Judy評論道。

然而這麼高效的系統,不是沒有問題。由於在DPOS上存在中心化的交易,交易所首先可能會成爲黑客們攻擊的對象。尤其是超級節點的存在,很可能最先成爲攻擊的靶子。而這些超級節點大多在雲服務器上運行(Cloud)。那麼對於整個平臺來說,如何保證雲安全就顯得格外重要了。

那麼有沒有什麼辦法可以保證雲安全?還真有!

小探認識的Infinity Stones就是一家給節點做安全維護的區塊鏈公司。

《復仇者聯盟3》開始上映,大家對Infinity Stone一定不陌生。這家公司做的也像漫威一樣炫酷!

更多精彩,敬請關注硅谷洞察官方網站(http://www.svinsight.com)

聲明:該文觀點僅代表作者本人,搜狐號系信息發佈平臺,搜狐僅提供信息存儲空間服務。
相關文章