一文詳解以太坊合併后的重組攻擊

原標題:Ethereum Reorgs After The Merge

作者:Vitalik Buterin & Georgios Konstantopoulos

編譯、整理:Chen Zou

最近,人們討論了礦工採用假定被修改的以太坊客戶端的可能性,該客戶端允許他們接受賄賂,並在選定的區塊中對交易進行排列。(進行這種賄賂的主要用例是攻擊 DeFi 協議)。

在這篇文章中,我們將解釋為什麼這種攻擊模式在以太坊 2.0 合併后將更難執行。

1.什麼是分叉選擇規則,為什麼它很重要?

分叉選擇規則是一個由客戶端評估的函數,它把已經看到的區塊和其他消息的集合作為輸入,並向客戶端輸出 "典型鏈 "是什麼。分叉選擇規則是必要的,因為可能有多個有效的鏈可以選擇(例如,如果兩個具有相同母本的競爭區塊同時被發布)。

重組是一個特殊事件,在這個事件中,曾經是經典鏈的一部分的區塊不再是經典鏈的一部分,因為一個競爭區塊擊敗了它。最終性是指分叉選擇規則對某一區塊非常有利,以至於該區塊在數學上不可能被重合(或至少在經濟上不可行)的情況。

在一些分叉選擇規則中(例如 Tendermint ),重組是不可能發生的;分叉選擇規則只是通過添加任何已經通過 BFT(Byzantine Fault Tolerance :拜占庭容錯) 共識並最終確定的區塊來擴展現有的鏈。在其他分叉選擇規則中,重組是非常頻繁的。

一文詳解以太坊合併后的重組攻擊

2.以太坊的現狀是什麼?

在以太坊這樣的工作量證明(PoW)區塊鏈中,我們通常會看到 "最長鏈規則"(或者更準確地說,"最高總難度鏈規則")。這意味着,當客戶端發現 2 條區塊鏈時,它會選擇總難度最高的一條(即該鏈中所有區塊的難度之和)。

舉個例子,假設區塊的難度可以是 100 或 110 ,想象一下下面的場景。

1.我們從難度為 100 的區塊 1 開始進行同步。

2.區塊 2a 和 3a 分別以 100 的難度到達,我們將它們插入我們的鏈中,形成一個總難度為 300 的分叉。

3.難度為 110 的區塊 3b 到達,宣布 2a 為其父方,形成總難度為 310 的分叉。分叉選擇規則將注意到 "最重 "的鏈現在是第二個分叉,並將切換到它。這是1個塊的重組,因為只有塊 3a 被改變了。請注意,這些區塊並沒有被完全丟棄,因為可能會有一個新的區塊到達,導致分叉選擇切換回第一個分叉上。

4.2b 和 3c 區塊到達,每個區塊的難度都是 110 ,創造了一個總難度為 320 的新分叉!這意味着分叉選擇的難度是 320 。按照分叉選擇規則現在將使用 2b 而不是 2a , 3c 而不是 3b ,這些都是上一個經典鏈中的區塊。這是一個2個區塊的重新組合。

你可以看到這將會發生什麼。如果一個新的區塊 4a 到達,宣布 3a 為其父鏈,分叉選擇規則將切換回第一個分叉,以此類推。

一文詳解以太坊合併后的重組攻擊

3.鏈重組的影響

由於延遲的原因,短暫的重組一直在發生。礦工 A 和礦工 B 可能同時找到一個有效的區塊,但由於區塊在 p2p 網絡中的傳播方式,網絡的一部分區塊會首先看到 A 的區塊,另一部分會先看到 B 的區塊。如果這兩個區塊的難度相同,就會出現平局,客戶要麼隨機選擇,要麼選擇較早看到的區塊。通常情況下,當第三個礦工 C 在 A 的區塊或 B 的區塊上建造一個區塊時,平局最終被打破,而另一個區塊則被遺忘。偶爾,運氣不好也會導致 2-5 個區塊的重組。超過這個時間的重組幾乎都是由於極端的網絡故障,客戶端錯誤,或惡意攻擊造成的。

短暫的重組不是致命的,但它們仍然對網絡產生以下這些嚴重後果。

  • 節點成本:當重組發生時,由於必須切換到新的分叉,可能會回滾交易或修改區塊鏈狀態,因此會有一些存儲問題。
  • 用戶體驗下降:重新分叉的可能性意味着用戶需要等待更長時間才能安全地將涉及他們的交易視為 "確認"。這方面的一個重要子案例是交易所等企業在接受存款之前需要等待更長時間。
  • 交易背景的不確定性:當用戶發送交易時,他們對該交易將在什麼背景下執行的確認性較低(例如,最近的 N 個區塊會不會被恢復?值得注意的是,這增加了 DeFi 交易對意外失敗,比預期差的交易結果或有害的 MEV 提取的可能性。
  • 增加了 51 % 算力攻擊的可能性:在一個最長鏈規則驅動的系統中,如果鏈上的礦工從 B1 到 B2 重新排序,那麼 B1 的難度就不再有助於確保鏈的安全。攻擊者不再需要擊敗所有誠實的礦工,他們僅僅需要擊敗沒有被重組的那部分誠實礦工。如果頻繁重組,這就使攻擊者的工作大大簡化。

可能發生的最壞情況

在最壞的情況下,頻繁的重組可以使區塊鏈的結算保證完全失效,並阻止其繼續進行。通常情況下,區塊生產者的 "激勵兼容 "策略應該是延長最長的鏈。但是,如果某個區塊的後置狀態有利可圖(例如,有非常高的費用或 MEV ,只有通過在該區塊之後直接建立一個區塊才能提取),會發生什麼?這個問題過去在沒有區塊獎勵的比特幣和自私採礦的背景下被探討過,今天在以太坊生態系統中與 DeFi 相關的 MEV 背景下也被探討過。

在這些情況下,有很大的動機試圖通過競爭而不是延長經典鏈的頂端來 "偷取"費用或 MEV 。在下面的例子中,區塊 1 的後置狀態是有利可圖的,區塊 2a 已經被開採。然而,不是 1 個而是 3 個區塊生產者選擇在區塊 1 而不是區塊 2a 的基礎上進行開採(以要求在區塊 1 之後暴露的任何 MEV ),這可以擴展到任意數量的一方。

出於顯而易見的理由,這樣的模式為惡意的 51% 算力攻擊打開了一扇大門。我們把從事這種重組開採戰術的礦工稱為 "近視理性",因為這樣做的決定在短期內可能是理性的。然而,他們在以太坊上有明確的(造幣商)或隱性的(礦工)多頭頭寸(因為費用和區塊獎勵是以以太坊計價的),這意味着任何這種減少用戶對以太坊信任的攻擊都是違背他們的終極利益的,因此從長遠來看是不理性的。

4.合併后的以太坊與權益證明

在 Nakamoto PoW 中,區塊在分叉選擇中被 "串行 "固化。首先,一個區塊被開採出來,這時,一個競爭區塊有可能會重組它。如果該區塊作為經典鏈的一部分存活下來,在(平均)13秒后,其他一些礦工在上面建立了第二個區塊。在這一點上,需要一個由兩個競爭區塊組成的鏈來重新組織它。隨着更多的區塊被建在上面,重新 org 鏈的難度繼續增加,但速度很慢。

以太坊的信標鏈實現了一個名為 Gasper 的 PoS 協議,有一個名為 LMD-GHOST 的分叉選擇規則。與 Nakamoto PoW 相反,在區塊生產過程中,有2個角色。

  • 提議者: 一個驗證者的任務是提出一個區塊。
  • 參與者: 一組驗證者投票決定他們認為哪個區塊是經典鏈的頭。鑒定人的投票被稱為 "證明",他們為區塊賦予 "權重"。控制鑒定人意味着控制分叉選擇規則。

每12秒有一個 "槽",它代表了一個提出區塊的機會。對於每個時段,一個洗牌算法偽隨機地選擇一個由所有驗證者的 1/32 組成的委員會,其中每個委員會中的一個驗證者是提議者,其餘的是贊成者。審定者對他們認為是經典鏈的一部分的區塊進行平行投票。由於委員會是偽隨機抽樣的,攻擊者沒有辦法將他們的驗證者集中到一個單一的位置。

今天,信標鏈有 19.6 萬個驗證器,這意味着每個槽都有一個大小為 6125 的委員會。因此,即使是單一區塊的重構也是非常困難的,因為一個只控制了少數驗證者的攻擊者沒有辦法擊敗成千上萬的誠實的大多數參與者。

為了獲得一些關於為什麼會這樣的直覺,讓我們看一個有 2 個插槽和 24 個驗證者的例子,其中 9 個是惡意的。驗證者被分成兩個委員會,由於隨機洗牌,對手不太可能控制他們被分配到的任何一個小組的 50 %以上,並導致重組。

一文詳解以太坊合併后的重組攻擊

更正式地說,擁有 p %股權的惡意行為者控制 N 個驗證人規模的委員會中超過 50 %的概率遵循二項分佈(其中 k = N/2 )。

一文詳解以太坊合併后的重組攻擊

計算不同情況下的概率,我們得到以下表格:

一文詳解以太坊合併后的重組攻擊

我們現在明白,直接進行重組需要攻擊者控制接近 50 %的驗證者。

如果攻擊者擁有 25-49 %的驗證者,還有更微妙的攻擊是可能的。然而,這些攻擊有已知的修復方法,可以不引人注意地實施,增加安全性,接近無條件的 50 %。

最後,長時間的恢復是不可能的,因為所有深入到過去 2 個紀元的區塊都被認為是 "最終確定 "的,也就是說,不可能恢復過去。如果攻擊者導致兩個衝突的區塊被最終確定(例如通過控制 67 %的股權),系統將需要回落到social intervention 來恢復。

重組戰略採用的博弈論

既然我們已經看到了重組策略在不同的分叉選擇規則中是如何運作的,那麼就值得通過一個簡單的博弈論例子來了解礦工或驗證者何時使用執行重組策略的軟件來獲利才是合理的。

我們可以用一個回報矩陣來通俗地描述每種情況,其中 "缺陷 "意味着 "下載並使用執行反欺詐的軟件"。報酬是 "短視 "的,沒有考慮到長期後果。

中本聰工作證明

在最長鏈 PoW 中,短距離重組可以用驗證器集的哪怕一小部分進行概率性的重組。偶爾總會有一些區塊具有有利可圖的後置狀態,以至於即使是 1-10 %的成功率也值得嘗試與該區塊的現有子塊競爭。

礦工可以是一個中等規模的礦池,依靠他們連續找到下一個 2-3 個區塊的可能性,或者他們可以將他們收入的一部分送入一個任何人都可以索取的合同中,以賄賂其他運行相同軟件的人在他們的鏈上建立並幫助它對抗現有的經典鏈。

因此,一些礦工可能會被誘惑去運行 reorg 客戶端。

一文詳解以太坊合併后的重組攻擊

Gasper

在 Gasper 中, 1-64 個槽位的重組是可能的,但需要攻擊者控制整個驗證器集的很大一部分(因為他們不能把賭注集中在某個特定的槽位上,所以他們需要有足夠大的籌碼在他們想攻擊的槽位範圍內隨機選擇)。除非有非常多的其他驗證者也同時採用,否則採用重組挖礦軟件是沒有用的。

因此,如果 51 %的驗證者有哪怕是最輕微的利他主義,那麼沒有一個人運行重組軟件是一個穩定的均衡狀態。

一文詳解以太坊合併后的重組攻擊

Tendermint

在 Tendermint 中,情況甚至更乾淨:重組是不可能的,任何違反單槽最終性的行為都需要1/3以上的驗證者被砍掉。與 Gasper 的情況類似,這也意味着沒有人運行重組軟件才是一個穩定的均衡。

一文詳解以太坊合併后的重組攻擊

從上面我們可以看出,雖然採用 "reorg geth "在所有情況下都是可能的,但基於平行證明概念的分叉選擇規則有誠實的均衡狀態,且它將比 Nakamoto 分叉選擇中的均衡更穩定。

5.經驗之談

在以太坊的背景下,最有效的預防措施是進一步加快合併的工作,特別是迅速實現可信的能力,進行 "緊急合併",將鏈過渡到 PoS 。急於合併會有很高的風險,可能會破壞基礎設施,但如果許多礦工開始重新攻擊鏈,一個可信的承諾將對這種行為起到抵製作用。

接近合併的時期風險最大,因為礦工仍然是系統的負責人,但他們的時間跨度縮短了。然而,有兩個因素緩解了這種風險。

  1. 以太坊礦工往往同時是(i)其他區塊鏈的礦工,和/或(ii)以太坊社區其他身份的成員,所以他們仍然會有良好行為的動機。
  2. 隨着合併的臨近,進行緊急合併的難度、成本和風險也在降低。在合併的預定日期前幾個月,緊急合併將是具有高度破壞性的。在合併預定日期的兩周前,對客戶來說,這將是一個參數設置,驗證操作器已經完成了下載。

合併后,重組驗證將成為一個更小的問題,因為單個驗證者或一小群驗證者不能獨自重組。重組攻擊想要成功必須解決極其困難的協調問題,即讓大多數驗證者同時下線。然而,一些小的風險仍然存在。如果希望進一步提高安全性,那麼以太坊可以進一步調整分叉選擇規則,將重組攻擊的要求提高到 50 %的理論最大值,或者找到一種方法,直接轉向單槽 inality 的共識。

本文鏈接:https://www.8btc.com/article/6663447

轉載請註明文章出處

(0)
上一篇 2021-07-21 08:34
下一篇 2021-07-21 09:16

相关推荐