比較:以太坊 PoS 和 PoW 安全性

語言: CN / TW / HK

本文將介紹以太坊合併後可能發生的共識級攻擊。

ETH PoS安全性

本節主要討論以太坊採用PoS共識機制後可能出現的共識級攻擊。

來自 Mirror 上的 jmcook.eth 的參考: http://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs

小型質押者的攻擊

短程重組

這是一種針對信標鏈的攻擊,通常由攻擊者對其他驗證者隱藏部分資訊,然後在特定時刻釋放這些資訊,以便實現雙花或通過預先執行的大型交易提取 MEV。這種攻擊也可以擴充套件到多個區塊,但成功的可能性會隨著重組長度的增加而降低。

這種攻擊本質上是一種區塊重組,它分為兩種型別:事前重組和事後重組。事前重組意味著攻擊者從主鏈中替換一個尚未建立的區塊,而事後重組則意味著攻擊者從主鏈中刪除一個經過驗證的區塊。就PoS以太坊的情況,攻擊者必須擁有超過2/3的區塊才能執行事後重組。與此同時,一些研究表明,即使攻擊者擁有65%的份額,成功攻擊的機率也不到0.05%。

短程重組攻擊是通過事前重組來實現的,攻擊者不需要控制大部分已質押的ETH就可以實現,並且成功的機率會隨著所控制的質押比例的增加而增加。

彈跳和平衡

平衡攻擊指攻擊者採取的特定手段,他們將誠實的驗證者集拆分為對區塊有不同看法的離散組。具體來說,攻擊者等待提出一個區塊的機會,當機會到來時,他們在同一個slot中提出兩個區塊。它們將一個區塊傳送給誠實驗證者集合的一半,將另一個區塊傳送給另一半。分叉選擇演算法將檢測到這種衝突,區塊支持者將被執行沒收並從網路中驅逐出去。然而,上面提到的兩個區塊仍然存在,並且將有大約一半的驗證者集來證明每一個分叉。攻擊者以喪失一個驗證者為代價,成功地將區塊鏈一分為二。同時,其餘的惡意驗證者保留他們的證明。然後,在分叉選擇演算法的執行過程中,有選擇地將有利於一個或另一個分叉的證明釋放給足夠多的驗證者,這允許它們生成具有最多累積證明的任何分叉。這種情況可以無限期地持續下去,攻擊者可以在兩個分叉上保持驗證者的均勻分佈。由於兩個分叉都不能吸引2/3的絕對多數,信標鏈不會最終確定。

在這種型別的攻擊中,由攻擊驗證者控制的總質押百分比越大,在任何給定時刻攻擊的可能性就越大,因為它們更可能選擇驗證者在每個slot中提出一個區塊。即使只有1%,發起平衡攻擊的機會平均每 100 個 epoch 就會出現一次,這不需要長時間的等待。

一種類似的攻擊,就是彈跳攻擊,它只佔一小部分。在這種情況下,攻擊驗證者再次拒絕投票。這一次,他們沒有釋出投票來保持兩個分叉之間的平均分配,而是在適當的時候使用他們的選票來證明在分叉A和分叉B之間交替的檢查點是合理的。這兩個分叉之間的證明的翻轉阻止了可以在任意一條鏈上完成的合理的源和目標檢查點對,從而終止了最終確定性。

雪崩攻擊

另一類攻擊被稱為雪崩攻擊,在2022年3月的一篇論文中對其進行了描述。作者認為,提議者增強,並不能防禦一些變種的雪崩攻擊。然而,作者也只演示了對以太坊分叉選擇演算法的高度理想化版本的攻擊(他們使用了沒有 LMD 的 GHOST)。其中,GHOST分叉選擇演算法將第一個分叉區塊及其所有對應的後代區塊所獲得的選票進行累積,並選擇票數最高的分叉作為主鏈。

為了發動雪崩攻擊,攻擊者需要控制幾個連續的區塊提議者。在每個區塊提議slot中,攻擊者保留他們的區塊,並收集它們,直到誠實鏈與保留的區塊達到相等的子樹權重。然後,釋放被保留的區塊,使它們最大限度地模糊。這意味著,例如,對於6個保留區塊,第一個誠實區塊n與對手區塊n競爭建立一個分叉,然後所有剩下的5個對手區塊都在n+1處與誠實區塊競爭。這意味著建立在對手區塊n和n+1上的分叉現在吸引了誠實的驗證,因為區塊在真正誠實的鏈的重量等於對抗鏈的重量的時刻被釋放。現在可以對尚未構建在其之上的保留區塊重複這一操作,允許攻擊者阻止誠實的驗證者跟隨誠實的鏈頭,直到它們的模糊區塊被用完。如果攻擊者在攻擊進行時有更多的機會提出區塊,他們可以使用它們來擴充套件攻擊,這樣,越多的驗證者參與攻擊,它可以持續的時間越長,並且可以將更多誠實的區塊從規範鏈中移出。

資料來源:對權益證明 GHOST/以太坊的兩次攻擊

LMD- ghost分叉選擇演算法的LMD部分可以緩解雪崩攻擊。LMD的意思是“最後訊息驅動”,它指的是每個驗證者儲存的一個表,其中包含從其他驗證者接收到的最新訊息。只有當新訊息來自某個特定驗證者表中已存在的slot之後的slot時,該欄位才會更新。在實踐中,這意味著在每個slot中,接收到的第一個訊息是它所接受的訊息,任何其他訊息都是要忽略的模稜兩可的訊息。換句話說,共識客戶端不計算模稜兩可——它們使用來自每個驗證者的第一個到達的訊息,模稜兩可會被丟棄,從而防止雪崩攻擊。

遠端攻擊

遠端攻擊也是權益證明(PoS)共識機制下的一種特定型別的攻擊,包括兩個主要場景:在第一個場景中,攻擊者作為參與原始區塊的驗證者,維護一個單獨的原始區塊鏈旁邊的區塊鏈分叉,並最終說服誠實的驗證者集合在很久以後的某個適當時間切換到它。然而,這種攻擊在信標鏈上是不可能發生的,因為“finality gadget”確保所有驗證者定期就誠實鏈(“檢查點”)的狀態達成一致,檢查點後的區塊不能重新組織。

在第二種情況下,當一個新節點加入網路時,它將從最近的節點(稱為弱主觀性檢查點)獲取資訊來構建一個區塊鏈作為偽創始區塊。這為新節點建立了一個“信任閘道器”,然後它才能開始自己驗證區塊。然而,從客戶端(如區塊瀏覽器)收集構建檢查點所需的可信區塊資訊並不能增加客戶端本身的可信度,因此主觀性是“弱”的。因為檢查點的定義是由網路上的所有節點共享的,所以不誠實的檢查點是共識失敗狀態。

驗證者控制了大部分的情況

33%

33%的質押份額是攻擊者的基準,因為如果超過這個數量,他們就有能力阻止信標鏈完成,也無需精細控制其他驗證者的行為。它們可以簡單地一起消失。這是因為要完成信標鏈,檢查點就必須由2/3的質押以太驗證。如果1/3或更多的質押以太惡意驗證或不驗證,那麼2/3的絕對多數就不可能存在。防禦這種情況的方法是信標鏈的不活動洩漏。這是一種緊急安全措施,在信標鏈未能完成四個epoch後觸發。不活動洩漏標識那些沒有驗證或驗證結果與大多數相反的驗證者。由這些非驗證的驗證者所擁有的質押以太幣會逐漸流失,直到最終它們共同佔總數的1/3以下,因此鏈可以再次被完成。

50%和51%

理論上,如果惡意驗證者控制了 50% 的質押 ETH,他就可以將以太坊區塊鏈分成兩個大小相等的分叉。與前面說過的平衡攻擊類似,攻擊者可以通過為同一slot提出兩個區塊然後簡單地使用其所控制的50%來投票反對誠實的驗證者集來維護兩個分叉並防止最終確定性。四個epoch之後,兩個分叉上的不活動洩漏機制將被啟用,因為每個分叉都會看到其一半的驗證者無法驗證。每個分叉都會抽取另一半驗證者集合的質押,最終導致兩條鏈由不同的驗證者代表 2/3 的絕對多數。在這一點上,唯一的選擇就是依靠社群恢復。

相比之下,當攻擊者控制了51%以上時,他們就可以控制分叉選擇演算法。在這種情況下,攻擊者將能夠通過多數票進行驗證,從而使他們有足夠的控制權來進行簡短的重組,而不需要欺騙誠實的客戶。51%的份額不允許攻擊者改變歷史,但他們有能力通過應用他們的多數票有利的分叉和/或重組不方便的不合理的區塊,以此來影響未來。誠實的驗證者會效仿,因為他們的分叉選擇演算法也會將攻擊者青睞的鏈視為最重的鏈,因此鏈可以最終確定。這使得攻擊者能夠審查某些交易,進行短程重組,並通過對區塊進行有利的重新排序來提取最大MEV。針對這種情況的防禦措施是,攻擊者將多數質押置於風險之中,因為社交層很可能介入並採用誠實的少數質押,從而使攻擊者的質押大幅貶值。

66%

擁有66%或更多的質押以太的攻擊者可以完成他們的首選鏈,並且他們不必強迫任何誠實的驗證者。攻擊者可以簡單地為他們喜歡的分叉投票,然後完成它,他們可以以不誠實的絕對多數進行投票。作為絕對多數質押,攻擊者將始終控制最終區塊的內容,擁有消費、回滾和再次消費、審查某些交易和隨意重組鏈的權力。攻擊者實際上是在購買進行事後重組和最終性還原(即改變過去和控制未來)的能力。這裡唯一真正的防禦是退回到社交層以協調採用替代分叉。

總的來說,儘管存在這些潛在的攻擊向量,信標鏈的風險還是很低的,甚至比它們的工作量證明等價物更低。這是因為攻擊者需要冒著質押ETH的巨大成本風險,來壓倒擁有投票權的誠實驗證者。內建的激勵層可以防止大多數惡意行為,特別是對低風險的攻擊者。更微妙的彈跳和平衡攻擊也不太可能成功,因為真實的網路條件很難對特定驗證者子集的訊息傳遞實現細粒度控制,而客戶端團隊已經用簡單的補丁快速修復了已知的彈跳、平衡和雪崩攻擊問題。

然而,33%、51%或66%的攻擊可能需要社群投票來解決,因此有效的社群治理對攻擊者來說是一個強大的抑制因素。對於攻擊者來說,技術上成功的攻擊仍然有被社群阻止的風險,這降低了攻擊者獲得足夠利潤以充當有效威懾的可能性。這就是為什麼保持一個具有一致價值觀的有效社群對投資那麼重要。

ETHPoW安全

礦工自以太坊成立以來一直扮演著重要的角色,但以太坊的合併將打破這一局面。Bitpro估計,GPU礦工需要關閉約95%的GPU,才能在合併後的加密生態系統中保持盈利。但由於合併後不太可能立即關閉這麼多GPU,礦工會在合併後嘗試PoW分叉。如果一些交易所也支援分叉,那麼分叉的壽命將比預期的要長。到目前為止,一些機構已經支援了ETHPoW硬分叉,包括Gate、OKX、f2pool、Matcha、BitMEX和Justin Sun。

2022年8月15日,Ethereum Pow在推特上釋出訊息稱,ETHW Core的初始版本已經在GitHub上釋出,主要功能如下:1.禁用難度炸彈;2. EIP-1559變更,基本費用改為由礦工和社群共同管理的多簽名錢包;3.調整ETHW的初始挖礦難度。

2022年8月26日,Ethereum PoW在推特上釋出了ETHW的第一個測試網“iceberg”。隨之而來的是區塊鏈瀏覽器和RPC伺服器。他們歡迎社群中所有潛在的合作伙伴(交易所、池、錢包提供商、橋、建設者等)加入到構建一個真正的POW驅動的以太坊生態系統中來。

那麼,以太坊合併後硬分叉ETHPoW可能會面臨哪些安全問題呢?我們將在下面詳細分析。

演算法攻擊

當系統中的惡意單個實體或組織能夠控制大部分(即超過 51%)的全網演算法時,51% 演算法攻擊是對區塊鏈網路的潛在攻擊。由於PoW演算法中的共識是由演算法決定的,這使得攻擊者可以利用演算法篡改賬本,從而導致對系統的惡意攻擊。以太坊合併後,無法再通過挖礦獲得收入的礦工將關閉他們的礦機,這導致基於POW的ETH分叉可能失去一些算力,例如,目前最大的礦池Ethermine已經發布公告,將停止支援ETH PoW挖礦。

一旦支援ETHPoW的算力下降,就會降低攻擊者發起演算法攻擊的代價。然後攻擊者可以租用礦池的大量算力,使其算力達到51%以上,此時,它可以利用算力優勢更快地生成區塊,當生成的區塊成為系統中最長的鏈時,它可以回滾區塊交易,實現資料篡改,這會造成很大的危害,如:雙花,任意地址控制交易等。

雙花

雙花攻擊是指攻擊者試圖重複消費其賬戶擁有的相同數字代幣。一個例子:

假設A在區塊高度1000處有51%的算力。A向B轉1個ETH,轉移交易由礦工打包。

交易確認後,A依靠51%的算力優勢,在區塊高度999後重新生成一條“更長的鏈”,並在區塊高度1000時將ETH重新轉移給C,並打包交易記錄,即鏈中包含A向C轉移ETH的記錄。

根據“最長鏈共識”,包含轉移到C的記錄的鏈成為主鏈,從A轉移到B的一個ETH為“無效支付”。

控制任何地址的交易

利用51%的算力,攻擊者可以在任意地址打包或解包交易,阻止區塊確認任意交易,甚至阻止部分礦工獲得有效的記賬權,從而達到控制任意地址交易的目的。

但是擁有51%的算力並不是萬能的,例如它不能修改別人的交易記錄,也不能阻止交易的發出,也無法憑空產生ETH。

重放攻擊

在傳統術語中,重放攻擊指的是攻擊者傳送一個已經被目標主機接收到的資料包,以達到欺騙系統的目的。在區塊鏈領域中,重放攻擊通常發生在區塊鏈硬分叉的情況下,這意味著“一條鏈上的交易在另一條鏈上通常是合法的”。

2016年7月20日,以太坊在第192萬個區塊高度發生硬分叉,產生了兩條鏈,分別稱為ETH鏈和ETH Classic鏈,對應的代幣分別為ETH和ETC。

由於這兩個鏈上的地址和私鑰是相同的,而且交易格式完全相同,因此其中一個鏈上的交易在另一個鏈上也是完全合法的。在一條鏈上發起的交易,如果在另一條鏈上重放,可能也會被確認。由於事先沒有適當的計劃,許多人利用這一漏洞,不斷地在交易所存取款,以獲得額外的ETC。因此,“重放攻擊”在區塊鏈世界中被重新定義。

目前以太坊合併中可能出現的硬分叉ETHPoW,理論上也可能存在上述問題。

應該做什麼來防止重放攻擊?事實上,很容易達到以升級為目的的分叉,因為硬分叉升級會使用不同的客戶端版本,並且交易的字首通常包含發起交易的客戶端的版本資訊。分叉之後,礦工通常會拒絕某個版本之前的交易,以避免打包來自老客戶端的“非法交易”(不是惡意交易,只是不被其他節點識別的低版本號),這使得惡意攻擊者很難在硬分叉升級期間通過重放攻擊竊取資金。

2022年8月23日,EthereumPoW 正式釋出第二次程式碼更新以強制執行 EIP-155。在此更新之後,所有交易都必須使用鏈ID進行簽名。這將保護ETHW使用者免受來自ETHPoS和其他分叉代幣的重放攻擊。

下面是對EIP-155的簡要介紹:

該提案被稱為“簡單重放攻擊保護”。如果 block.number >= FORK_BLKNUM 和 CHAIN_ID 可用,那麼在計算簽名交易的雜湊值時,不要只對前六個 rlp 編碼元素(nonce、gasprice、startgas、to、value、data)進行雜湊處理,而應該雜湊九個 rlp 編碼的元素(nonce、gasprice、startgas、to、value、data、chainid、0、0)。此時,簽名中v的值不再是recid,而是recid+ chainID*2+ 35。

因此,簡而言之,簽署交易時需要Signer和PrivateKey。需要Singer,是因為在EIP-155修復重放攻擊漏洞後,需要保持原有的區塊鏈簽名方法不變,但需要提供新版本的簽名方式。因此,新舊簽名方式通過一個介面實現,根據區塊高度建立不同的Signer。在EIP-155中實現的新雜湊演算法的主要目的是獲取交易用於簽名的雜湊值TxSignHash。與舊的方法相比,雜湊計算混合了鏈ID和兩個空值。注意,這個雜湊值TxSignHash並不等同於EIP-155中的交易雜湊值。

這樣,一個簽名交易可能只屬於唯一標識的區塊鏈。

另外,為保證專案安全,建議專案在合約中進行離線簽名驗證時,簽名資料應包含Chain ID,避免跨鏈簽名重用造成資產損失。

應用層專案

實際上,傳統的分叉是需要用算力做選擇的,而選擇的主角是礦工,而這一次,如果真的同時有兩個以太坊鏈,需要做出選擇的是整個以太坊生態系統。這裡的專案方是使用者和投資者。

今天的以太坊和2016年的硬分叉相比已經不可同日而語了,DeFi專案已經佔據了以太坊生態圈的大部分,但DeFi的基礎是鏈上資產,所以專案主要是沿著資產端。資產端是USDT、USDC等穩定資產,而DeFi的質押或者借貸專案基本都是以資產端為主。

對於這些穩定資產(這裡主要指穩定幣)的發行者來說,如果以太坊分叉發生,他們將突然面臨一個問題——兩個版本的穩定幣。作為穩定幣的發行人,每發行一枚穩定幣,就會突然有兩份債務義務。

雖然大多數人認為穩定幣發行者會將新的PoS鏈視為“真正的”以太坊網路,但如果他們想要支援PoW鏈呢?畢竟,他們有足夠的經濟動機這麼做。

例如,他們可以做空PoS以太坊代幣,在PoW網路上宣佈贖回,並賺取數十億美元。這可能會破壞新的以太坊網路,協議、交易所和相關的DeFi專案被關閉。這將造成巨大的混亂,並可能大規模摧毀加密貨幣市場。

同樣,以太坊分叉專案EthereumPow在8月17日釋出推文稱,ETHW Core將引入流動性池凍結技術來保護使用者資產。因在以太坊PoW硬分叉之後,特別是前幾個區塊,使用者存放在流動性池中的ETHW代幣,如Uniswap、Susiswap、Aave、Compound等,將被黑客利用,以廢棄或無價值的方式交換或借USDT、USDC、WBTC,這將對整個網路和社群造成巨大的破壞。因此,ETHW Core暫時凍結了一些LP合約,以保護使用者的ETHW代幣,直到協議的控制者或社群找到更好的方法來返還使用者的資產。凍結不適用於僅涉及單一資產的權益合約(如ETH2.0存款合約和打包以太幣)。ETHW Core建議每個人都在硬分叉之前從LP(如DEX和貸款協議)中撤出ETH。

Source: http://medium.com/@Beosin_com/ethereum-pos-and-pow-security-fd52a6153b1e

關於

ChinaDeFi– ChinaDeFi.com 是一個研究驅動的DeFi創新組織,同時我們也是區塊鏈開發團隊。每天從全球超過500個優質資訊源的近900篇內容中,尋找思考更具深度、梳理更為系統的內容,以最快的速度同步到中國市場提供決策輔助材料。

Layer 2道友– 歡迎對Layer 2感興趣的區塊鏈技術愛好者、研究分析人與Gavin(微信: chinadefi)聯絡,共同探討Layer 2帶來的落地機遇。敬請關注我們的微信公眾號 “去中心化金融社群”