以太坊權益證明之攻擊與防禦
最後編輯: @Ricky7777(opens in a new tab), 2023年8月15日
小偷和破壞者不斷尋找機會攻擊以太坊的用戶端軟體。 本頁概述了以太坊共識層的已知攻擊媒介,以及如何防禦這些攻擊。 本頁上的資訊改編自一個更長格式的版本(opens in a new tab)。
先備知識
需要瞭解一些關於權益證明的基本知識。 此外,對以太坊的激勵層和分叉選擇演算法 LMD-GHOST 有基本瞭解,也會有所助益。
攻擊者的企圖
一個常見的誤解是,成功的攻擊者可以產生新的以太幣,或者從任意帳戶中取走以太幣。 由於所有交易都由網路上的所有執行用戶端執行,所以這兩種情況都是不可能的。 交易必須滿足基本的有效性條件(例如,交易由發送者的私密金鑰簽署,發送者有足夠的餘額等),否則它們將被直接還原。 攻擊者的真實目標可能有三類結果:區塊重組、雙重最終確定性或最終確定性延遲。
「區塊重組」是將區塊重新排列成新的順序,或許在規範鏈中進行一些區塊的增減。 惡意的區塊重組可能確保納入或排除特定的區塊,允許透過預先交易和尾随交易(最大可提取价值)進行雙重支付或價值提取。 區塊重組也可以用來阻止某些交易被納入規範鏈中 - 這是一種審查形式。 區塊重組的最極端形式是「最終確定性反轉」,它會移除或替換先前已最終確定的區塊。 只有當攻擊者摧毀了總質押以太幣的 ⅓ 以上時,這才有可能 - 這一保證被稱為「經濟最終確定性」- 稍後會有詳細說明。
雙重最終確定性是一種不太可能但很嚴重的狀況,其中兩個分叉能夠同時最終確定,造成鏈中的永久分裂。 對於願意以 34% 的縂質押以太幣來冒險的攻擊者來說,這在理論上是可能的。 社群將被迫在鏈下協調並就跟隨哪條鏈達成協定,這將需要社交層面的力量。
最終確定性延遲攻擊會阻止網路達到最終確定鏈段的必要條件。 沒有最終確定性,就很難信任建立在以太坊之上的金融應用程式。 最終確定性延遲攻擊的目的可能僅僅是破壞以太坊,而不是直接獲利,除非攻擊者有一些策略性的短融資。
對社交層的攻擊可能旨在破壞公眾對以太坊的信任,讓以太幣貶值、減少採用,或削弱以太坊社群以增加帶外協調的難度。
在確定對手可能為何攻擊以太坊後,以下部分將探討他們可能採用的攻擊方法。
攻擊方法
0 層網路攻擊
首先,那些不積極參與以太坊(透過運行用戶端軟件)的個人可以透過針對社交層(0 層網路)進行攻擊。 0 層網路是建立以太坊的基礎,因此它代表了一個潛在的攻擊面,其後果會在整個堆疊中產生波及效應。 一些例子可能包括:
一個虛假資訊宣傳活動可能會侵蝕社群對以太坊的開發藍圖、開發者團隊、應用程式等的信任。 然後,這可能會減少願意參與保護網路的個人數量,降低去中心化和加密經濟安全性。
針對開發者社群的有針對性的攻擊或恐嚇。 這可能導致開發者自願退出,並減慢以太坊的進展。
過度熱衷的監管也可以被認為是對 0 層網路的攻擊,因為它可能迅速挫傷參與和採用的積極性。
將知識淵博的惡意行為者滲透到開發者社群中,目的是透過無意義的討論、延遲關鍵決策、建立垃圾郵件等手段減緩進展。
向以太坊生態系統的關鍵參與者行賄以影響決策。
這些攻擊特別危險的原因是,在許多情況下幾乎不需要太多資本或技術知識。 0 層網路攻擊可能是加密經濟攻擊的倍增器。 例如,如果惡意的多數質押持有者實現了審查或最終確定性反轉,則破壞社交層可能導致帶外協調社群響應變得更困難。
防禦 0 層網路攻擊可能並不簡單,但可以確立一些基本原則。 其中一個原則是由誠實社群成員透過部落格、Discord 伺服器、註釋規範、書籍、播客和 YouTube 等媒體建立和傳播有關以太坊的公共資訊並保持整體高信噪比。 在 ethereum.org,我們努力維護準確的資訊並嘗試將其翻譯成盡可能多的語言。 在一個領域充斥著高品質的資訊和模因可以有效防止錯誤資訊的傳播。
另一個對抗社交層攻擊的重要防禦措施是明確的使命宣言和管理體系協定。 以太坊已將自身定位為智慧型合約 1 層網路中的去中心化和安全性擁護者,同時高度重視可擴展性和永續性。 無論以太坊社群中出現何種分歧,這些核心原則都極少受到損害。 根據這些核心原則評估一個敘述,並透過 EIP(以太坊改進提案)程序中的連續審查來檢視它們,可能有助於社群區分良好行為者與惡意行為者,並限制惡意行為者影響以太坊之未來方向的範圍。
最後,以太坊社群保持對所有參與者開放和友好至關重要。 一個帶有門戶守衛和排外性的社群特別容易受到社交攻擊,因為容易形成「我們和他們」的敘事。 部落主義和有害的極端主義會傷害社群,削弱 0 層網路的安全性。 對以太坊網路安全具有既得利益的以太坊社群成員,應該將他們在線上和實體世界中的行為視為對以太坊 0 層網路安全的直接促進因素。
攻擊協定
任何人都可以執行以太坊的用戶端軟體。 要將驗證者新增至用戶端,使用者需要將 32 個以太幣質押到存款合約中。 驗證者允許使用者透過提交和證明新區塊來積極參與以太坊網路的安全性。 現在,驗證者可以發聲,影響區塊鏈的未來內容 - 他們可以誠實行事,透過獎勵來增加他們的以太幣儲備,或者他們可以冒著失去其質押的風險,試圖操縱程序以謀取自己的利益。 一種發動攻擊的方法是累積更大比例的總質押,然後用它來在投票中超過誠實的驗證者。 攻擊者控制的質押比例越大,他們的投票權就越大,尤其是在我們稍後將探討的某些經濟里程碑上。 然而,大多數攻擊者將無法累積足夠的以太幣以此方式進行攻擊,因此他們必須使用微妙的技巧來操縱誠實的大多數人採取特定的行動。
從根本上說,所有小規模質押攻擊都是兩種驗證者不當行為的微妙變體:活動不足(未能證明/提議或者延後這樣做)或者活動過多(在一個時隙內提議/證明的次數過多)。 在最普遍的形式下,這些行動可以很容易地由分叉選擇演算法和激勵層進行處理,但也有聰明的方式可以讓攻擊者操縱系統以獲得優勢。
使用少量以太幣的攻擊
區塊重組
有幾篇論文解釋了在以太坊上使用僅佔總質押以太幣一小部分便實現了區塊重組或最終確定性延遲的攻擊。 這些攻擊通常依賴於攻擊者向其他驗證者隱瞞某些資訊,然後以某種微妙的方式和/或在某個適當的時刻發佈該資訊。 它們通常旨在取代規範鏈中的一些誠實區塊。 Neuder 等人在 2020 年的研究(opens in a new tab)中展示了一個攻擊驗證者如何在特定時隙 n+1
建立和證明一個區塊 (B
),但未將其傳播到網路上的其他節點。 相反,他們保留該已證明的區塊,直到下一個時隙 n+2
。 一個誠實的驗證者在時隙 n+2
提交了一個區塊 (C
)。 幾乎同時,攻擊者可以發佈他們所保留的區塊 (B
) 及為其保留的證明,並且在時隙 n+2
透過他們的投票證明區塊 B
為鏈頭,有效地否認了誠實區塊 C
的存在。 當誠實區塊 D
發佈時,分叉選擇演算法會看到建置在 B
之上的 D
比建置在 C
之上的 D
有更多權重。 因此,攻擊者成功地使用 1 個區塊的事前重組,在時隙 n+2
從規範鏈中移除了誠實區塊 C
。 擁有 34% 的質押份額的攻擊者(opens in a new tab)在這次攻擊中有很大的機會成功,正如這條注釋(opens in a new tab)中所解釋的。 然而,從理論上講,這種攻擊也可以使用較小的質押份額來嘗試。 Neuder 等人在 2020 年的研究(opens in a new tab)描述了這種攻擊在 30% 的質押份額下的運作,但後來證明它在總質押份額的 2%(opens in a new tab) 下可行,然後單個驗證者(opens in a new tab)使用我們將在下一節中探討的平衡技巧亦有效。
上述一個區塊重組攻擊的概念示意圖(改編自 https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair)(opens in a new tab)
一種更複雜的攻擊可以將誠實的驗證者集合分成擁有不同鏈頭檢視的不同群組。 這被稱為平衡攻擊。 攻擊者等待著提出區塊的機會,當機會到來時,他們模稜兩可地提出兩個區塊。 他們將一個區塊發送給一半的誠實驗證者集合,將另一個區塊發送給另一半。 這種模稜兩可的行為會被分叉選擇演算法偵測到,區塊提議者將被懲處並從網路中驅逐,但這兩個區塊仍然存在,並在每個分叉擁有約一半驗證者集合的證明。 同時,其餘的惡意驗證者保留他們的證明。 然後,透過在分叉選擇演算法執行時選擇性地向足夠的驗證者釋放有利於某一分叉或另一分叉的證明,他們將證明的累積權重傾向於其中一個或另一個分叉。 這種做法可以無限期地繼續下去,攻擊驗證者則在兩個分叉之間保持驗證者的平均分配。 由於兩個分叉都無法吸引到 2/3 的絕對多數,網路將無法最終確定。
反彈攻擊與之類似。 攻擊驗證者同樣保留了投票。 他們不是透過釋放投票來保持兩個分叉之間的平均分配,而是在適當的時刻使用他們的投票來證明在分叉 A 和分叉 B 之間交替的檢查點。這種在兩個分叉之間翻轉的證明方式,阻止了可以在任何鏈上最終確定的被證明來源和目標檢查點對的出現,從而終止了最終確定性。
反彈和平衡攻擊都依賴於攻擊者對網路上的訊息時間具有非常精細的控制,這是不太可能的。 然而,協定中內建了防禦機制,與較慢訊息相比,給予了及時訊息額外的加權。 這被稱為提議者權重增強(opens in a new tab)。 為了防範反彈攻擊,分叉選擇演算法已經更新,使得在每個時期的前 1/3 時隙內(opens in a new tab),最新的被證明檢查點只能切換到另一個鏈的檢查點。 這個條件防止攻擊者儲存投票以便稍後部署 - 分叉選擇演算法只是在時期的前 1/3 對它選擇的檢查點保持忠誠,而在這段時間內大多數誠實的驗證者已經完成投票。
綜合考慮,這些措施創造了這樣的情況:一個誠實的區塊提議者在時隙開始後很快就發出他們的區塊,然後有大約 1/3 個時隙(約 4 秒)的時間,新的區塊可能會導致分叉選擇演算法切換到另一個鏈。 在同樣的截止期限之後,來自緩慢驗證者的證明相較於之前到達的證明會被降低權重。 這非常有利於及時的提議者和驗證者來確定鏈頭,並大幅降低了平衡或反彈攻擊成功的可能性。
值得注意的是,僅僅進行提議者加強只能防禦“廉價的重組攻擊”,即由持有較小質押份額的攻擊者嘗試的重組攻擊。 事實上,提議者加強本身可能會被更大的質押持有者利用。 這篇文章的作者(opens in a new tab)描述了一個持有 7% 質押份額的攻擊者如何可以戰略性地部署他們的投票,欺騙誠實的驗證者在他們的分叉上建置,將誠實的區塊重組掉。 這種攻擊是在假設極端理想的延遲條件下設計的,而這種情況非常不太可能。 對於攻擊者來說,勝算仍然非常渺茫,而更大的質押份額也意味著更多的資本風險和更強大的經濟阻力。
還提出了一種專門針對最新訊息導向 (LMD) 規則的平衡攻擊(opens in a new tab),儘管有提議者加強,但這種攻擊據認為仍然是可行的。 攻擊者透過模稜兩可的區塊提議設立了兩條競爭的鏈,並將每個區塊各傳播給大約一半的網路,從而在分叉之間建立起近似的平衡。 然後,串通的驗證者模稜兩可地投票,並安排時間,使得一半的網路首先收到他們對分叉 A
的投票,另一半首先收到他們對分叉 B
的投票。 由於最新訊息導向規則會丟棄每個驗證者的第二個證明,而只保留第一個證明,所以一半的網路看到對 A
的投票,沒有對 B
的投票,另一半則看到對 B
的投票,沒有對 A
的投票。 作者描述了最新訊息導向規則賦予了對手「卓越的力量」來發動平衡攻擊。
這種最新訊息導向攻擊媒介已透過更新分叉選擇演算法(opens in a new tab)予以關閉,從而在分叉選擇考量中完全排除了模稜兩可的驗證者。 模稜兩可的驗證者的未來影響也受到分叉選擇演算法的削減。 這可以防止上面概述的平衡攻擊,同時保持了對雪崩攻擊的強韌性。
另一類攻擊稱為雪崩攻擊(opens in a new tab),在一份 2022 年 3 月的論文(opens in a new tab)中進行了描述。 為了發動雪崩攻擊,攻擊者需要控制幾個連續的區塊提議者。 在每個區塊提議的時隙中,攻擊者扣留他們的區塊,將它們收集起來,直到誠實的鏈與保留的區塊達到相等的子樹權重。 然後,保留的區塊被釋放出來,使它們最大程度地模稜兩可。 作者指出,提議者加強 - 對抗平衡和反彈攻擊的主要防禦手段 - 並不能防範某些變種的雪崩攻擊。 然而,作者們只在高度理想化的以太坊分叉選擇演算法版本上展示了這種攻擊(他們使用了不帶最新訊息導向 (LMD) 的最貪婪、最重的可觀察子樹 (GHOST))。
透過最新訊息導向的最貪婪、最重的可觀察子樹分叉選擇演算法的最新訊息導向部分可以緩解雪崩攻擊。 LMD 為「latest-message-driven(最新訊息導向)」,指的是每個驗證者保存的一份表格,其中包含了從其他驗證者處收到的最新訊息。 該欄位只有在以下情況才會更新:新的訊息來自比驗證者表格中某個現存的時隙更晚的時隙。 實際上,這表示在每個時隙中,接收的第一則訊息會被接受,其他的則會當作模糊訊息被忽略。 換句話說,共識用戶端不會計算模糊的訊息 - 它們只會使用從每個驗證者處收到的第一則訊息,其他模糊訊息將被丟棄以避免雪崩攻擊。
未來有其他多個對分叉選擇規則的潛在升級,可藉由提議者增強以提升安全性。 其一為檢視合併(opens in a new tab),指的是證明者會在時隙開始前的 n
秒凍結他們的分叉選擇檢視,然後由提議者協助同步整個網路上的鏈檢視。 另一個潛在的升級是單時隙最終確定性(opens in a new tab),其透過在一個時隙後立即最終確定區塊鏈,以保護鏈免於基於訊息時間類型的攻擊。
最終確定性延遲
在首次描述低成本單區塊重組攻擊的同一篇論文(opens in a new tab)中,還描述了最終確定性延遲(又稱「活躍性失效」)攻擊,此攻擊仰賴攻擊者同時為時期邊界區塊的區塊提議者。 這非常重要,因為時期邊界區塊會成為 Casper FFG 用來最終確定一部分鏈的檢查點。 攻擊者只需扣留他們的區塊,直到足夠多的誠實驗證者使用他們的友善最終確定性組件投票支持前一個時期邊界區塊作為目前的最終確定目標。 接著,他們會釋放被其扣留的區塊。 攻擊者證明其區塊,其餘誠實的驗證者也會使用不同的目標檢查點建立分叉。 如果時機抓的準,他們將阻止最終確定性,因為達不到 2/3 的絕對多數來證明任何一個分叉。 質押的以太幣越少,由攻擊者直接控制的證明越少,攻擊者控制驗證者提交特定時期邊界區塊的機率就越低,因此攻擊者就需要越精準地控制時機。
遠程攻擊
還有種針對權益證明區塊鏈的攻擊,涉及了參與創世區塊的驗證者,他們與誠實的驗證者一起維護區塊鏈的單獨分叉,並在很久以後的某個適當時機,最終說服誠實的驗證者集合切換到該分叉。 此類型的攻擊在以太坊上不可能發生,因為最終確定性組件會在固定時間間隔(「檢查點」)確認所有驗證者都同意誠實鏈的狀態。 這個簡單的機制抵禦了遠程攻擊者,因為以太坊用戶端不會重組已最終確定的區塊。 為此,加入網路的新節點會尋找最近且受信任狀態的雜湊(即「弱主觀性(opens in a new tab)」檢查點),並將該檢查點作為偽創世區塊,以在其上建置。 這會在剛加入網路的新節點開始驗證自身資訊前,為它們建立「信任閘道」。
阻斷服務攻擊
以太坊的權益證明機制會在每個時隙,從驗證者集合中選出一個單一的驗證者作為區塊提議者。 這可以透過公開函式算出,且攻擊者可能在區塊提交前一小段時間,預先識別出下個區塊提議者。 接著,攻擊者可以對區塊提議者發送垃圾訊息,阻止他們與其對等節點交換訊息。 對網路的其餘部分來說,此時的區塊提議者視同離線,而時隙則為空。 這可能會是針對特定驗證者的一種審查方式,阻止他們在區塊鏈上新增資訊。 實現單一秘密領導者選舉 (SSLE) 或非單一秘密領導者選舉可以緩解阻斷服務攻擊風險,這是因為只有區塊提議者知道自己被選上,且無法預先知道選舉結果。 這部分尚未實現,但目前已是活躍的研究與開發(opens in a new tab)領域。
這些都表明了一個事實:要透過少量質押來成功攻擊以太坊非常困難。 此處描述的可行攻擊需要理想化的分叉選擇演算法、極端網路條件,或者已透過相對較小的用戶端軟體修補關閉了攻擊媒介。 當然,這還是無法排除現有零日攻擊逍遙在外的可能性,但它證明了在攻擊者質押量不高時,需要有非常高超的技術、對共識層的瞭解,以及運氣才有可能完成有效攻擊。 站在攻擊者的角度,最佳選擇可能是儘可能累積大量的以太幣,並提高自己在總質押中的佔比。
使用超過或等於 33% 質押總量的攻擊者
攻擊者用於投票的質押以太幣用於投票,且有越多的驗證者可能在每個時隙被選中並提交區塊,那麼上述文章中提到的所有攻擊就越有可能成功。 惡意驗證者的目標可能是控制盡可能多的質押以太幣。
33% 的質押以太幣是攻擊者的基準指標,因為只要大於此數量,攻擊者不需要精細控制其他驗證者的行為就能夠阻止鏈的最終確定。 他們可以一起消失。 如果超過 1/3 的質押以太幣為惡意證明或無法證明,則 2/3 的絕對多數就不存在,鏈也就無法最終確定。 能防禦此攻擊的方法為怠惰逐減懲罰。 怠惰逐減懲罰會識別無法證明或與多數證明相反的驗證者。 這些不進行證明的驗證者所質押的以太幣會逐漸流失,直到它們的集體佔比最終小於總量的 1/3,至此,鏈就能繼續最終確定。
怠惰逐減懲罰的目的是讓鏈能繼續最終確定。 然而,攻擊者也會損失它們質押的部分以太幣。 持有 33% 質押以太幣總量的驗證者持續不活躍的代價十分高昂,即使在驗證者沒有被罰沒的狀況下仍然如此。
假設以太坊網路是異步的(即發送和接收訊息間有延遲),攻擊者控制了 34% 質押總量可能會造成雙重最終確定性。 這是因為攻擊者在被選為區塊生產者時,他們可以模稜兩可,並與他們的所有驗證者完成雙重投票。 這會產生一種情況:區塊鏈分叉,且每個分叉都有 34% 的質押以太幣為它投票。 每個分叉只需要剩下驗證者的 50% 投票,就能獲得絕對多數支持,在這種情況下,兩條鏈都能最終確定(因為攻擊者驗證者的 34% + 剩下驗證者的 66% 的一半 = 每個分叉上的 67%)。 每個競爭區塊都必須被約 50% 的誠實驗證者接收,因此這種攻擊只在特定情況下可行:攻擊者對網路上傳播訊息的時間有一定的控制,這樣他們就可以將一半的誠實驗證者推到每條鏈上。 攻擊者必須銷毀他們的質押的全部以太幣(目前驗證者集合約計 1000 萬以太幣的 34%)才能實現雙重最終確定性,因為他們驗證者的 34% 會同時進行雙重投票 — 這是一種會受到罰沒的行為,具有最大的相關性懲罰。 防禦此攻擊的方式代價巨大,即銷毀 34% 總質押以太幣。 要從這種攻擊中復原,以太坊社群需要進行「帶外」協調,同意選擇其中一個分叉,並忽略另一個。
使用約 50% 質押總量的攻擊者
在攻擊者持有 50% 以太幣的情況下,理論上一群作惡的驗證者可以將鏈拆分成兩個大小相同的分叉,然後使用他們全部 50% 的質押以太幣投票反對誠實的驗證者集合,從而維持這兩個分叉並阻止最終確定性。 兩條鏈上的怠惰逐減懲罰最終都會導致鏈的最終確定。 至此,從攻擊中復原的唯一選擇就是社交恢復。
在誠實驗證者數量、網路延遲等因素變動的情況下,敵對驗證者群體能夠持續精確控制質押總量的 50% 的可能性非常小。對理性的攻擊者來說,發動攻擊的高成本及低成功率,是抑制其發動攻擊的強烈因素,尤其是當一小點額外的投資就能獲得超過 50% 的佔比以解鎖更多攻擊能力時。
在攻擊者有大於 50% 總質押以太幣的情況下,攻擊者可以支配分叉選擇演算法。 在這種情況下,攻擊者自身即有能力以多數投票來完成證明,不需要再透過欺騙誠實的用戶端才能完成短期重組。 誠實的驗證者會效仿攻擊者,因為他們的分叉選擇演算法將攻擊者的鏈視為權重最高的鏈,如此一來該鏈就能最終確定。 這使得攻擊者可以審查某些交易,以有利於他們的方式進行短距重組以及透過重新排序區塊來提取最大的礦工可提取價值。 對此攻擊的防禦手段是讓攻擊者付出大多數質押的巨大成本(目前略低於 190 億美元),這會讓攻擊者面臨風險,因為社交層可能會介入並採納誠實的少數分叉,讓攻擊者的質押大幅貶值。
使用超過或等於 66% 質押總量的攻擊者
擁有 66% 或更多總質押以太幣的攻擊者,無需脅迫任何誠實驗證者即可最終確定他們所支持的鏈。 攻擊者只需要給他們支持的分叉進行投票並最終確定它,因為他們有絕對多數的不誠實投票。 作為絕對多數的質押擁有者,攻擊者始終可以控制最終確定的區塊的內容,擁有支出、回退和再次支出、審查某些交易以及隨意重組鏈的能力。 透過購買額外的以太幣來控制 66% 而不是 51%,攻擊者實際上購買了進行事後重組和最終確定性反轉的能力(即改變過去並控制未來)。 唯一實際可操作的防禦方法是付出 66% 總質押以太幣的高昂成本,並選擇回退到社交層來協調採納另一個分叉。 我們將在下一部分詳細探討這一點。
人:最後的防線
如果不誠實的驗證者設法最終確定他們所支援的鍊版本,以太坊社群將陷入困境。 規範鏈將在其歷史記錄中包含不誠實部分,同時誠實的驗證者可能會因證明另一條(誠實)鏈而被懲罰。 注意,最終確定的但不正確的鏈也可能是主流用戶端的漏洞引起的。 最後,最終的回退需要依賴社交層 - 0 層網路 - 來解決。
以太坊權益證明共識的其中一個優點是存在一系列的防禦策略 (opens in a new tab),社群在面對攻擊的時候可以實施這些策略。 最起碼的回應是在不實施任何懲罰的情況下強制攻擊者的驗證者離開網路。 為了重新進入網路,攻擊者必須加入到一個激活隊列,確保驗證者集合逐步增加。 例如,增加足夠的驗證者讓質押的以太幣翻倍需要約 200 天,攻擊者要再一次嘗試 51% 攻擊,需要提前 200 天收買誠實的驗證者。 但是,社群也可以決定更嚴厲地懲罰攻擊者,方法是撤銷以往的獎勵或銷毀其一定比例的(高達 100%)質押資本。
不管攻擊者受到什麼懲罰,社群還必須一起確認不誠實鏈實際上是否無效,儘管它被以太坊用戶端的分叉選擇演算法所支援。社群應該在誠實的鏈上建構。 誠實的驗證者可以集體同意在被社群認可的以太坊區塊鏈分叉上進行建構,例如,該分叉可能在攻擊開始之前就已經從規範鏈上分叉出來,或者攻擊者的驗證者被強行移除。 誠實的驗證者會受到激勵來建構這條鏈,因為他們可以避免因無法(正確地)證明攻擊者的鏈而受到懲罰。 建構在以太坊上的交易所、入口和應用程式可能更願意位於誠實鏈上,並且跟隨誠實驗證者的誠實區塊鏈。
但是,這是一個重大的管理體系挑戰。 有些使用者和驗證者會在切換回誠實鏈時無可避免地產生損失,因為攻擊後被驗證的區塊中的交易可能會回滾,從而擾亂應用程式層。這很容易破壞一些相信“程式碼就是法律”的使用者的道德原則。 交易所和應用程式很可能已經把脫鏈行為和現在可能要回滾的鏈上交易關聯起來,並開始一連串的撤回和修訂,很難公平地進行取捨,特別是如果不義之財混雜在其中,存入了去中心化金融或其他衍生品,都會對誠實使用者產生二次影響。 毫無疑問,那些因為精明或機緣巧合已經從不誠實鏈獲利的一些使用者甚至機構,可能會反對分叉以保護他們的利益。 目前已經有呼籲要求社群對大於 51% 攻擊的回應進行演練,以便可以快速執行合理的協調緩解措施。 Vitalik 在 ethresear.ch 上的這裡(opens in a new tab)和這裡(opens in a new tab)以及 Twitter 上的這裡(opens in a new tab)發起了一些有用的討論。 協調社交回應的目的應該是非常有針對性和具體地懲罰攻擊者並儘量減少對其他使用者的影響。
管理體系已經是一個複雜的議題。 管理 0 層網路緊急回應透過不誠實行為最終確定的鏈,對於以太坊社群來說毋庸置疑是一個挑戰,但在以太坊歷史上已經發生過兩次。
儘管如此,在現實世界的最後回滾中,還是有一些令人相當滿意的東西。 最後,即使在我們之上有著如此驚人的技術堆棧,但如果最壞的情況發生了,現實中的人們也必將協調出一條屬於他們的出路。
總結
本頁探討了攻擊者試圖利用以太坊權益證明共識協定的一些方法。 隨著總質押以太幣比例不斷增加,探討了攻擊者可能造成的重組和最終確定性延遲。 總的來說,較富裕的攻擊者成功的幾率更大,因為他們的質押將變成有力的投票,從而影響未來區塊的內容。 在一定門檻的質押以太幣數量下,攻擊者的力量會逐級上升:
33%:最終確定性延遲
34%:最終確定性延遲、雙重最終確定性
51%%:最終確定性延遲、雙重最終確定性、審查、控制區塊鏈的未來
66%:最終確定性延遲、雙重最終確定性、審查、控制區塊鏈的未來以及過去
還有一系列更複雜攻擊是運用少量質押以太幣發起的,但是需要非常有經驗的攻擊者精細控制訊息發佈時機,說服誠實驗證者支持他們。
總的來說,儘管存在這些潛在的攻擊媒介,但攻擊成功的機率仍非常低,低於在工作量證明機制下實施的同類攻擊。 這是因為攻擊者需要冒著巨大的質押以太幣成本風險,以便利用他們的投票權壓倒誠實的驗證者。 內建的「恩威並濟」激勵層可以防止大多數的惡意行為,尤其是對於擁有少量質押的攻擊者。 更微妙的彈跳和平衡攻擊也不太可能成功,因為在現實的網路條件下,很難精細地控制訊息向特定驗證者子集的傳遞,如果發現了已知的彈跳、平衡和雪崩攻擊媒介,用戶端團隊也能透過簡單的補丁快速修復。
34%、51% 或 66% 攻擊可能需要帶外的社交協調來解決。 雖然對社群來說是痛苦的,但是社群的帶外響應能力對於攻擊者來說是一種強大的抑制力量。 以太坊的社交層是最終的後盾 - 從技術上取得成功的攻擊仍然會被社群同意採用誠實鏈所瓦解。 攻擊者和以太坊社群之間存在一場競賽 - 花費在 66% 攻擊上的數十億美元可能會被成功的社交協調所抹去,從而給攻擊者留下沉重的包袱,因為它們質押的以太幣將在被以太坊社群忽略的不誠實鏈上無法流動。 最終為攻擊者帶來利益的可能性非常低,這足以成為一種有效的威懾。 這就是為什麼投資於維持擁有共同價值觀和凝聚力的社交層如此重要。