前段時間,在加密貨幣領域出現了一件重要的攻擊事件。以太坊經典(ETC)在1月8號遭遇到了51%算力的雙花攻擊,根據不一樣的計算口徑,那次攻擊形成了數十到上百萬美圓的損失。這是攻擊者首次成功實現針對排名靠前的主流密碼貨幣的51%算力攻擊,相對於這些可計算的現實損失,當前加密貨幣背後所面臨的深層次安全問題更加值得關注。算法
目前以比特幣(Bitcoin)爲表明的大多數密碼數字貨幣採用基於工做量證實(Proof of Work, PoW)的共識協議,參與工做量證實的礦工經過計算產生新的區塊使得區塊鏈不斷增加。因爲區塊鏈是一個無中心的系統,任何人均可以嘗試從任何位置產生新的區塊。若是攻擊者掌握的計算資源比較少,則攻擊者生成的新的分叉增加速度就慢於公開的區塊鏈的增加速度,所以不會造成被誠實用戶所接受的長分叉。可是若是攻擊者掌握了超過誠實用戶的計算資源,則攻擊者所生成的新的分叉增加速度就會快於公開的區塊鏈的增加速度,他很容易造成一個新的更長的區塊鏈分支取代公開的最長區塊鏈。具體過程參見圖1與圖2。安全
圖1.攻擊者算力較少
圖2. 攻擊者算力佔優網絡
攻擊者的計算資源佔優,簡單的數學描述就是攻擊者掌握了超過51%的計算能力,這也是51%算力攻擊名稱的由來。當攻擊者掌握了51%以上的計算資源,他的攻擊行爲必定可以成功。事實上,當攻擊者掌握足夠比例的計算資源,例如40%,若是以6個區塊做爲確認長度,他就能以比較大的機率成功實現分叉的攻擊。app
一旦成功實施51%算力攻擊,區塊鏈就會發生最長鏈的切換,帶來的後果是已經在區塊上獲得確認的交易數據可能會被擦除。若是這種攻擊是有意構造的,則攻擊者能夠撤回已經在區塊上獲得確認的高額交易數據,進而使得這部分數字貨幣能夠從新使用。這種攻擊也就是咱們常說的雙花攻擊,顯然這種攻擊行爲嚴重破壞了密碼數字貨幣的安全性和公信力。分佈式
與通常的網絡安全攻擊不一樣,51%算力攻擊是早已爲人所知的攻擊方法,此次攻擊者的整個攻擊行爲與流程並無任何的新意。區塊鏈
通常而言,基於PoW的密碼貨幣系統總體算力越強,控制其中51%的算力所須要的成本越高。因爲大多數PoW算法具備類似的核心計算結構,算力能夠容易地在不一樣密碼貨幣直接切換,甚至出現了可按照時間方便租賃的算力資源。網站
Crypto51(https://www.crypto51.app/)統計計算了針對不一樣數字貨幣進行1小時51%攻擊所要花費的成本(不計區塊獎勵)以及能夠從NiceHash借用的算力比例。其中針對ETC進行1小時51%攻擊只須要花費5116美圓,且能夠從NiceHash中租借到80%的算力(該數據持續變化,能夠到該網站查看實時數據),可見該攻擊發生的可能性是不能夠忽略的。加密
另一個不容忽略的因素是,PoW算法須要依賴大量的能源驅動挖礦運算。當密碼貨幣市場價值低於挖礦收益時,因爲利益的驅動礦機將會關閉中止挖礦。此時會引發全網算力的急劇降低,這將使得51%攻擊更加容易實現。此次針對ETC實施的51%攻擊正是利用了這個時機。而對於新出現的基於PoW的密碼貨幣而言,因爲全網的算力較低,所以攻擊成本更低。
ETH遭受51%攻擊的可能性要小於ETC,由於ETH與ETC使用相同的挖礦算法,但ETH的全網算力大約是ETC的20倍。雖然如此,Ethereum的創始人Vitalik在這次攻擊事件發生以後依然發聲說這次事件證實了他準備從PoW轉向PoS的決定是正確的。spa
毫無疑問,在過去的10年中,以比特幣爲表明的加密數字貨幣取得了巨大的成功,其安全性也獲得了實際運行網絡的檢驗。不只如此,密碼學家從理論上也證實了基於PoW區塊鏈的安全性。人們相信,數學是區塊鏈安全的基石,也就是所謂的In Math We Trust。可是近年來的技術發展和研究代表,基於PoW的區塊鏈也有安全隱患。設計
上面的分析代表了,PoW區塊鏈的安全性並非構建在數學基礎之上的,數學僅僅是物理資源和區塊鏈之間的粘合劑。一旦物理資源的安全性假設不成立,區塊鏈系統的安全性均會受到威脅。
從系統層面看,基於PoW的區塊鏈依靠算力競爭來選取區塊的生產者也就是記帳人。算力對於區塊鏈生態系統自己來講是屬於外部資源,也就是說當前鏈上所存有的價值與其目前礦工持有的算力並沒有關係。算力的多少就成爲了發起攻擊的惟一因素,若是採起自私挖礦等策略,能夠在沒有達到51%算力的狀況下對當前公有鏈進行攻擊產生雙花。所以,在PoW區塊鏈系統中,外來的攻擊者能夠經過投資計算資源威脅到數字貨幣已有的價值體系。因爲現有的PoW算法高度同質化,大量的計算資源能夠在系統內用戶徹底不知曉的狀況下注入進來,這個過程甚至能夠不涉及任何生態系統中已有的任何用戶。借用《三體》中的一句話「我消滅你,與你無關。」
近年來,愈來愈多的區塊鏈系統以及分佈式共識協議被提了出來。其中一個重要的方向是基於權益的共識(Proof of Stake, PoS)。PoS的提出在最初主要是爲了解決PoW存在能源消耗的問題。PoS與PoW的本質目的是相同的,都是爲了在區塊鏈網絡的參與節點中隨機選出一個節點來記帳。「隨機」看似是一個很簡單的詞,它意味着公平、不可預測、不受惡意節點控制,可是在一個去中心化的網絡中是很難作到的,由於不存在一位上帝來擲骰子。PoW的隨機原則是擁有的算力越多越有可能成爲記帳人,PoS的隨機原則是擁有的stake越多越有可能成爲記帳人,看起來這二者很類似,只是用來選舉的「憑證」不一樣,可是針對二者的設計以及其所面臨的攻擊卻有很大的區別。
PoS依靠stake來選取記帳人,參與選舉的人所擁有的stake都被記錄在區塊鏈上,stake佔比也是指持有的stake佔區塊鏈上stake總數的比例。對於PoS要想進行51%攻擊,須要持有鏈上51%的stake,而stake的獲取只有從已有用戶手中購買而沒法在系統外投資生產。所以對PoS系統發起51%攻擊的成本等於其從市場購買stake的成本。
以ETC爲例,目前ETC的發行總量是107,514,088 ETC,若該共識算法是PoS,那對其進行51%攻擊須要持有53,747,044 ETC,摺合市值約229,542,578美圓,而在PoW狀況下經過租用算力僅需5000美圓左右。其餘數字貨幣針對PoS 51%攻擊所需資金與針對PoW進行1小時的51%攻擊花費的對好比下表所示(數據來自Crypto51https://www.crypto51.app/,數據會實時變更,如下數據取於筆者寫稿時)。而且在合法鏈上持有stake越多的人越傾向於維護該鏈,若將stake轉移租用給攻擊者,其面臨的風險要遠遠大於租用算力,所以攻擊者也難以經過租用得到足夠多的stake。因此就51%攻擊而言,PoS比PoW更有優點。這也是ETH要演進爲PoS共識的重要緣由。
(表中數據來自Crypto51https://www.crypto51.app/,數據會實時變更,以上數據取於筆者寫稿時)
總而言之,相對於PoW來講,PoS最大的優勢有兩點,一個是能夠避免能源浪費,同時也下降了節點參與共識的成本,另外一個是它提升了產生51%攻擊的門檻,在當前算力集中的形勢下,PoS相對於PoW來講更加安全。可是,就如一些全網算力較小的新興數字貨幣同樣,以PoS爲共識算法的數字貨幣在初始階段也易受51%攻擊,由於初始時鏈上stake總量較小,發生51%攻擊所需的資金相應也比較少,因此須要在初始啓動的時候增強安全防禦,提早準備好應對策略。
相比於PoW已經在多個區塊鏈項目中獲得了成功的應用,PoS共識協議目前尚未獲得大規模的應用,所以很多人對PoS共識協議存在各類擔心。咱們在此針對PoS可能存在的攻擊與弱點逐一進行分析。
PoS新鏈冷啓動不安全
一個觀點是,因爲PoS系統的共識節點是由Token所肯定的,所以PoS系統的控制權屬於少許的早期參與者,這些壟斷者可能爲了得到超額利益而做惡甚至不惜破壞整個系統實現雙花等攻擊。在實際中這些擔憂是不存在的,理由以下:
a) 目前區塊鏈的生態發展已經較爲成熟,新的區塊鏈主鏈上線前每每通過了多輪的募資活動,所以即使是創始團隊也不可能控制過多的Token份額。而且理性的團隊也不會追求對份額的過多控制,只有Token足夠分散系統纔有安全性。
b) 在PoS系統中,Token的擁有者的權益徹底體如今Token的價值中。引發有更大的動力維護系統的安全,所以更加不容易參與惡意行動。而在PoW系統中,攻擊者實施攻擊獲取短時間利益後可將算力等硬件投資轉移到其餘區塊鏈系統中,所以採起惡意行爲的可能性更高。
c) 在新區塊鏈的啓動階段,若是採用PoW協議,外部的計算資源能夠不受控制的涌入系統中。此時因爲全系統總算力不高,攻擊者利用較少的資源便可完成攻擊,所以PoW區塊鏈的冷啓動階段更加不安全。事實上,除了比特幣、以太坊等已經彙集了大量算力的PoW區塊鏈,新產生的區塊鏈均面臨此問題。前一階段BCH分叉帶來的算力競爭就體現了新鏈啓動的危險性,爲了不被攻擊每每是中心化的礦池來維持早期的安全性,所以集中化程度比PoS更高。
a) 在任何經濟系統中都會出現財富集中化現象,在PoS系統中並無更嚴重。已有的經濟學研究代表,即使在最公平的經濟系統中也會出現財富集中現象。咱們常說的財富二八分配現象正式財富集中現象的體現。PoS系統的初始Token分配比大多數成爲巨無霸的上市公司在初始階段的股權分配更加分散與透明。
b) 只要提供了公平透明的交易環境,財富集中化現象並不會無限放大無需擔憂。若是Token可以在二級市場自由流通,Token天然會獲得一個市場公允的價格估值。若是得到了足夠的利益吸引,原始投資者也會拋售獲利;若是對系統前景看好,後來的投資者也會理性購買。所以徹底不用擔憂後來者買不到,或財富徹底集中化。
實際上,因爲參與PoW系統挖礦須要大量的硬件投資與電力投入,零散的參與者從成本上看遠遠不如大型的礦池,在幣價市場波動的時候每每也是規模小的挖礦者首先退出,所以在PoW系統中財富和算力的集中化會更加明顯。
Nothing-at-Stake是指在PoS系統中,因爲嘗試產生一個區塊並不會消耗大量的硬件資源,因此攻擊者能夠不遵照協議而在不一樣的區塊後面都嘗試產生新的區塊。這給咱們一個明確的直覺,PoS系統更容易產生分叉。可是設計良好的PoS系統徹底能夠抵抗Nothing at Stake攻擊。
論文[1]給出了一種全新的PoS協議iChing,此協議是相似PoW的競爭性共識協議。論文對Greedy Attack(基於Nothing-at-Stake的一種攻擊策略)進行了理論分析,結果代表攻擊者貪婪地嘗試在鏈的任意位置進行擴展確實會讓攻擊者得利,可是其獲利並非無限大的。其表如今若攻擊者與誠實節點持有相同佔比的stake,攻擊者產生的鏈的增加速度最多會達到誠實鏈的e倍,所以PoS所能容忍的惡意stake比例不超過30%。針對這種狀況,論文給出了一種應對策略,在鼓勵誠實節點適度貪心的策略下,所能容忍的惡意stake比例能達到43%以上。所以Nothing at Stake並非一種不能克服的攻擊行爲。
Long-Range攻擊是指攻擊者經過長期的時間積累對PoS系統進行攻擊的手段,其具體的表現形式可能各有不一樣。最直接的Long-Range攻擊是攻擊者蒐集或者購買在過去的某個時間點有效的大量stake帳戶,從而從較早的時間點開始發起分叉。論文[2]中提出了一種屬於Long-Range的攻擊策略,叫作Stake-Bleeding攻擊。在這個攻擊中,攻擊者經過長時間隱祕的分叉挖礦,積累足夠多的獎勵token後發起分叉攻擊。
論文中對Long-Range的攻擊手段作了分類總結,整體而言Long-Range攻擊須要較長時間的準備以及運行才能實施。針對這個特色Long-Range能夠採用相應的技術手段加以免或者消除,其中包括設立按期的檢測點(check points)。事實上,爲了提升區塊鏈的驗證速度,檢測點技術在PoW區塊鏈中也常常被採用。所以Long-Range攻擊對真實的PoS區塊鏈系統並不能產生嚴重威脅。
爲了支持更多的實際應用落地,區塊鏈除了要知足安全、去中心化的基本特性要求,還要解決吞吐率不高、確認時延長等問題。
吞吐率低主要是因爲區塊鏈的傳統單鏈結構以及網絡傳輸延遲致使的,所以近來提出的DAG結構、交易打包方式、交易分片處理方式均是爲了提升區塊鏈吞吐率而作的研究。
確認時延長是競爭類區塊鏈共識算法都具備的問題,針對此問題能夠經過在上層疊加快速確認協議加以改善。
咱們認爲下一代區塊鏈必須知足如下特色才能真正支持安全、高效、靈活的應用落地:
Reference
[1] Fan L, Zhou H S. iChing: A Scalable Proof-of-Stake Blockchain in the Open Setting. https://eprint.iacr.org/2017/...[2] Gaži P, Kiayias A, Russell A. Stake-bleeding attacks on proof-of-stake blockchains. 2018 Crypto Valley Conference on Blockchain Technology (CVCBT). IEEE, 2018: 85-92