程顯峰
以太坊安全事件仿佛還歷歷在目,區塊鏈頭頂的安全烏云也揮之不去。區塊鏈在為我們帶來技術變革的同時是不是也會帶來前所未有的挑戰?
區塊鏈是互聯網時代通往第二紀元——信任紀元的革命,這場技術海嘯必將徹底地顛覆未來金融的發展方向。區塊鏈當然可以用來記賬,但是其作用卻不局限于記賬。但所有技術最終都是哲學,區塊鏈也是一樣,任何科技都是一把雙刃劍,有光明的一面,也必將有黑暗的一面;有機遇,但是更會充滿挑戰。
新技術的發展必將面對風險,區塊鏈也一樣。只要擁有“51%”的算力就可以進行協議攻擊?性能問題將會極大限制區塊鏈的應用場景?智能合約是潘多拉魔盒,它的出現只是噩夢的開始?區塊鏈存在哪些安全隱患、技術風險,以及發展的瓶頸與陷入的困境。本文好似一盆冷水,能讓我們更加冷靜而理性地思考區塊鏈技術。
安全隱患
區塊鏈技術的安全隱患主要包含3方面:私鑰丟失、錯誤的實現和協議被攻擊。
秘鑰安全
區塊鏈技術的一大特點就是不可逆、不可偽造,但前提是私鑰是安全的。秘鑰安全問題看似老生常談,其實在區塊鏈世界里還有特別的意義。
與以往任何體系不同的是,私鑰是每個用戶自己生成并且自己負責保管的,理論上沒有第三方的參與,所以私鑰一旦丟失,便無法對賬戶的資產做任何操作。多重簽名某種程度上能解決一部分問題,但實施起來非常復雜,而且要設計與之相配套的秘鑰管理和使用體系。
對于普通大眾用戶,或沒有太多技術經驗的企業用戶,天然會覺得補私鑰可能和補身份證或者營業執照差不多,但事實上這根本就不可能,所以私鑰的安全非常重要。但遺憾的是國際通用的多因素認證體系實施得并不好。
多因素體系最常見的維度包括:
第一,知識,知識指的是密碼這類能被記憶的知識。
第二,資產,資產包括門禁卡、令牌、手機、密碼鍵盤、智能卡等。
第三,本征,本征包括指紋、虹膜、DNA、聲紋等。
使用一種維度因素的認證方式叫單因素認證,使用兩種的叫作雙因素認證。目前單因素認證早已經被業界認為是不安全的,所以國內基本和支付相關的應用除了密碼以外,至少還要發一個驗證碼給手機,這就是對手機這一資產的因素驗證。但進行大部分資產的因素驗證并不具有理論上要求的可信環境,或者稱之為終端安全,這大大提高了私鑰暴露的風險。比如,嚴格地說,大部分手機都不算可信的計算環境,但是因為太方便了,所以大家做了很多妥協。這在保護低價資產的時候還可以忍受,但使用區塊鏈的往往都是些重要的業務。
那么本征因素怎么樣呢?是不是三因素認證就會解決這個問題呢?
很遺憾,安全業界對使用本征因素存在非常多的爭議,主要的反對理由就是,本征類別的特征,大部分是生物特征,一旦泄露將很難更改。試想,一旦我們的指紋落入不法分子手里,我們將一生都會受其困擾,從以往的經驗來看,這種事情的大規模發生只是早晚的問題。
小結兩點:私鑰的補發與管理與區塊鏈的分布式是沖突的;私鑰的認證需要的可信的計算環境在很大程度上是缺失的。
錯誤的實現
即便是理論上很完備的算法,也會有各種實現上的錯誤。由于區塊鏈大量應用了各種密碼學技術,屬于算法高度密集工程,出現錯誤也在所難免。
歷史上這類事情有很多,比如NSA對RSA算法實現埋入缺陷,使其能夠輕松破解別人的加密信息。一旦爆發這種級別的漏洞,可以說區塊鏈整個大廈的基礎將轟然倒塌,不會有一個幸存者。即便我們樂觀一點,假設沒有人或機構存心搞鬼,也仍存在工程實現上的非主觀缺陷。比如OpenSSL的心臟滴血漏洞,相信有金融網站的人都經歷過這個事件。這還是世界上最優秀的算法工程師做的被最廣泛應用的加密算法庫。我們如何能相信未來區塊鏈使用這么多加密算法后還能獨善其身呢?
假設基礎類庫和服務都沒有問題,但能將其正確地整合到應用的中技術人員也是鳳毛麟角。比如blockchain.info被曝沒有正確生成隨機數,導致嚴重的安全問題;以太坊DAO合約漏洞致使業務還沒有開展的時候,準備的錢已經不見了。更加可怕的事實是,技術風險已經超過業務風險成為區塊鏈的主要風險。以往金融機構也是涉及業務風險和技術風險,雖然技術風險也很重要,機構也十分重視,但是整個體系的建設還是圍繞著防范業務風險展開。但是從區塊鏈現在最成熟的應用比特幣來說,目前比特幣交易所遭遇的最大的危機都來自于技術風險而不是業務風險。
曾經的世界最大交易所Mt.Gox的倒閉就是因為黑客攻擊導致巨額資產損失。就在最近,世界知名交易所Bitfinex也因為多重簽名缺陷導致12萬個比特幣(6800萬美元)的損失。所以我們有理由相信,未來,在區塊鏈上,這種技術風險的防范一定是流程中的重中之重。
協議被攻擊
比特幣成功與它強大的算力基礎分不開。目前其他的區塊鏈應用的算力都還與比特幣無法相比(目前1 600 000 000 Hash/s),其他區塊鏈應用難以有足夠的算力來保證系統的穩定性,理論上也越容易受到比如51%算力攻擊這樣的在基礎協議層面的攻擊。Krypton平臺最近就遭到這種攻擊,而且這種攻擊方法被認為是一個有效的攻擊以太坊的手段。這種事情并不是偶發,而是接連發生,如果“51%算力攻擊”蔓延下去,那么區塊鏈所標榜的“不可篡改”將不復存在,任何基于區塊鏈的信任應用都將土崩瓦解。除了這種已知的攻擊方法,我們預測,攻擊協議的其他手段也會層出不窮。由于區塊鏈本身的分布式特性導致其進行整體升級非常困難,所以一旦發現有效的攻擊手段,可能在很長的一段時間內,對區塊鏈系統都會造成持續不斷的負面影響,那將是一種難以徹底清除的夢魘。
生態圈不成熟
區塊鏈技術不能獨立于其他關聯技術而發展,這與云計算類似。亞馬遜的云計算大規模商用的時候已經有了數十個服務。區塊鏈目前還沒有完整的生態社區,雖然目前有很多非常強大的公司聯盟、開原組織的支持,但是生態體系的建設不是一朝一夕的事情。
電動汽車再好也得有充電樁,區塊鏈再好也得有一系列為其服務的基礎設施,比如適用于區塊鏈的數據庫和存儲方案,為區塊鏈加速的網絡服務,提高安全性的硬件密鑰的廣泛應用等。互聯網在20世紀70年代產生、90年代E-mail作為其第一個成功的應用被廣泛使用,期間經歷的時間比大部分人預想的都要長。構筑完善的生態系統,不但要求技術上的各種突破,也需要人們改變一些思維定式,這并不是那么容易的。
目前的區塊鏈應用,一張A4紙就基本能寫下所有的名字,當然,會有很多還在醞釀中、搜索不到的項目,但是這不妨礙說明這個生態還很小。嘗試當然可以,但是想要形成具有規模的生產力還不太現實。妄圖單點突破不切合工業社會后的社會分工協作的基本發展趨勢。當然,也有少數進展比較快的項目,比如IPFS,BigChainDB等。這些項目還處于非常早期的階段,能夠達到商用至少需要兩年以上的時間。
性能瓶頸
原來講區塊鏈可以低成本快速轉賬,但從比特幣的實際應用來看,性能實際上是困擾其發展的最大瓶頸。現在的比特幣交易只能達到每秒7筆交易,相對于VISA公布的每秒44萬筆交易相差實在太多。雖然也有些新的區塊鏈技術號稱能夠做到每秒幾萬筆交易,但基本都是基于實驗室環境或者不能進行大規模應用。
性能會極大地制約區塊鏈的應用場景。紐交所核心系統要求在每秒百萬級別,上證、深證在每秒幾十萬筆級別,物聯網要求在每秒幾千上萬級別,這也就是為什么現在國外的區塊鏈創新都圍繞在一些鑒定、存證等處理速度要求不高的場景。
目前市面充斥著各種性能評測報告,但多數都因沒有具體測試方法和實驗參數導致很難驗證,不得不說這是一個非常遺憾的事實。目前比特幣的交易網絡有大量交易需要等待5~6小時才能被確認,對于提升其性能的方法也存在很大的爭議。其根本原因就是在分布式、一致性保證的前提下,性能被犧牲掉。“多、快、好”的方案是不存在的,我們選擇了“多”(分布式)和“好”(一致性),就必須放棄“快”(性能)。由于性能瓶頸,導致比特幣轉賬費用持續攀升,不知道其他區塊鏈應用如何來應對這種問題。
智能合約困境
智能合約就是潘多拉魔盒,它的出現只是噩夢的開始。
現在的智能合約是圖靈完備的,也就是理論上它的計算能力和我們用的計算機是完全等價的,所以它會帶來非常大的好處,是區塊鏈質的飛躍,但同時也會帶來與之相對應的災難。比如計算機出現后出現了計算機病毒,智能合約理論上一樣存在智能合約病毒。這種病毒通過感染修改其他合約的方式來實現合約作者意圖之外的功用。(這不是科幻小說,相信這一天不久就會到來,其影響一定會遠遠超過計算機病毒。)
另外,智能合約很難與人的真實意圖完美對應,理論上也不存在這樣的系統。智能合約的編寫需要專門的技術,相信短時間內這方面的人才會非常短缺。由于智能合約在編寫上的困難性,會導致一批衍生機會,比如智能合約律師,負責驗證智能合約與法律的銜接問題,智能合約保險,一旦智能合約不能表達產權人的真實目的可以獲得一定的賠償。
正確性驗證與證明(validation and verfication),某種程度上能解決問題,但其缺點是不成熟,實施成本巨大,所以也有待新的技術突破。
現階段的智能合約有非常大的限制,就是升級非常困難。一旦發現合約漏洞,將很難通過升級的方式來解決問題。以太坊因為DAO事件,無奈采取硬分叉策略是大家都不愿意看到的。
現實的合同基本都有一條“未盡事宜協商解決”,那么智能合約的協商解決如何定義,如何同步就是問題了,目前開來智能合約在這方面還有很多值得研究和探討的問題。隨著這些問題的深入解決,預計智能合約也會變得非常復雜,甚至一般的程序員都很難理解。
本文作者系火幣網CTO。