51%攻擊會增加ETH的價值?看Vitalik如何解釋Casper FFG的安全性

買賣虛擬貨幣

針對Casper FFG共識協議的安全性問題,以太坊聯合創始人Vitalik撰文表示:“(注:在以太坊應用Casper FFG共識協議後),無論哪種情況,51%攻擊對於(以太坊)社羣來說都是一個歡樂的時刻,因為想要造成1天或1周的破壞,攻擊者被消耗的ETH將是以年總產量為代價的,這反過來會增加ETH的價值,從而使未來的攻擊變得更為昂貴。”

(譯者注:Casper FFG是以太坊2.0在階段0將會採用的共識機制)

以下是譯文:

對共識系統執行51%攻擊的成本雖然很大,但它並非是無限的,因此51%攻擊的風險始終存在。此外,如果攻擊成功,想要在“協議內”實現恢復是非常困難的,而且往往是不可能的。在工作量證明(PoW)系統中,成功的51%攻擊是有利可圖的,因此攻擊可無限迴圈進行,而針對ASIC工作量證明(PoW)系統的攻擊,可變得更便宜。而在權益證明(PoS)系統中,成功的51%攻擊可阻止新的存款。

這些事實告訴我們,必須要有一個連貫的策略來應對51%攻擊,使得鏈能夠恢復正常執行。這種策略不會經常使用,它的存在也許足以阻止攻擊,因此其存在是需要的。正如我們將看到的,基於存款的PoS在一定程度上是高度安全的,因為任何51%攻擊,都會給攻擊者帶來極高的經濟損失。

最終確定性逆轉攻擊

最終確定性逆轉(Finality reversion)是目前為止被談論最多的一類51%攻擊,而在PoS系統中,這是最容易被處理的一種攻擊。

很容易處理的原因是,它正是Casper FFG的“經濟最終確定性”機制的設計初衷:BFT最終確定性的整個要點是,要最終確定兩個衝突的區塊,必須有一個a ≥ 1/3 ∗ |V| 相交驗證者(intersection)集( |V|作為活躍驗證者集的大小)簽署了兩條互相矛盾的訊息,因此可在兩條鏈上進行罰沒(slash)操作。

注意,客戶端實現的分叉選擇規則會阻止逆轉已完成的區塊。因此,如果在上面的場景中,上面的鏈是在下面的鏈之前完成,那麼線上客戶端都將停留在上面的鏈上。只有離線客戶端在返回線上狀態時才會看到兩個供選擇的鏈。因此,離線客戶端需要聯絡社羣(或者稱為“社羣層”或“附加協議恢復”),以詢問哪條鏈是合法的。我們稱之為一個次要的附加協議負擔(minor extra-protocol burden):線上節點有一個自然而然的正確選擇,只有少數幾個節點需要詢問已經達成的共識。

更困難的情況是兩條鏈同時完成:攻擊者需要嚴重操縱網路(當然是有可能的!),一次成功的攻擊需控制超過1/3 ∗ |V|,至少1/2 ∗ |V|,甚至可能需要2/3 ∗ |V|。此外,客戶端在一個區塊完成後會等待1分鐘,然後才將該區塊中的交易顯示為已完成,這將使得此類攻擊在實際執行雙花攻擊時的用處大大降低。然而,這種雙終結性攻擊仍然可用來造成混亂。

從這種攻擊中恢復的最簡單方法:使用者選擇支援LMD GHOST分叉規則的鏈,只考慮未被罰沒的驗證者。然而,在一種邊界情況下,鏈A贏得了LMD GHOST分叉選擇規則,但鏈B稍早完成,這就會出現無法確定哪條鏈應占主導地位的情況。

因此,一個願意且能夠同時完成兩個鏈的攻擊者,可要求社羣聚集在一起,任意選擇一條鏈或另一條鏈(我們可稱之為一個主要的額外協議負擔(major extra-protocol burden)),儘管代價對攻擊者而言是非常高的。

無論哪種情況,攻擊者被罰沒的驗證者都應該≥ 1/3 ∗ |V|,這將導致數百萬以太幣的懲罰。因此,攻擊者可能會中斷交易,並要求社羣進行商議,以及讓使用者手動更新其客戶端,但代價會是極高的,這使得此類攻擊的發生非常困難,而且非常罕見。

驗證者審查攻擊

另一種更困難的51%攻擊是審查攻擊。交易審查並不是一個大問題,因為我們假設最終會有一個友好的驗證者會將任何給定的交易打包到一個區塊中。相反,我們更關注的是驗證者的審查。驗證者的審查可能會有很多原因,而最可能的兩個原因是(i)審查那些拒絕合作的驗證者,以及(ii)阻攔攻擊(discouragement attack)。

審查是更為棘手的,因為沒有“罰沒條件”可以檢測到它:審查的本質是,不包含你想要包含資訊的行為。事實上,從不線上的任何驗證者或客戶端的角度來看,A 審查B,和B不與A交談是不可區分的(這有時被稱為說話人-聽話人故障等效問題),瞭解有關此的更多資訊,請參閱 https://vitalik.ca/general/2017/07/16/triangle_of_harm.html

然而,線上節點是可以檢測到審查行為的,因此,我們面臨的挑戰是處理“邊界條件”,並確定何時審查是足夠糟糕的,以至於協議外干預及處理不可避免出現邊界條件的挑戰,是值得的。

讓我們區分兩個案例:首先是,審查集大於1/3 ∗ |V|,也就是說,介於1/2和2/3的驗證者正在審查另一部分,並在這些驗證者無法包含其訊息的地方建立一條鏈。因為少於2/3的驗證者在同一條鏈上,沒有區塊會被最終確定,在攻擊者的鏈上,攻擊者沒有損失任何金錢(但也沒有獲得任何回報),但受害者會損失他們大部分的存款。

受害者唯一的求助渠道是一個“少數派軟分叉”(minority soft fork),然後將審查鏈列入黑名單,並繼續在自己的鏈上工作。這種“少數派軟分叉”可自動化進行:如果一條鏈不接受你的證明,在fork選擇中會自動取消其優先順序,最終它將不再顯示為主導。

攻擊者將無法加入兩條鏈,因為在每個epoch週期中,每個驗證者只能選擇一條鏈參與,否則它們將遭到罰沒。最終,兩條分叉鏈都將完成一個區塊並恢復正常,在少數鏈上,攻擊者將損失其存款的很大一部分(至少一半)。

一個聰明的少數派群體,甚至可等到攻擊者的鏈證明一個新區塊,然後,少數派 可開始建立他們自己的鏈,如果他們這樣做了,攻擊者在不承受NO_SURROUND罰沒條件的情況下,將無法加入少數派的鏈。

而如果攻擊者沒有加入少數派鏈,他們將損失約一半的存款。

現在,讓我們考慮第二個案例,這個案例會比較溫和。攻擊者需控制2/3 ∗ |V|的驗證者集,並審查剩餘<1/3 ∗ |V|的驗證者集,或者攻擊者執行上述攻擊,但方式要更為溫和(每十個區塊完成一次攻擊)。在這種情況下,有兩種解決方案。首先,可嘗試協調外部代幣持有者加入和解封驗證者。如果攻擊鏈拒絕了他們的存款,那麼這個事實將對所有人都是可見的,並將崩潰成與前一個案例相同的場景。第二,仍然可協調少數派軟分叉,阻止攻擊者使用上述技術加入少數鏈。

請注意,這兩種技術,都依賴於誠實的少數人之間某種形式的協調,以確定值得拉黑的鏈是什麼。人們可簡單地依靠社羣層(social layer)來實現這一點,即使社羣層做出不利於攻擊者的決定,也會使得期望中的攻擊代價變得高昂。

另外,我們可想象創造工具來協助協調。一個簡單的例子是這裡提出的99%容錯共識提議:https://vitalik.ca/general/2018/08/07/99_fault_tolerant.html ,其可以在網路延遲相當低的線上節點之間建立共識。

總結

在最終確定性逆轉攻擊的情況下,我們已經知道攻擊者可能會遭到罰沒,因此攻擊可能會是非常昂貴的(懲罰將是數百萬ETH)。而試圖控制區塊的建立,以便在攻擊後在哪條鏈上繼續進行額外的協議協調攻擊,其代價會更加高昂。相比之下,審查攻擊會更具挑戰性,因為如果社羣沒有反應,它們會“預設”成功並造成傷害(儘管客戶端可實現拒絕審查似乎過多的鏈),而這種攻擊可透過協議外的“少數派軟分叉”共識解決,該“少數派軟分叉”巧妙地使用了NO_SURROUND罰沒條件,將注意力集中在攻擊者無法合法加入的鏈上。

無論哪種情況,51%攻擊對於(以太坊)社羣來說都是一個歡樂的時刻,因為想要造成1天或1周的破壞,攻擊者被消耗的ETH將是以年總產量為代價的,這反過來會增加ETH的價值,從而使未來的攻擊變得更為昂貴。此外,這可以透過軟分叉或分叉選擇規則功能來解決,而不需要硬分叉來手動取出攻擊者的幣。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;