51%攻擊將如何影響以太坊社區(qū)
針對(duì)Casper FFG共識(shí)協(xié)議的安全性問題,以太坊聯(lián)合創(chuàng)始人Vitalik撰文表示:“(注:在以太坊應(yīng)用Casper FFG共識(shí)協(xié)議后),無論哪種情況,51%攻擊對(duì)于(以太坊)社區(qū)來說都是一個(gè)歡樂的時(shí)刻,因?yàn)橄胍斐?天或1周的破壞,攻擊者被消耗的ETH將是以年總產(chǎn)量為代價(jià)的,這反過來會(huì)增加ETH的價(jià)值,從而使未來的攻擊變得更為昂貴?!?/p>
(譯者注:Casper FFG是以太坊2.0在階段0將會(huì)采用的共識(shí)機(jī)制)
以下是譯文:
對(duì)共識(shí)系統(tǒng)執(zhí)行51%攻擊的成本雖然很大,但它并非是無限的,因此51%攻擊的風(fēng)險(xiǎn)始終存在。此外,如果攻擊成功,想要在“協(xié)議內(nèi)”實(shí)現(xiàn)恢復(fù)是非常困難的,而且往往是不可能的。在工作量證明(PoW)系統(tǒng)中,成功的51%攻擊是有利可圖的,因此攻擊可無限循環(huán)進(jìn)行,而針對(duì)ASIC工作量證明(PoW)系統(tǒng)的攻擊,可變得更便宜。而在權(quán)益證明(PoS)系統(tǒng)中,成功的51%攻擊可阻止新的存款。
這些事實(shí)告訴我們,必須要有一個(gè)連貫的策略來應(yīng)對(duì)51%攻擊,使得鏈能夠恢復(fù)正常運(yùn)行。這種策略不會(huì)經(jīng)常使用,它的存在也許足以阻止攻擊,因此其存在是需要的。正如我們將看到的,基于存款的PoS在一定程度上是高度安全的,因?yàn)槿魏?1%攻擊,都會(huì)給攻擊者帶來極高的經(jīng)濟(jì)損失。
最終確定性逆轉(zhuǎn)攻擊
最終確定性逆轉(zhuǎn)(Finality reversion)是目前為止被談?wù)撟疃嗟囊活?1%攻擊,而在PoS系統(tǒng)中,這是最容易被處理的一種攻擊。
很容易處理的原因是,它正是Casper FFG的“經(jīng)濟(jì)最終確定性”機(jī)制的設(shè)計(jì)初衷:BFT最終確定性的整個(gè)要點(diǎn)是,要最終確定兩個(gè)沖突的區(qū)塊,必須有一個(gè)a ≥ 1/3 ? |V| 相交驗(yàn)證者(intersection)集( |V|作為活躍驗(yàn)證者集的大?。┖炇鹆藘蓷l互相矛盾的消息,因此可在兩條鏈上進(jìn)行罰沒(slash)操作。
注意,客戶端實(shí)現(xiàn)的分叉選擇規(guī)則會(huì)阻止逆轉(zhuǎn)已完成的區(qū)塊。因此,如果在上面的場(chǎng)景中,上面的鏈?zhǔn)窃谙旅娴逆溨巴瓿?,那么在線客戶端都將停留在上面的鏈上。只有離線客戶端在返回在線狀態(tài)時(shí)才會(huì)看到兩個(gè)供選擇的鏈。因此,離線客戶端需要聯(lián)系社區(qū)(或者稱為“社區(qū)層”或“附加協(xié)議恢復(fù)”),以詢問哪條鏈?zhǔn)呛戏ǖ?。我們稱之為一個(gè)次要的附加協(xié)議負(fù)擔(dān)(minor extra-protocol burden):在線節(jié)點(diǎn)有一個(gè)自然而然的正確選擇,只有少數(shù)幾個(gè)節(jié)點(diǎn)需要詢問已經(jīng)達(dá)成的共識(shí)。
更困難的情況是兩條鏈同時(shí)完成:攻擊者需要嚴(yán)重操縱網(wǎng)絡(luò)(當(dāng)然是有可能的?。?,一次成功的攻擊需控制超過1/3 ? |V|,至少1/2 ? |V|,甚至可能需要2/3 ? |V|。此外,客戶端在一個(gè)區(qū)塊完成后會(huì)等待1分鐘,然后才將該區(qū)塊中的交易顯示為已完成,這將使得此類攻擊在實(shí)際執(zhí)行雙花攻擊時(shí)的用處大大降低。然而,這種雙終結(jié)性攻擊仍然可用來造成混亂。
從這種攻擊中恢復(fù)的最簡(jiǎn)單方法:用戶選擇支持LMD GHOST分叉規(guī)則的鏈,只考慮未被罰沒的驗(yàn)證者。然而,在一種邊界情況下,鏈A贏得了LMD GHOST分叉選擇規(guī)則,但鏈B稍早完成,這就會(huì)出現(xiàn)無法確定哪條鏈應(yīng)占主導(dǎo)地位的情況。
因此,一個(gè)愿意且能夠同時(shí)完成兩個(gè)鏈的攻擊者,可要求社區(qū)聚集在一起,任意選擇一條鏈或另一條鏈(我們可稱之為一個(gè)主要的額外協(xié)議負(fù)擔(dān)(major extra-protocol burden)),盡管代價(jià)對(duì)攻擊者而言是非常高的。
無論哪種情況,攻擊者被罰沒的驗(yàn)證者都應(yīng)該≥ 1/3 ? |V|,這將導(dǎo)致數(shù)百萬以太幣的懲罰。因此,攻擊者可能會(huì)中斷交易,并要求社區(qū)進(jìn)行商議,以及讓用戶手動(dòng)更新其客戶端,但代價(jià)會(huì)是極高的,這使得此類攻擊的發(fā)生非常困難,而且非常罕見。
驗(yàn)證者審查攻擊
另一種更困難的51%攻擊是審查攻擊。交易審查并不是一個(gè)大問題,因?yàn)槲覀兗僭O(shè)最終會(huì)有一個(gè)友好的驗(yàn)證者會(huì)將任何給定的交易打包到一個(gè)區(qū)塊中。相反,我們更關(guān)注的是驗(yàn)證者的審查。驗(yàn)證者的審查可能會(huì)有很多原因,而最可能的兩個(gè)原因是(i)審查那些拒絕合作的驗(yàn)證者,以及(ii)阻攔攻擊(discouragement attack)。
審查是更為棘手的,因?yàn)闆]有“罰沒條件”可以檢測(cè)到它:審查的本質(zhì)是,不包含你想要包含信息的行為。事實(shí)上,從不在線的任何驗(yàn)證者或客戶端的角度來看,A 審查B,和B不與A交談是不可區(qū)分的(這有時(shí)被稱為說話人-聽話人故障等效問題),了解有關(guān)此的更多信息,請(qǐng)參閱 https://vitalik.ca/general/2017/07/16/triangle_of_harm.html
然而,在線節(jié)點(diǎn)是可以檢測(cè)到審查行為的,因此,我們面臨的挑戰(zhàn)是處理“邊界條件”,并確定何時(shí)審查是足夠糟糕的,以至于協(xié)議外干預(yù)及處理不可避免出現(xiàn)邊界條件的挑戰(zhàn),是值得的。
讓我們區(qū)分兩個(gè)案例:首先是,審查集大于1/3 ? |V|,也就是說,介于1/2和2/3的驗(yàn)證者正在審查另一部分,并在這些驗(yàn)證者無法包含其消息的地方建立一條鏈。因?yàn)樯儆?/3的驗(yàn)證者在同一條鏈上,沒有區(qū)塊會(huì)被最終確定,在攻擊者的鏈上,攻擊者沒有損失任何金錢(但也沒有獲得任何回報(bào)),但受害者會(huì)損失他們大部分的存款。
受害者唯一的求助渠道是一個(gè)“少數(shù)派軟分叉”(minority soft fork),然后將審查鏈列入黑名單,并繼續(xù)在自己的鏈上工作。這種“少數(shù)派軟分叉”可自動(dòng)化進(jìn)行:如果一條鏈不接受你的證明,在fork選擇中會(huì)自動(dòng)取消其優(yōu)先級(jí),最終它將不再顯示為主導(dǎo)。
攻擊者將無法加入兩條鏈,因?yàn)樵诿總€(gè)epoch周期中,每個(gè)驗(yàn)證者只能選擇一條鏈參與,否則它們將遭到罰沒。最終,兩條分叉鏈都將完成一個(gè)區(qū)塊并恢復(fù)正常,在少數(shù)鏈上,攻擊者將損失其存款的很大一部分(至少一半)。
一個(gè)聰明的少數(shù)派群體,甚至可等到攻擊者的鏈證明一個(gè)新區(qū)塊,然后,少數(shù)派 可開始建立他們自己的鏈,如果他們這樣做了,攻擊者在不承受NO_SURROUND罰沒條件的情況下,將無法加入少數(shù)派的鏈。
而如果攻擊者沒有加入少數(shù)派鏈,他們將損失約一半的存款。
現(xiàn)在,讓我們考慮第二個(gè)案例,這個(gè)案例會(huì)比較溫和。攻擊者需控制2/3 ? |V|的驗(yàn)證者集,并審查剩余《1/3 ? |V|的驗(yàn)證者集,或者攻擊者執(zhí)行上述攻擊,但方式要更為溫和(每十個(gè)區(qū)塊完成一次攻擊)。在這種情況下,有兩種解決方案。首先,可嘗試協(xié)調(diào)外部代幣持有者加入和解封驗(yàn)證者。如果攻擊鏈拒絕了他們的存款,那么這個(gè)事實(shí)將對(duì)所有人都是可見的,并將崩潰成與前一個(gè)案例相同的場(chǎng)景。第二,仍然可協(xié)調(diào)少數(shù)派軟分叉,阻止攻擊者使用上述技術(shù)加入少數(shù)鏈。
請(qǐng)注意,這兩種技術(shù),都依賴于誠(chéng)實(shí)的少數(shù)人之間某種形式的協(xié)調(diào),以確定值得拉黑的鏈?zhǔn)鞘裁础H藗兛珊?jiǎn)單地依靠社區(qū)層(social layer)來實(shí)現(xiàn)這一點(diǎn),即使社區(qū)層做出不利于攻擊者的決定,也會(huì)使得期望中的攻擊代價(jià)變得高昂。
另外,我們可想象創(chuàng)造工具來協(xié)助協(xié)調(diào)。一個(gè)簡(jiǎn)單的例子是這里提出的99%容錯(cuò)共識(shí)提議:https://vitalik.ca/general/2018/08/07/99_fault_tolerant.html ,其可以在網(wǎng)絡(luò)延遲相當(dāng)?shù)偷脑诰€節(jié)點(diǎn)之間創(chuàng)建共識(shí)。
總結(jié)
在最終確定性逆轉(zhuǎn)攻擊的情況下,我們已經(jīng)知道攻擊者可能會(huì)遭到罰沒,因此攻擊可能會(huì)是非常昂貴的(懲罰將是數(shù)百萬ETH)。而試圖控制區(qū)塊的創(chuàng)建,以便在攻擊后在哪條鏈上繼續(xù)進(jìn)行額外的協(xié)議協(xié)調(diào)攻擊,其代價(jià)會(huì)更加高昂。相比之下,審查攻擊會(huì)更具挑戰(zhàn)性,因?yàn)槿绻鐓^(qū)沒有反應(yīng),它們會(huì)“默認(rèn)”成功并造成傷害(盡管客戶端可實(shí)現(xiàn)拒絕審查似乎過多的鏈),而這種攻擊可通過協(xié)議外的“少數(shù)派軟分叉”共識(shí)解決,該“少數(shù)派軟分叉”巧妙地使用了NO_SURROUND罰沒條件,將注意力集中在攻擊者無法合法加入的鏈上。
無論哪種情況,51%攻擊對(duì)于(以太坊)社區(qū)來說都是一個(gè)歡樂的時(shí)刻,因?yàn)橄胍斐?天或1周的破壞,攻擊者被消耗的ETH將是以年總產(chǎn)量為代價(jià)的,這反過來會(huì)增加ETH的價(jià)值,從而使未來的攻擊變得更為昂貴。此外,這可以通過軟分叉或分叉選擇規(guī)則功能來解決,而不需要硬分叉來手動(dòng)取出攻擊者的幣。
來源: 巴比特