原文標題:《以太坊PoS攻擊與防御》
原文作者:jmcook.eth
譯者注:對于即將到來的以太坊合并,作者jmcook.eth根據大量研究文獻總結出了相關的共識攻擊方式,并提到了一些解決方案。總體而言,在轉向PoS共識機制之后,攻擊者控制的質押ETH比例越多,其攻擊的成功機會就越大,而以太坊內置的「胡蘿卜加大棒」激勵層可以防止大多數的惡意行為,尤其是對于低質押的攻擊者,然而對于34%、51%或66%攻擊,可能需要社區協調才能夠解決,因此防范質押權益集中化對以太坊網絡的安全而言將是至關重要的。
感謝TimBeiko和CasparSchwarz-Schilling對早期草稿的有益評論!
以太坊是一個出了名的對抗性環境,它甚至被比作一個「黑暗森林」(三體中可怕的博弈論概念)。這種聲譽主要來自應用層或社交層的弱點,以及從交易存儲池中提取價值的機器人的存在。然而,作為小偷或破壞者的老練黑客,也在不斷尋找機會攻擊以太坊的客戶端軟件。客戶端軟件可以將計算機變成以太坊節點,它是定義連接到其他節點、交換信息以及就以太坊區塊鏈狀態達成一致的所有規則的代碼。而對協議層的攻擊,就是對以太坊本身的攻擊。很快,以太坊客戶端就會進行一次重大升級(稱為「合并」),這會關閉保護以太坊的工作量證明算法,取而代之的是一種權益證明共識機制。造成這種情況的原因有很多,這在其他文章當中已經有詳細解釋。這將是一場哲學變革,同時也是一場技術變革。合并到權益證明(PoS)共識機制帶來了可持續性以及可擴展性方面的好處,但另一方面,客戶端軟件的復雜性將會增加,協議的潛在攻擊面也會增加。目前,保護PoW以太坊區塊鏈只需要運行單個軟件,而在「合并」之后,需要運行的軟件增加到了3個。本文概述了以太坊共識層上已知的攻擊向量,并概述了一些防御這些攻擊的方法。讀者可能需要掌握一些信標鏈的基礎知識才能從本文中獲得最大價值。此外,對信標鏈的激勵層和分叉選擇算法LMD-GHOST有一個基本的了解,也會對你有所幫助。這些都是很大的話題。但我在下面的序言中包含了一些非常易懂的入門知識。
序言
1)激勵層
信標鏈是一個權益證明區塊鏈,它使用以太坊的原生加密貨幣ETH進行保護,希望參與驗證區塊以及識別區塊鏈頭部的節點運營商將ETH存入以太坊的智能合約中。然后,他們獲得ETH的報酬以運行驗證器軟件,檢查通過對等網絡接收到的新區塊的有效性,并應用分叉選擇算法來識別區塊鏈頭部。節點運營商現在是「驗證者」,而驗證者有兩個主要角色:1)檢查新區塊并「證明」它們是否有效,2)從總驗證器池中隨機選擇時提出新區塊。如果驗證者在被詢問時未能完成這兩項任務中的任何一項,他們就會錯過ETH支付。還有一些非常難以意外執行,并且表示有惡意意圖的操作,例如在同一個slot提出多個區塊,或在同一個slot證明多個區塊,這些是「可罰沒」的行為,可導致驗證器在從網絡中移除之前燃燒一定數量的ETH,這需要36天。被罰沒的驗證器的ETH在退出期內會緩慢流失,但在第18天,當有更多的驗證器同時被罰沒時,它們會受到更大的「相關性懲罰」。因此,信標鏈的激勵結構是獎勵誠實行為者,并懲罰不良行為者。
2)分叉選擇
分叉選擇算法由每個驗證器運行,其作用是識別區塊鏈的頭部。在完全誠實的驗證器及零網絡延遲的理想條件下,分叉選擇算法實際上是不必要的,因為此時區塊鏈的頂端只有一個區塊。然而,在現實當中,一些客戶端會比其他客戶端更晚接收區塊,從而創建了區塊鏈頭部的多個版本,并且可能存在一定比例的行為不端的驗證器,這些驗證器可能在同一個slot提議或投票多個區塊。這意味著必須要有某種算法來從多個選項中挑選出真正的區塊鏈頭部。稍微提一下,信標鏈也會以固定的間隔使區塊鏈固定不變,這被稱為「最終性」。該過程通過將每個epoch中的第一個slot視為「檢查點」來工作。如果一個檢查點從持有存款合約中至少2/3總質押ETH的驗證器那里收集證明,那么它被稱為「justified」的。一旦該檢查點在其之上有另一個檢查點,它就成為「最終」檢查點。然后,分叉選擇算法只考慮區塊鏈中不合理部分的區塊。證明并最終確定區塊鏈的算法稱為「CasperFFG」,而分叉選擇算法本身被稱為LMD-GHOST,這是一種用行話表達的方式,即正確的區塊鏈是累積了最多證明的區塊鏈,并且如果從同一驗證器接收到多條消息,則只有最后一條消息才算。每個驗證器使用此規則評估每個區塊,并將最重的區塊添加到其規范鏈中。每個epoch時期,驗證器需要簽署一份證明,該證明包含兩條關鍵信息:「LMD投票」和「FFG投票」。LMD投票是驗證器認為區塊鏈頭部的區塊的根,FFG投票包含目標檢查點和源檢查點的區塊哈希以及epoch,其中源檢查點是鏈已經知道的最近正當檢查點,而目標檢查點是下一個要證明的檢查點。因此,信標鏈的共識算法是LMD-GHOST和CasperFFG的組合,有時我們也將其稱為Gasper。簡單了解了這個背景知識后,我們可以繼續研究這個系統可能受到的一些攻擊方式。
第0層攻擊
首先,沒有積極參與以太坊的個人,可選擇針對社交層來攻擊以太坊網絡。盡管這些攻擊從未真正直接影響任何以太坊軟件的執行,但它們會給以太坊帶來風險。第0層是構建以太坊的基礎,因此它代表了一個潛在的攻擊面,其后果會波及堆棧的其余部分。以下是我想到的一些例子:?
數據:以太坊2.0質押量超1250萬枚,再創歷史新高:5月11日消息,據多鏈數據分析平臺Nansen數據顯示,截止目前ETH2.0存款合約地址質押數已達到1250萬枚,再創歷史新高。[2022/5/11 3:06:42]
1、跨多個平臺發起并持續數月或數年的重大錯誤信息宣傳活動,可能會削弱社區對以太坊路線圖、開發團隊的信任。這可能會減少愿意參與網絡安全的個人數量,降低去中心化和加密經濟安全性。
2、針對開發者社區的定向攻擊或恐嚇,這可能導致開發人員自愿退出,并減緩以太坊的發展,同時更廣泛地打擊士氣。
3、過度熱情的監管也可以被視為一種第0層攻擊,因為它可能會迅速抑制參與和采用。
4、知識淵博但惡意的參與者滲透到開發者社區,其目的是通過減少討論、延遲關鍵決策、創建垃圾帖或轉移注意力提案等來減緩進度。
5、故意煽動以太坊社區的不滿情緒,目的是制造足夠的動蕩以造成永久性分裂。
6、向以太坊生態系統中的關鍵參與者行賄以影響決策。
在很多情況下,發動L0攻擊所需的資金或技術知識很少,這使得對社交層的攻擊尤其危險。真正需要的只是時間和惡意的意圖,而不是稀缺的資源。思考第0層攻擊如何成為一次加密經濟攻擊的倍增器也很有趣。例如,如果審查或最終性逆轉是由惡意的多數質押者實現的,那么破壞社交層可能會使帶外社區協調響應更加困難。
防御第0層攻擊可能并不簡單,但可以建立一些基本原則。一是保持以太坊公共信息的整體高信噪比,以太坊由社區的誠實成員通過博客、discord服務器、帶注釋的規范、書籍、播客以及YouTube創建和傳播。Ethereum.org就是一個很好的例子,特別是他們正在迅速將其廣泛的文檔和解釋文章翻譯成多種語言。用高質量的信息和meme充斥一個空間,是防止錯誤信息的有效防御措施。以太坊社區擅長于此,但長期的第0層安全需要持續致力于創建和傳播高質量信息。
另一個針對社交層攻擊的重要防御措施,是明確的使命聲明和治理協議。以太坊將自己定位為智能合約L1中的去中心化和安全冠軍,同時也高度重視可擴展性和可持續性。無論以太坊社區出現什么分歧,這些核心原則都會受到最低限度的影響。根據這些核心原則評估敘述,并通過EIP過程中的連續幾輪審查,可能有助于社區區分出好人和壞人,并限制惡意行為者影響以太坊未來方向的范圍。
最后,以太坊社區保持開放并歡迎所有參與者,這一點至關重要。一個有看門人、精英主義和排他性的社區,尤其容易受到社交攻擊,因為這很容易構建「我們和他們」的敘事。另一方面,一個開放和包容的社區是通過開放的討論更有效地消除錯誤信息的社區。部落主義和有的最大主義傷害了社區,這會侵蝕第0層的安全。以太坊通常有一個非常開放的社區,它歡迎新的參與者,但隨著社區規模的擴大,這可能會變得越來越難以維持。對網絡安全有既得利益的以太坊社區成員,應將其在線行為和在現實世界中的行為視為對以太坊第0層安全的直接貢獻,因為正如我們將在本文后面討論的,強大的社交層是抵御協議攻擊的最后一道防線。
攻擊者的獎勵
第0層攻擊可能旨在破壞公眾對以太坊的信任、使ETH貶值、降低以太坊的采用率,并使以太坊容易被其他競爭鏈超越,或者是削弱以太坊社區,使帶外協調(out-of-bandcoordination)更加困難。然而,攻擊以太坊網絡本身所能獲得的好處并不明顯。
一個常見的誤解是,成功的攻擊允許攻擊者生成新的ETH,或從任意賬戶中提取ETH。這兩種說法都是不可信的,因為添加到區塊鏈的所有交易都由網絡上的所有執行客戶端執行。它們必須滿足有效性的基本條件,否則它們會簡單地還原。攻擊者實際上可能會針對幾種結果發起攻擊:重組、雙重最終性或最終性延遲。
「重組」是對區塊鏈頭部區塊的重新排列。在攻擊中,這旨在確保包含或排除某些區塊,即使它們不在誠實的網絡中。這可能允許攻擊者進行「雙花」,例如,將他們的ETH發送到交易所并將其兌現成法定貨幣,然后重組以太坊區塊鏈以刪除這筆交易,這樣他們最終能夠拿回ETH并獲得法幣。或者,重組可能允許老練的攻擊者通過搶先交易或尾隨式交易從其他人的交易中提取價值,或者重組可能會持續阻止某人或某些組織的交易被包含在規范鏈中,從而有效地從以太坊網絡中對其進行審查。
最極端的重組形式是「最終性反轉」,它可刪除或替換先前已經確定的區塊。這種情況只有在至少1/3質押的ETH被銷毀時才有可能發生,這種保證被稱為「經濟最終性」,稍后我們會詳細介紹。
雙重最終性攻擊的可能性很低,但這種情況會很嚴重,發生時兩個分叉能夠同時確定區塊,從而造成永久性的區塊鏈分裂。這在理論上是可能的,只要攻擊者能夠掌握34%及以上總質押的ETH,并愿意冒險失去它們。然后社區將被迫進行鏈外協調,并就遵循哪條鏈達成共識。稍后我們將詳細探討這些類型的社會協調防御。
最終性延遲攻擊會阻止網絡達到Casper-FFG確定鏈的必要條件。這將對以太坊的應用層造成極大的破壞,因為在以太坊之上運行的許多應用都依賴于快速最終性來運行。如果對區塊鏈的最終確定性沒有高度信心,就很難相信建立在它之上的金融應用。最終性延遲攻擊的目的,可能只是為了破壞以太坊,而不是直接獲利,除非攻擊者部署了一些戰略空頭頭寸。
CNBC主持人:自己持有以太坊,是因為相信最大笨蛋理論:10月31日消息,CNBC Mad Money節目主持人Jim Cramer為加密投資者提供一些建議。他表示,“只要你認識到加密貨幣的整個投資案例建立在最大笨蛋理論基礎上的真實可能性,你就有機會對其進行投機。”他表示自己之所以持有以太坊,是因為他相信“可能會有數百萬更大的傻瓜”。
最大笨蛋理論認為,資產的價格取決于你能否在以后的某個時間點以更高的價格出售它。該理論指的是這樣一種觀點:你可以通過購買一項資產來賺錢,因為有人最終愿意以更高的價格從你那里購買它。
Jim Cramer稱,“歸根結底,我已經反復說過,你可以使用比特幣或以太坊作為對沖通脹的工具,最高可占自己儲蓄的5%,作為黃金的替代品。”(Bitcoin.com)[2021/10/31 6:22:54]
懶惰和發送相互矛盾的消息
任何人都可以運行以太坊的客戶端軟件,即使沒有運行驗證器。人們這樣做是因為它提供了區塊鏈的本地副本,可用于非常快速地驗證數據,并使交易能夠私下提交給以太坊網絡,而無需通過中心化的第三方。然而,不同時運行驗證器的節點運營商,就無法參與區塊生產或驗證。這意味著他們根本不會影響到網絡安全。非驗證節點運營商攻擊信標鏈的可能性可以忽略不計,除非他們也發起不相關的第0層攻擊。
要向共識客戶端添加一個驗證器,用戶需要在存款合約中質押32ETH。通過一個活躍的驗證器,用戶開始通過提議和證明新區塊來積極參與以太坊的網絡安全。在承擔這些額外責任的同時,用戶以ETH的形式獲得回報,但這也給他們帶來了報復行為的新機會。驗證者現在有了發言權,他們可以用于影響區塊鏈的未來內容,他們可以誠實地工作以增加他們的ETH儲備,或者他們可以冒著風險,嘗試操縱這個過程以實現自己的利益。發起攻擊的一種方法是累積大比例的質押權益,然后用它來擊敗誠實的驗證者。攻擊者控制的質押權益比例越大,他們的投票權也就越大,尤其是在我們稍后將探討的某些經濟里程碑上。然而,大多數攻擊者將無法積累足夠的ETH來實現這種攻擊方式,因此他們不得不使用微妙的技術來操縱誠實的大多數人以某種方式行事。
從根本上講,所有針對信標鏈的小規模質押攻擊都是兩種類型的驗證器錯誤行為的細微變化:活動不足或過度活動。在最普通的形式中,這些行為很容易由分叉選擇算法和激勵層處理,但有一些聰明的方法可以讓這些算法對攻擊者有利。目前已經發現了幾種這樣的技術,主要是仔細協調其消息的時間和傳播,以控制整個驗證器集的不同子集如何查看區塊鏈的狀態,從而控制它們的行為方式。下一節將描述低質押攻擊者攻擊網絡的一些方式,以及如何抵御這些攻擊。
小型質押者的攻擊
1)短程重組
有幾篇論文解釋了針對信標鏈的攻擊,這些攻擊僅使用了一小部分質押的ETH來實現重組或最終性延遲攻擊。這些攻擊通常依賴于攻擊者向其他驗證器隱瞞一些信息,然后以某種微妙的方式或在某個適當的時候發布它。這些攻擊通常旨在從規范鏈中替換一些誠實的區塊。當攻擊開始時,這些誠實的區塊尚未被創建,這種攻擊被稱為事前重組,而不是事后重組。在PoS以太坊中,如果不控制2/3質押的ETH,事后重組實際上是不可能的。如果攻擊者控制的質押權益百分比少于66%,則攻擊者完成事后重組的機會非常低。
上圖:由控制2/3質押權益的攻擊者執行的事后重組攻擊。他們忽略了在slotN+1中提出的誠實區塊B,而是投票支持區塊N作為區塊鏈的頭部。然后他們投票給slotN+2中的區塊C,同時,因為分叉選擇規則看到來自前一個而不是當前slot的證明,他們在slotN+2中投票給區塊B,而不誠實的驗證者投票給區塊C。當slotN+3到達時,兩個分叉都有66%的權重,然后由競爭區塊哈希的字典順序決定。如果這對攻擊者有利,他們就成功地從區塊鏈中刪除了區塊B。
另一方面,可以很好地防止事后重組的相同機制,可以被老練的攻擊者在非常特定和不太可能的網絡條件下用來創建事前重組。例如,這篇論文展示了攻擊驗證者如何為特定slotn+1創建和證明區塊(B),但避免將其傳播到網絡上的其他節點。相反,他們會扣留該已證明的區塊,直到下一個slotn+2。誠實的驗證者為slotn+2提出一個區塊及其保留的證明,并證明區塊是區塊鏈的頭部,他們對slotn+2的投票,有效地否認了誠實區塊的存在。當誠實區塊被釋放時,分叉選擇算法看到區塊建立在區塊之上,要比建立在區塊之上的區塊更重。因此,攻擊者成功地使用1區塊事前重組將slotn+2中的誠實區塊從規范鏈中移除。掌握34%質押權益的攻擊者有很好的機會在這次攻擊中獲勝,因為他們的投票給了攻擊者首選的分叉68%的權重,而誠實分叉的權重為66%,如此處所述。這意味著他們不需要依靠操縱誠實的驗證器來與他們一起投票。不過,理論上,這種攻擊可以用更少的質押比例來嘗試。Neuder等人描述了在30%質押比例下的事前重組攻擊方式,但后來證明,在控制2%比例的質押權益下,這種事前重組攻擊也是可行的。
數據:以太坊銷毀量已超過2萬枚:據歐科云鏈鏈上大師數據顯示,當前以太坊共計已銷毀20109 ETH,單個區塊銷毀均值為0.68 ETH。[2021/8/10 1:45:11]
上述單區塊重組攻擊的概念圖
一個成功的重組攻擊者無法改變歷史,但他們可以不誠實地改變未來。他們不需要控制大多數質押的ETH就可以做到這一點,盡管他們成功的機會會隨著控制質押比例的增加而增加。這種重組攻擊可允許他們實現雙花或通過front-running大額交易來提取MEV。這種攻擊還可以擴展到多個區塊,但成功的可能性會隨著重組長度的增加而降低。
2)彈跳攻擊和平衡攻擊
更復雜的攻擊可以將誠實的驗證器集,拆分為對區塊鏈頭部有著不同看法的離散小組,這被稱為平衡攻擊。在這種情況下,攻擊者等待機會提出一個區塊,當它到達時,他們會在同一個slot中提出兩個區塊。他們將一個區塊發送給誠實驗證器集的一半,將另一個區塊發送給另一半。分叉選擇算法將檢測到這種模棱兩可的情況,并且區塊提議者會被罰沒并從網絡中彈出,但這兩個區塊仍然存在,并且將有大約一半的驗證器集證明每個分叉。在花費單個驗證器罰沒成本的情況下,攻擊者成功地將區塊鏈一分為二。與此同時,其余的惡意驗證器扣留了他們的證明。然后,通過在執行分叉選擇算法時有選擇地將有利于一個或另一個分叉的證明發布給足夠的驗證器,他們能夠讓網絡看到任何一個具有最多累積證明的分叉。這可以無限期地繼續下去,攻擊驗證者在兩個分叉上保持驗證器的平均分配。由于兩個分叉都無法吸引2/3的絕對多數,所以信標鏈無法最終確定。攻擊驗證者控制的質押權益比例越大,在任何給定epoch時間段進行攻擊的可能性就越大,因為他們越有可能選擇驗證器在每個slot中提議一個區塊。即使只控制1%的質押權益,發動平衡攻擊的機會平均每100個epoch時期就會出現一次,這并不需要等待太久。
一種名為彈跳攻擊的類似攻擊方式,也只需要控制一小部分質押權益。在這種情況下,攻擊的驗證器再次拒絕投票。這一次,他們沒有發布投票來保持兩個分叉之間的平均分配,而是在適當的時候使用他們的投票來證明在分叉A和分叉B之間交替的檢查點的合理性。兩個分叉之間的這種翻轉,可停止最終確定性。
3)彈跳攻擊和平衡攻擊的防御措施
彈跳攻擊和平衡攻擊都依賴于攻擊驗證器將其證明延遲到某個適當的時刻,以便對網絡產生巨大的影響。因此,只有在不太可能的網絡同步條件下,并且攻擊者通過緊密協調的共謀驗證器對消息時間進行非常精細的控制情況下,這種攻擊才是可行的。盡管如此,仍然有必要關閉這個攻擊向量。為了防止遲到的消息影響共識,與及時收到的消息相比,遲收到的消息的權重可以減少。這被稱為提議者權重提升方案。
對于彈跳攻擊,修復方法是更新分叉選擇算法,以便最新的合理檢查點只能在每個epoch的前1/3slot期間切換到替代鏈的檢查點。這種情況可以防止攻擊者保存投票,以便以后部署。針對這些延遲投票攻擊的另一種防御措施是,與每個slot遲到的投票相比,為及時到達的投票分配更大的權重。
結合起來,這些措施創造了一個場景,在這個場景中,一個誠實的區塊提議者在slot開始后非常迅速地發出它們的區塊,然后大約1/3slot的時間段,這個新區塊可能會導致分叉選擇算法切換到另一條鏈。在同一截止時間之后,與較早到達的證明相比,來自較慢驗證器的證明的權重會較低。這非常有利于快速提議者和驗證器確定區塊鏈頭部,并大大降低彈跳攻擊和平衡攻擊的可能性。從本質上講,這些防御措施可以防止基于大型網絡異步性的攻擊,即使在上述情況下,也不需要對消息發布進行精細控制。因此,在很大程度上,這些類型的攻擊風險,已通過對分叉選擇算法的修改得到了緩解,這些修改有利于快速活動并懲罰延遲。
值得一提的是,提議者權重提升方案只能抵御「廉價重組」攻擊,即攻擊者以少量質押權益進行的重組攻擊。事實上,在另一種事前重組攻擊中,提議者權重提升方案本身可能被更大的質押者玩弄。這篇文章的作者描述了控制7%質押權益的攻擊者如何戰略性地部署他們的投票,以欺騙誠實的驗證器在他們的分叉上構建,重組掉一個誠實的區塊。投票給對手分叉的誠實驗證器會及時投票,以便攻擊者從提議者權重提升方案中受益。同樣,這種攻擊是在假設理想的延遲條件下設計的,而在實際情況下很難滿足這種條件。總的來說,攻擊者控制的質押權益比例越大,其成功攻擊的幾率就越大。而更大的質押權益,也意味著更多的風險資本以及更強的經濟抑制力。
4)高級平衡攻擊
上面描述的彈跳攻擊和平衡攻擊依賴于惡意驗證器對網絡上其他驗證器何時收到他們的消息進行非常精細的控制,而這類攻擊已通過提議者權重提升方案有效地緩解了。但是,研究者還描述了一種額外的攻擊,它不依賴于對網絡延遲的細粒度控制。在這種情況下,攻擊者需要在兩個后續slot中使用一個提議的驗證器。其中一個對抗性區塊提議者在slotn中提議一個區塊,然后第二個對抗性區塊提議者在slotn+1中提議一個沖突區塊,從而創建一個分叉。由于沒有一個區塊提議者模棱兩可,因此不會發生罰沒的情況。在這個例子中,我們假設分叉A會更有利。攻擊者可以知道這一點,攻擊者還可以估計網絡上一半驗證器提交證明所需的時間……來自slotn的保留投票可以在大約一半驗證器投票的時間點被釋放。這些是來自slotn的支持分叉B的證明。因此,一半的驗證器組投票支持分叉A,因為它們不知道分叉B上的額外證明,而另一半投票支持權重更重的分叉B。在n+1中扣留的敵對投票可用于彌補分叉B上因發布扣留證明的時間不準確而造成的任何不足。
去中心化跨鏈交易協議AnySwap集成以太坊側鏈xDai網絡:以太坊側鏈xDai網絡在去中心化跨鏈交易協議AnySwap上集成后,xDai可通過AnySwap集成的以太坊2層網絡解決方案接入Polygon,目前在Polygon和xDAI之間跨鏈轉賬ANY可能無需以太坊Gas。此外,AnySwap和xDai之后還會合作在xDai上線Unistake和WBTC。[2021/3/25 19:17:18]
這種平衡攻擊是針對分叉選擇算法的理想版本描述的,它比以太坊共識客戶端中實際實現的分叉選擇算法具有更可預測的證明時間,而在真正的信標鏈上執行這種攻擊,則要困難得多。將攻擊者的節點分布在網絡拓撲中可以幫助攻擊者在一定程度上克服這一問題,因為他們的消息在整個網絡中傳播的速度要快于來自一個拓撲位置的消息。
還有人提出了一種專門針對LMD規則的平衡攻擊,盡管有了提議者權重提升方案,這種攻擊仍被認為是可行的。攻擊者通過模糊他們的區塊提議,并將每個區塊傳播到大約一半的網絡來建立兩條競爭鏈,從而在分叉之間建立近似平衡。然后,相互勾結的驗證器會模棱兩可地投票,以使一半的網絡首先收到它們對分叉A的投票,而另一半網絡首先收到它們對分叉B的投票。由于LMD規則丟棄了第二個證明并且只為每個驗證者保留第一個證明,因此一半的網絡只會看到A的投票而B沒有投票,另一半網絡會看到B的投票而A沒有投票。文章的作者描述了LMD規則賦予了攻擊對手「非凡的力量」來發起平衡攻擊。
這種LMD攻擊向量,已通過更新分叉選擇算法關閉了,以便它完全從分叉選擇考慮中丟棄模棱兩可的驗證器。模棱兩可的驗證器也可以通過分叉選擇算法降低其未來影響。這可以防止上述平衡攻擊,同時還可以保持對雪崩攻擊的彈性。
5)雪崩攻擊
2022年3月的一篇論文描述了另一種稱為雪崩攻擊的攻擊類型。這篇論文的作者認為,提議者權重提升方案無法防止雪崩攻擊的某些變體。然而,論文作者也只展示了對以太坊分叉選擇算法的高度理想化版本的攻擊。
要發動一次雪崩攻擊,攻擊者需要控制多個連續的區塊提議者。在每個區塊提議slot中,攻擊者扣留他們的區塊,收集它們直到誠實鏈達到與扣留區塊相等的subtree子樹權重。然后,攻擊者釋放被扣留的區塊,使其最大程度地造成混亂。這意味著,例如,對于6個扣留區塊,第一個誠實區塊n與敵對區塊n競爭創建一個分叉,然后所有5個剩余的敵對區塊都在n+1處與誠實區塊競爭。這意味著建立敵對區塊n和n+1的分叉現在吸引了誠實的證明,因為此時誠實鏈的權重等于敵對鏈的權重。現在可以對剩余的扣留區塊重復此操作,從而允許攻擊者阻止誠實的驗證器跟隨鏈的誠實頭部,直到攻擊者模棱兩可的區塊用完為止。如果攻擊者在攻擊過程中有更多機會提出區塊,他們可以使用這些區塊來擴展攻擊,這樣,越多的驗證器參與共謀攻擊,攻擊持續的時間就越長,并且可以將更多誠實的區塊從規范鏈中移出。
而LMD-GHOST分叉選擇算法的LMD部分減輕了雪崩攻擊,LMD的意思是「最后一條消息驅動」,它指的是每個驗證器保存的一個表格,其中包含從其他驗證器收到的最新消息。只有當新消息來自比特定驗證器表中已存在的slot更晚的slot時,該字段才會更新。在實踐中,這意味著在每個slot中,接收到的第一條消息就是它接受的消息,任何附加消息都可以忽略。換句話說,共識客戶端使用來自每個驗證器最先到達的消息,并且相互矛盾的消息會被簡單地丟棄,以防止雪崩攻擊。
6)最終性延遲
首次描述低成本單區塊重組攻擊的同一篇論文,還描述了一種最終性延遲攻擊,該攻擊依賴于攻擊者是epoch邊界區塊的區塊提議者。這是至關重要的,因為這些epoch邊界區塊成為了CasperFFG用于最終確定鏈的各個部分的檢查點。攻擊者簡單地扣留他們的區塊,直到有足夠多的誠實驗證器使用其FFG投票支持前一個epoch邊界區塊作為當前最終性目標。然后,他們釋放扣留的區塊,并證明自己的區塊,而其余的誠實驗證器也會這樣做,這樣會創建具有不同目標檢查點的分叉。如果他們的時間恰到好處,他們將阻止最終性,因為不會有2/3的絕對多數證明任何一個分叉。攻擊者控制的質押權益比例越小,則時間需要越精確,因為攻擊者直接控制的證明越少,攻擊者控制提出給定epoch邊界區塊的驗證器的幾率就越低。
7)關于長程攻擊的說明
還有一類特定于權益證明區塊鏈的攻擊,其涉及參與創始區塊的驗證器在誠實的區塊鏈旁維護一個單獨的區塊鏈分叉,最終說服誠實的驗證器在很久以后的某個適當時間切換到它。這種類型的攻擊在信標鏈上是不可能的,因為「finalitygadget」可確保所有驗證器定期就誠實鏈的狀態達成一致。這種簡單的機制可以消除對長程攻擊者的擔憂,因為以太坊客戶端根本不會重組最終確定的區塊。加入網絡的新節點通過找到一個受信任的最近狀態哈希并將其用作偽創始區塊來構建。這將為進入網絡的新節點創建一個「信任網關」,然后它才能開始為自己驗證信息。然而,從對等方或區塊瀏覽器或其他地方收集檢查點所需的信任,并沒有增加隱含在客戶端開發團隊中的信任,因此主觀性是「弱的」。因為根據定義,檢查點由網絡上的所有節點共享,所以不誠實的檢查點是共識失敗的癥狀,那此時,無論如何,帶外社會協調必須接管以拯救誠實的驗證者。
Circle向以太坊網絡新增發1,514萬枚USDC:據DAppTotal穩定幣專題頁面數據顯示:11月07日10時44分 ,USDC發行方Circle向以太坊網絡新增發1筆價值1,514萬美元的USDC, 塊高度為:11207668,交易哈希值為:0x97e1afe5f195cfb9436dccce93fe72a99804e4977982c228b15256893b9c6375 。截至目前,Circle在以太坊網絡上的ERC20 USDC總發行量已達2,896,130,274枚。[2020/11/7 11:55:03]
這一切都表明,要以少量的質押權益成功攻擊信標鏈是非常困難的。這里描述的可行攻擊需要一個理想的分叉選擇算法,以及可能性極低的網絡條件,或者攻擊向量已通過客戶端軟件相對較小的補丁關閉。當然,我們并不能排除零日漏洞在野外存在的可能性,但這確實證明了少數質押權益攻擊者要成功實現攻擊所需的極高的技術能力,對共識機制的了解以及運氣。從攻擊者的角度來看,他們最好的選擇可能是盡可能多地積累質押的ETH。
8)拒絕服務攻擊
以太坊的PoS機制從所有驗證器集中選擇一個驗證器,以作為每個slot中的區塊提議者。這可以使用一個公共函數進行計算,并且對手有可能在他們的區塊提議之前稍微提前識別下一個區塊提議者。然后,攻擊者可以向區塊提議者發起垃圾信息,以防止他們與對等方交換信息。對于網絡的其余部分,區塊提議者似乎處于離線狀態,并且slot將簡單地變空。這可能是對特定驗證者的一種審查形式,以阻止他們向區塊鏈添加信息。攻擊者的成本取決于驗證者的帶寬,這意味著對家庭質押者發起拒絕服務攻擊,要比使用工業級硬件和互聯網連接的專業人員要便宜得多,這使得業余愛好者更容易受到審查。這個問題有一些變通方法,但這些方案也有利于專業驗證者,而不是家庭質押者。例如,運行多個節點并將區塊構建與網絡通信分開可以提供額外的保護層,因為節點身份和驗證者身份是解耦的。節點運行者可能會在短時間內切換身份或重新獲取身份,以避免拒絕服務攻擊。從長遠來看,實施單一秘密leader選舉或非單一秘密leader選舉方案可以更有效地緩解驗證者審查問題,因為只有區塊提議者才能知道他們已經被選中,并且事先不知道他們的選擇。所有驗證器都將對秘密的承諾提交到一個反復洗牌的池子當中。然后一個隨機承諾會被公開選出,只有被選中的驗證器才能知道,因為連接已經被混淆了。這項工作尚未實施,但它是一個活躍的研發領域。
驗證者控制的質押權益比例大于或等于33%
將質押ETH的控制權分散給更多人,要比集中在少數人的手中更安全。這是因為一個人控制的質押權益越多,其對以太坊共識的影響就越大。當攻擊者掌握了足夠的質押權益時,本文中提到的所有攻擊都更有可能成功,并且可能選擇更多的驗證器在每個slot中提議區塊。因此,惡意驗證者的目標可能是控制盡可能多的質押ETH。
33%的質押ETH是攻擊者的一個基準,如果其控制的ETH超過了這個數量,他們就有能力阻止信標鏈最終確定,而無需精細控制其他驗證器的操作。它們可以簡單地一起消失。這是因為要最終確定信標鏈,必須有2/3的質押ETH來證明檢查點對。如果1/3或更多的質押ETH被惡意證明或未能證明,那么2/3的絕對多數就不可能存在。對此的防御措施是信標鏈的消極懲罰機制,這是一種緊急安全措施,它會在信標鏈4個epoch時期未能最終確定后觸發。消極懲罰標識了那些未能證明或證明與大多數人相反的驗證器。這些非證明驗證器擁有的質押ETH會逐漸流失,直到最終它們占總數的比例不到1/3,這樣區塊鏈才能再次finalize。
消極懲罰機制的目的是讓信標鏈再次實現最終確定,而攻擊者也會失去一部分質押的ETH。假設沒有可罰沒的攻擊,并且攻擊驗證器只是未能證明,它們的不活動分數被更新,這向網絡的其余部分表明該驗證器將在每個epoch時期受到懲罰,直到它們的不活動分數返回為零。當消極懲罰機制處于活動狀態時,每個epoch的不活動驗證器分數會增加4,而活動驗證器分數會減少1。一旦消極懲罰機制停用,所有活動驗證器的不活動分數都會降低。對于不活躍時間較長的驗證器來說,這需要更長的時間,因為它們有更多的不活躍分數要消耗。而持續的不活動狀態,會更慢消耗不活躍分數。對于一個離線100個epoch的驗證器,它的不活動分數將達到400左右,而懲罰大小的計算公式為:?
不活動分數*驗證器余額/
inactivity_score*?
validator_balance/(inactivity_score_biasxinactivity_penalty_quotient)?
其中不活動分數偏差是在每個epoch時期增加驗證器分數的數字,不活動懲罰商是將非證明驗證器的余額減少到其初始值大約60%所用時間的平方,設置的時間大約為37.5天。這意味著攻擊者通過未能證明來阻止最終性的時間越長,他們質押權益被燃燒的越多。UpgradingEthereum展示了一個圖表,該圖表估計了始終處于脫機狀態的驗證器在短時間消極懲罰期間和之后驗證器余額的減少情況。在135個epoch時期之后,驗證器的余額從32ETH降至31.996ETH,損失了0.004ETH。而要讓一個攻擊者控制33%的ETH質押權益,他們必須運行大約144,000個驗證器,每個驗證器至少持有32ETH。這意味著他們延遲信標鏈最終確定性的攻擊,將至少花費0.004x144000=576ETH。按當前市場價計算,這大約相當于109萬美元。花掉近100萬美元的成本,將信標鏈的最終確定性推遲半天,這對信標鏈本身的長期影響很小。
當然,更持久的消極懲罰要更加昂貴,事實上,懲罰的幅度會呈二次方的速度增加,直到信標鏈再次開始最終確定。攻擊者進行最終性延遲攻擊的確切成本,取決于他們的初始余額、他們保持離線的時間以及重新獲得最終性所需的時間。然而,最重要的是,即使驗證器沒有被罰沒,33%的驗證器持續不活動也是極其昂貴的。
假設以太坊網絡是異步的,控制34%總質押權益的攻擊者可能會引發雙重確定性攻擊。這是因為攻擊者在被選為區塊生產者時可以模棱兩可,然后與其掌握的所有驗證器進行雙重投票。這創造了一種區塊鏈分叉的情況,其中每個分叉都有34%質押的ETH投票支持。每個分叉只需要50%的剩余驗證器投票支持兩個分叉,從而得到絕對多數的支持,在這種情況下,兩條鏈都可以最終確定。每個競爭區塊都必須由大約50%的誠實驗證器接收,因此只有當攻擊者能夠在一定程度上控制消息在網絡上傳播的時間時,這種攻擊才可行,這樣他們才能將一半誠實驗證器推到每條鏈上。這也是為什么這種攻擊需要網絡異步的原因——如果所有節點都立即收到消息,它們將立即知道這兩個區塊,并通過拒絕較早接收的區塊來處理模棱兩可的問題。攻擊者必須銷毀其全部質押的權益以實現這種雙重確定性攻擊,因為他們34%的驗證器將同時進行雙重投票,而這是一種具有最大相關性懲罰的可罰沒攻擊。防御這種攻擊的代價,只是銷毀34%總質押ETH的巨大成本。
而從這種攻擊中恢復過來,需要以太坊社區進行帶外協調并同意遵循其中一個分叉,而忽略另一個分叉。與這種社會支持相關的復雜性,我們將在后面討論。
攻擊者控制的質押權益比例大約為50%
理論上,在一個惡意驗證者控制的質押ETH比例達到50%的情況下,他可以將以太坊區塊鏈分裂成兩個大小相等的分叉。與前面描述的平衡攻擊類似,攻擊者可通過為同一個slot提出兩個區塊來僅使用他們的一個驗證器。然后,攻擊者不需要通過仔細傳輸消息來操縱一半的網絡,而只需使用其全部50%的質押權益與誠實的驗證器集進行相反的投票,從而維持兩個分叉并防止最終確定性。在四個epoch時期之后,兩個分叉上的消極懲罰機制將激活,因為每個分叉都會看到其一半的驗證器無法證明。每個分叉都會泄露驗證器集的另一半質押權益,最終導致兩條鏈以代表2/3絕對多數的不同驗證器完成。在這一點上,唯一的選擇就是依靠社區恢復,稍后我們會提到。然而,考慮到誠實驗證器數量、網絡延遲等變化,一組敵對的驗證者似乎不太可能始終精確地控制總質押權益的50%比例,但也許有一種方法,攻擊者可以利用略高于50%的質押權益,動態調整其在每個slot中的投票比例,以保持兩個分叉之間的完美平衡。雖然成功攻擊的風險,無疑會隨著攻擊者掌握的質押ETH比例的大小增加而增加,但與50%的質押權益相關的攻擊向量,似乎不太可能被成功利用,發動此類攻擊的巨大成本以及較低的成功率,對理性的攻擊者而言似乎是一個很強的抑制因素。
而當攻擊者控制的質押權益占到51%以上,則其可以控制分叉選擇算法。在這種情況下,攻擊者將能夠以多數投票作證,讓他們有足夠的控制權來進行短期重組,而無需欺騙誠實的客戶端。控制51%的質押權益不允許攻擊者改變歷史,但他們有能力通過將多數投票應用于對其有利的分叉,或將區塊重組來影響未來。誠實的驗證器會效仿,因為它們的分叉選擇算法也會將攻擊者喜歡的鏈視為最重鏈,因此該攻擊鏈可以最終確定。這使攻擊者能夠審查某些交易,進行短程重組,并通過重新排序對其有利的區塊來提取最大MEV。與工作量證明鏈一樣,51%攻擊也是非常有問題的。針對該問題的防御手段就是多數質押權益的巨大成本,攻擊者會面臨巨大的風險,因為社交層可能會介入,并采用誠實的少數派分叉,從而使攻擊者的質押權益大幅貶值。
攻擊者控制的質押權益比例大于或等于66%
控制66%或更多比例質押ETH的攻擊者可以確定其首選鏈,而無需強制任何誠實的驗證器。攻擊者可以簡單地投票選擇他們喜歡的分叉,然后最終確定它,僅僅是因為他們可以不誠實的絕對多數進行投票。作為絕對多數的質押者,攻擊者將始終控制最終區塊的內容,其擁有花費、回滾和再次花費的權力,他還能審查某些交易并隨意重組區塊鏈。通過購買額外的ETH以控制66%質押比例,而不是51%,攻擊者實際上購買了事后重組和最終性反轉的能力。當前控制66%ETH質押權益的成本約為250億美元,這里唯一的防御措施是退回到社交層來協調采用替代分叉。在下一節中,我們會更詳細地探討這一點。
第0層:最后一道防線
當區塊鏈的編碼防御被破壞,并且攻擊者能夠最終確定不誠實的區塊鏈時會發生什么?
這種情況可能會以多種方式出現,最明顯的是,當攻擊者控制多數質押權益,并且可以簡單地通過他們自己的投票或51%以上誠實驗證器的額外證明來完成。憑借控制34%質押比例的ETH,以及對網絡上消息傳遞的一些控制權,攻擊者可以最終確定兩個分叉。在某些情況下,重組鏈可能由于消極懲罰機制而最終確定。如果攻擊者成功將驗證器集劃分為兩個分叉,則消極懲罰機制將在兩個分叉上激活,那么問題就變成了,誠實或不誠實的驗證者會首先重新獲得最終確定性嗎?如果誠實的驗證者首先確定,那么誠實鏈就會變成規范鏈,網絡上所有客戶端的分叉選擇算法都會接受該鏈最終確定的部分,然后以太坊又回到了誠實玩家的控制之下。但如果不誠實的驗證者設法確定了區塊鏈,那么以太坊社區將處于非常困難的境地。規范鏈在其歷史中會包含不誠實的部分,而誠實的驗證者最終會受到懲罰。
第三種不太可能發生的情況是永久性的網絡分裂,其中一個分叉上的驗證器不知何故不知道對方分叉上的對應方。這會創建出兩個獨立確定的分叉鏈,每個分叉都會泄露另一組驗證器的質押權益。然后這兩條鏈永遠不會重新組合在一起,因為它們將有不同的最終檢查點。來自主導客戶端的漏洞,也可能導致損壞但最終確定的鏈。在以太坊的執行層方面,go-ethereum(Geth)客戶端占到了主導地位,超過85%的節點運行了該客戶端。而在共識層方面,Prysm客戶端目前占到了主導地位,在持續的社區活動之后,其占比才下降到50%左右。而主導執行客戶端或共識客戶端中的漏洞,可能會停止最終確定性或導致最終確定的數據不正確。在Kiln測試網上,Prysm中的一個漏洞影響了區塊生產,這無關緊要,因為節點在四個不同的客戶端中的份額大致相等,但如果是在主網,那么有超過66%的客戶端會遇到相同的錯誤。因此,會有幾條通往不誠實的最終確定鏈的路線,盡管它們的概率非常低。它們都需要在質押ETH上投入巨資,或者對驗證器集進行非常復雜的操作,截至目前,只有在理想條件下才證明是可行的,并且這些攻擊都通過軟件更新得到了緩解。然而,我們不能排除萬一的情況,那么,最終的解決方案就是依靠社交層。
以太坊PoS共識機制的優勢之一是,社區在面對攻擊者時可以采用一系列防御策略。最小的響應可能是強制將攻擊者的驗證器從網絡中退出,而不會受到任何額外的懲罰。而攻擊者要重新進入網絡,必須加入一個激活隊列,以確保驗證器集逐漸增長。例如,添加足夠的驗證器以使質押的ETH數量翻倍大約需要200天,在攻擊者可嘗試另一次51%攻擊之前,有效地為誠實驗證器帶來了200天的應對時間。當然,社區也可以決定更嚴厲地懲罰攻擊者,比如取消過去的獎勵,或燃燒掉攻擊者的部分質押資本。
無論對攻擊者施加何種懲罰,社區還必須共同決定不誠實的區塊鏈是否實際上無效,并且社區應該建立在誠實的替代鏈上。誠實的驗證器可以集體同意構建在社區認可的以太坊分叉之上,例如,在攻擊開始之前可能已經分叉了規范鏈,或者強行移除了攻擊者的驗證器。誠實的驗證器將被激勵在該分叉鏈上構建,而建立在以太坊上的交易所和應用可能更喜歡在誠實鏈上,并會跟隨誠實的驗證器進入誠實的區塊鏈。然而,這將是一個極其混亂的治理挑戰。一些用戶和驗證者無疑會因為切換回誠實鏈而輸掉資金,攻擊后驗證的區塊交易可能會被回滾,從而擾亂應用層,這完全沖擊了傾向于相信「代碼就是法律」的用戶。此外,一些用戶,甚至可能是機構用戶,他們會通過精明或機緣巧合的方式從不誠實的區塊鏈中獲益,并可能反對分叉以保護他們的收益。有人呼吁社區對超過51%的質押攻擊進行應對演練,以便能夠快速執行合理的協調緩解措施。Vitalik在ethresear.ch以及Twitter上都進行了一些有益的討論。
治理已經是一個復雜的話題,而對于以太坊社區來說,對不誠實的最終鏈進行第0層緊急響應無疑會是一個挑戰,但在以太坊的歷史上,這已經發生了兩次。最終,即使我們擁有如此驚人的技術堆棧,如果最壞的情況發生,社區的參與者也必須協調出一條出路。
總結
本文探討了以太坊合并到權益證明共識機制后,攻擊者可能會采用的一些攻擊信標鏈的方式。總體而言,攻擊者控制的質押ETH比例越多,其攻擊的成功機會就越大,因為他們的質押權益可以轉化為投票權,以此用來影響未來區塊的內容。而隨著攻擊者控制的質押ETH比例增大,其能夠實現的破壞力就越大:
1、33%:延遲最終性?
2、34%:導致雙重最終性?
3、51%:審查,控制區塊鏈的未來?
4、66%:審查,控制區塊鏈的過去與未來?
還有一些更復雜的攻擊方式,它們只需要控制少量的質押ETH,但這些攻擊要求攻擊者對消息時間的精細控制,以使誠實的驗證器集對他們有利。
總的來說,盡管存在這些潛在的攻擊向量,但信標鏈的風險很低,甚至要低于工作量證明的等效鏈。這是因為攻擊者為了用投票權壓倒誠實的驗證器,需要將質押ETH的巨大成本置于風險之中。內置的「胡蘿卜加大棒」激勵層可以防止大多數的惡意行為,尤其是對于低質押的攻擊者。更微妙的彈跳攻擊和平衡攻擊也不太可能成功,因為真實的網絡條件使得很難實現對特定驗證器子集的消息傳遞進行精細控制,并且客戶端團隊已經用簡單的補丁快速關閉了已知的彈跳攻擊、平衡攻擊以及雪崩攻擊向量。
而34%、51%或66%攻擊可能需要社區協調才能解決。雖然這對社區來說可能是痛苦的,但社區在帶外響應的能力對攻擊者來說是一個強大的抑制因素。以太坊社交層是最終的后盾,一次技術上成功的攻擊仍可能被同意采用誠實分叉的社區所扼殺。最終,攻擊者和以太坊社區之間會有一場競賽,如果進行得足夠快,用于66%攻擊花費的250億美元可能會被一次成功的社交協調攻擊所抹殺。
對于攻擊者來說,有利可圖的可能性會很低,這足以起到有效的威懾作用。這就是為什么維持一個價值觀一致的凝聚力社會層,對于加密投資而言是如此重要的原因。
譯者注:截至目前,以太坊全網質押的以太幣數量大約為1400萬ETH,而通過Lido質押的以太幣數量已經達到了428萬ETH,這大約占到了30.5%的ETH質押比例,而這對于以太坊網絡而言無疑是最大的安全隱患,因此以太坊開發者們也建議質押者將ETH分散到不同的協議當中,而面對TornadoCash級別的審查,類似以太坊這樣的PoS鏈可能都是相對脆弱的,正如vitalik所言,社交層將作為最后的恢復手段。
頭條 ▌歐盟知識產權局更新NFT和虛擬商品商標申請指南金色財經報道,為應對包含虛擬商品和NFT相關術語的商標申請的突然增加.
1900/1/1 0:00:00當下互聯網正在進行一場Web3.0革命。2022年,我們可以看到,人們可以在元宇宙內聽音樂會,可以通過穩定幣進行跨境轉賬,也可以玩網絡游戲賺錢,一個接一個的創新,似乎正在昭示著以太坊聯合創始人加.
1900/1/1 0:00:00注:原文作者為Bankless代幣經濟學是一個新興的領域。該行業正在集體探索最佳設計、分配、效用、治理框架和其他一切。而這實際上是一張空白的畫布.
1900/1/1 0:00:00引言:作為市值第二的加密貨幣,以太坊網絡的任何變動都會受到市場的密切關注。以太坊的下一個重要升級“TheMerge”即將在9月到來,在OKLink官網專題頁可以清楚地看到,目前距離這次升級完成還.
1900/1/1 0:00:00摘要 深入研究“什么是DAO”的問題,并提出5個不同的概念視角,使我們能夠更有效的用于對現有組織機構的協調和研究.
1900/1/1 0:00:00金色財經報道,美國聯邦存款保險公司(FDIC)周五發出信函,要求五家公司及其管理人員、董事和雇員停止并終止就FDIC存款保險作出“虛假和誤導性陳述”.
1900/1/1 0:00:00