區塊鏈技術有一個“不可能三角形“,就是高效低能、去中心化和安全性不可能同時做到最優。
這就有一個大問題了,去中心化是區塊鏈技術的核心價值,它是共識、不可篡改、可信的基礎,去中心化是區塊鏈價值觀中的第一原則。
在完全去中心化的系統中,如比特幣,效率一定是存在問題的,所以在更加商業化的eos等系統中,透過犧牲“去中心化”來提高效率,大家是不是記得360給eos上的那一課,看來不是“去中心化”和“效能”取得平衡就可以了,安全性成了對eos的一個重大挑戰。
所以,安全性是每一個區塊鏈系統都要面對的問題,不管是去中心化的比特幣,還是多中心化的eos,亦或是其他區塊鏈系統。
區塊鏈系統,是一個複雜的技術組合系統,不同技術層面都可能存在安全問題,在節點層,與傳統伺服器的安全防範措施相比,基礎公鏈系統中的每一個計算節點可以說都是“裸奔”的,就好像是銀行的銀庫和自己家的存錢櫃。每一個計算節點很容易受到各種非法攻擊。
在合約層,以太坊上的智慧合約,可能只是一段程式碼,存在很多潛在的漏洞,這些漏洞很容易被人利用,使用者在區塊鏈上的賬戶名需要公佈出來,透過使用者的賬戶名,很容易獲得使用者的賬戶的交易資訊和賬戶餘額,隱私問題也是個大問題。使用者的私鑰是唯一的,一旦丟失,就意味著資產的損失。
因此,區塊鏈系統是一個分散式系統,它增加了威脅和風險的可能,就係統本身而言,是降低了安全性而不是增加了安全性。
我們經常說區塊鏈系統的資料是安全的,是指資料儲存的安全,即作為一個全冗餘的系統,即使只有一個節點,資料仍然是存在的,同時,這些交易資料是不可篡改的,從這個角度,它是安全的。
那麼,對於區塊鏈系統的安全風險,如何進行防範呢?解決方案也是從不同角度出發的。
區塊鏈系統,首先是一個網際網路上的系統,傳統網際網路安全防範的措施,對區塊鏈系統也一樣適用。
對節點安全而言,節點加固的安全措施可以從物理層、網路層、系統層、使用者訪問層等不同角度進行加固,但這些措施是要提給加入網路的每一個節點的,操作難度是很大的,在公有云上執行節點,這些加固措施可以交給更為專業的雲服務商。
在合約安全層面,智慧合約的安全漏洞掃描和檢測是很重要的一個工作,這部分工作可以交給更加專業的合約漏洞檢測團隊來做,很多研究人員在利用形式化驗證來解決智慧合約的安全性問題,但形式化驗證技術的成熟性也需要保證,這並不是一件容易的事情。
校驗一個事件正確與否,並不需要驗證者重現整個事件,一筆比特幣轉帳交易合法與否,只要證明三件事:
第一、傳送的錢屬於傳送交易的人,
第二、傳送者傳送的金額等於接收者收到金額,
第三、傳送者的錢確實被銷燬了。
zcash 就是用這個思路實現了隱私交易,在資料交換的安全性方面,動態加密、多方安全計算等也是正在研究和應用的技術,既保護了資料安全,又能推進資料的應用;在使用者錢包端安全層面,私鑰保護加上各種kyc的驗證手法,就是為了保護好錢包的安全性。
魔高一尺,道高一丈,安全的問題是區塊鏈這樣的數字貨幣和數字資產系統首要解決的問題,沒有人能夠忍受賬戶資產的丟失或者被盜竊,這關係著區塊鏈應用能否進入尋常百姓家,雖然對區塊鏈技術提出更大的挑戰,但這一步是必須要夯實的,而且,區塊鏈安全本身也是區塊鏈的一個大產業和大市場。