由於“不可篡改”、歷史記錄和密碼驗證等特點, 區塊鏈以安全性而聞名。 但是, 研究者發現, 區塊鏈並不一定有看上去那麼安全。
安全問題, 有時候不僅僅是一個技術問題, 也是一個屁股(立場)問題。
為什麼區塊鏈是安全的?
區塊鏈的關鍵在於, 讓不同的人——尤其是互不信任的人, 能夠以一種安全、不會被輕易干涉的方式來共用有價值的資料。 這是因為區塊鏈以複雜的數學原理和創新的軟體規則來存儲資料,
要理解為什麼安全性是個問題, 首先要理解為什麼區塊鏈理論上是“安全”的。 比特幣是個很好的例子。 在比特幣的區塊鏈上, 共用的公共資料是每一筆比特幣交易的歷史, 也就是說實際上這是一本帳本。 這份帳本存儲在一個電腦網路上, 有無數的副本;網路上的這些電腦被稱作“節點”。 每當有人向帳本提出一次交易申請, 節點們要檢測這次交易是否有效——那個要付錢的人是否確實有錢。 其中的一部分節點會展開競爭, 將有效的交易打包成“區塊”, 並把它添加到之前的區塊構成的“鏈”上。 這些電腦的擁有者就被稱作“礦工”。 成功添加了新區塊的礦工會得到比特幣作為獎勵。
理論上,
這一密碼指紋, 被稱為一個雜湊(hash), 需要很多的計算時間和能源才能算出來。
最終的安全要素則是, 這些雜湊本身也構成了區塊鏈上的環節:每一個新區塊中都包含了在它產生之前的所有區塊的獨一無二的雜湊。 所以,如果你想逆向改變帳本上的一個條目,你不僅需要為這個條目所在的那個區塊算出一個新的雜湊,還要為這個區塊之後所有儲存了這個區塊的區塊們都算出新雜湊。而且你的速度要快,必須要在其他節點添加上一個新區塊之前完成這一切。所以,除非你的電腦比其他所有的節點加起來的算力都強(即使這樣也不能保證一定成功),否則你添加的區塊就會和現存的區塊衝突,其他的節點會自動拒絕你的更改。這就是為什麼說區塊鏈不受干涉,或者說“不可篡改”。
並非無懈可擊:創意百出的作弊方法
理論講得夠多了,要實踐理論則更難。一個系統即使像比特幣這樣運作(比如很多加密貨幣就是如此),也不意味著它真的就這麼安全。麻省理工學院數位貨幣小組的負責人Neha Narula說,即使開發者使用的是經過驗證的、可靠的加密工具,也很容易不小心以不安全的方式來使用、組合它們。比特幣是歷史最長的一個區塊鏈,它是身經百戰了。
人們已經發現了不少頗有創意的作弊辦法。康奈爾大學的Emin Gün Sirer和他的同事們向人們展示了,即使你的算力不足其他礦工的一半,也有辦法能夠顛覆整個區塊鏈。具體的技術細節不必提,不過本質而言,就是一個“自私的礦工”能夠欺騙其他節點去浪費時間算一些已經解決的問題,為自己謀好處。
還有一種方法則是“日蝕攻擊”。區塊鏈上的節點之間需要保持不間斷的通訊,這樣才能比對彼此的資料。一個控制了節點通訊的攻擊者能夠欺騙節點去接收假資料,從而讓節點去空耗資源或者去確認一些虛假的交易。
最後,無論一個區塊鏈協議多麼“不可干涉”,它都“不是存在於真空中的”,Sirer說。最近吸引了人們關注的那些加密貨幣攻擊事件通常都是發生在區塊鏈系統和現實世界相接的地方:比如說軟體客戶和協力廠商外掛程式。
比如說,攻擊者們可以黑進“熱錢包(hot wallet)”當中。持有加密貨幣的人如果想要花掉它們,就需要一個存儲自己持有的密碼key的應用,這個應用如果是聯網的,就叫做熱錢包。加密貨幣線上交易所的錢包是攻擊的首要對象。許多交易所都聲稱它們將大部分用戶的錢都存在“冷”的硬體錢包——也就是不聯網的存放裝置之中。但是,從一月日本Coincheck交易所那件損失達5億美元的加密貨幣攻擊案來看,它們說的不一定是真的。
區塊鏈和現實世界之間最複雜的接觸點可能就是“智慧合約”了,它是存儲在特定類型的區塊鏈上、能夠自動處理交易的電腦程式。在2016年,攻擊者利用了寫在乙太坊區塊鏈智慧合約中的一個漏洞,從去中心化自治組織(Decentralized Autonomous Organization,DAO,一種基於區塊鏈的新型投資基金)盜走了3600萬乙太坊,當時價值8000萬美元左右。
由於DAO的代碼生長在區塊鏈之中,乙太坊社區不得不實施了一次極具爭議的軟體升級來拿回這些錢,這次操作被稱作“硬分叉”。本質上是創造了一個新版本的歷史,在這一版的歷史中錢沒有被盜。研究者們現在仍然在開發新的方法,以確保智慧合約不會發生故障。
中心化問題:安全還是不安全,要看你是誰
區塊鏈系統一個理論上的安全保障是“去中心化”。如果區塊鏈的副本保存在一個龐大的分散式節點網路之中,那就不存在哪一個弱點可以攻擊;要積聚起足夠顛覆整個網路的算力也很難。但Sirer團隊最近的工作成果顯示,無論是比特幣還是乙太坊,可能都沒有你想像中那麼去中心化。他們發現,按系統每週的平均挖礦能力來看,最大的四個比特幣礦工已經具有了超過53%的算力。乙太坊則是前三大礦工擁有61%的算力。
有人說可以採納新的一致性協議,比如一些不依賴於挖礦能力的協議,可能會更加安全。但是這一假設還並沒有經過大規模的測試,而且新的協議可能又會存在新的問題。
還有一些人則寄希望于給區塊鏈加上准入機制,而不是像比特幣那樣,無論是誰,只要下載了挖礦軟體就能加入這個網路。對於那些反等級化的加密貨幣來說,這樣的系統簡直令人厭惡;但是對於一些只是想要剝削這門新技術利益的機構來說,這種方式顯得很有吸引力。
但是,有門檻的系統則提出了新的問題。誰有這個權威來發放許可?系統如何確保驗證者確為正身?對於系統的所有者來說,一個有門檻的系統可能讓他們覺得更安全;但是實際上,這只是給所有者更多的權力來控制這個系統,這也就意味著他們可以不管系統其它參與者的意願對系統做出改變。對於區塊鏈真正的信徒來說,這是對區塊鏈理念本身的違背。
最終,在區塊鏈的語境中,“安全”實際上很難定義。對誰安全?對什麼安全?Narula表示,“這取決於你自己的立場。”
所以,如果你想逆向改變帳本上的一個條目,你不僅需要為這個條目所在的那個區塊算出一個新的雜湊,還要為這個區塊之後所有儲存了這個區塊的區塊們都算出新雜湊。而且你的速度要快,必須要在其他節點添加上一個新區塊之前完成這一切。所以,除非你的電腦比其他所有的節點加起來的算力都強(即使這樣也不能保證一定成功),否則你添加的區塊就會和現存的區塊衝突,其他的節點會自動拒絕你的更改。這就是為什麼說區塊鏈不受干涉,或者說“不可篡改”。並非無懈可擊:創意百出的作弊方法
理論講得夠多了,要實踐理論則更難。一個系統即使像比特幣這樣運作(比如很多加密貨幣就是如此),也不意味著它真的就這麼安全。麻省理工學院數位貨幣小組的負責人Neha Narula說,即使開發者使用的是經過驗證的、可靠的加密工具,也很容易不小心以不安全的方式來使用、組合它們。比特幣是歷史最長的一個區塊鏈,它是身經百戰了。
人們已經發現了不少頗有創意的作弊辦法。康奈爾大學的Emin Gün Sirer和他的同事們向人們展示了,即使你的算力不足其他礦工的一半,也有辦法能夠顛覆整個區塊鏈。具體的技術細節不必提,不過本質而言,就是一個“自私的礦工”能夠欺騙其他節點去浪費時間算一些已經解決的問題,為自己謀好處。
還有一種方法則是“日蝕攻擊”。區塊鏈上的節點之間需要保持不間斷的通訊,這樣才能比對彼此的資料。一個控制了節點通訊的攻擊者能夠欺騙節點去接收假資料,從而讓節點去空耗資源或者去確認一些虛假的交易。
最後,無論一個區塊鏈協議多麼“不可干涉”,它都“不是存在於真空中的”,Sirer說。最近吸引了人們關注的那些加密貨幣攻擊事件通常都是發生在區塊鏈系統和現實世界相接的地方:比如說軟體客戶和協力廠商外掛程式。
比如說,攻擊者們可以黑進“熱錢包(hot wallet)”當中。持有加密貨幣的人如果想要花掉它們,就需要一個存儲自己持有的密碼key的應用,這個應用如果是聯網的,就叫做熱錢包。加密貨幣線上交易所的錢包是攻擊的首要對象。許多交易所都聲稱它們將大部分用戶的錢都存在“冷”的硬體錢包——也就是不聯網的存放裝置之中。但是,從一月日本Coincheck交易所那件損失達5億美元的加密貨幣攻擊案來看,它們說的不一定是真的。
區塊鏈和現實世界之間最複雜的接觸點可能就是“智慧合約”了,它是存儲在特定類型的區塊鏈上、能夠自動處理交易的電腦程式。在2016年,攻擊者利用了寫在乙太坊區塊鏈智慧合約中的一個漏洞,從去中心化自治組織(Decentralized Autonomous Organization,DAO,一種基於區塊鏈的新型投資基金)盜走了3600萬乙太坊,當時價值8000萬美元左右。
由於DAO的代碼生長在區塊鏈之中,乙太坊社區不得不實施了一次極具爭議的軟體升級來拿回這些錢,這次操作被稱作“硬分叉”。本質上是創造了一個新版本的歷史,在這一版的歷史中錢沒有被盜。研究者們現在仍然在開發新的方法,以確保智慧合約不會發生故障。
中心化問題:安全還是不安全,要看你是誰
區塊鏈系統一個理論上的安全保障是“去中心化”。如果區塊鏈的副本保存在一個龐大的分散式節點網路之中,那就不存在哪一個弱點可以攻擊;要積聚起足夠顛覆整個網路的算力也很難。但Sirer團隊最近的工作成果顯示,無論是比特幣還是乙太坊,可能都沒有你想像中那麼去中心化。他們發現,按系統每週的平均挖礦能力來看,最大的四個比特幣礦工已經具有了超過53%的算力。乙太坊則是前三大礦工擁有61%的算力。
有人說可以採納新的一致性協議,比如一些不依賴於挖礦能力的協議,可能會更加安全。但是這一假設還並沒有經過大規模的測試,而且新的協議可能又會存在新的問題。
還有一些人則寄希望于給區塊鏈加上准入機制,而不是像比特幣那樣,無論是誰,只要下載了挖礦軟體就能加入這個網路。對於那些反等級化的加密貨幣來說,這樣的系統簡直令人厭惡;但是對於一些只是想要剝削這門新技術利益的機構來說,這種方式顯得很有吸引力。
但是,有門檻的系統則提出了新的問題。誰有這個權威來發放許可?系統如何確保驗證者確為正身?對於系統的所有者來說,一個有門檻的系統可能讓他們覺得更安全;但是實際上,這只是給所有者更多的權力來控制這個系統,這也就意味著他們可以不管系統其它參與者的意願對系統做出改變。對於區塊鏈真正的信徒來說,這是對區塊鏈理念本身的違背。
最終,在區塊鏈的語境中,“安全”實際上很難定義。對誰安全?對什麼安全?Narula表示,“這取決於你自己的立場。”