Útok a obrana důkazu podílem (PoS) na Ethereu
Zloději a sabotéři neustále hledají příležitosti k útoku na klientský software Etherea. Tato stránka shrnuje známé vektory útoků na vrstvu konsensu Etherea a nastiňuje, jak se proti těmto útokům lze bránit. Informace na této stránce jsou převzaty z delší verze (opens in a new tab).
Předpoklady
Jsou vyžadovány základní znalosti o důkazu podílem (PoS). Také bude užitečné mít základní povědomí o motivační vrstvě Etherea a algoritmu volby forku, LMD-GHOST.
Co útočníci chtějí?
Častou mylnou představou je, že úspěšný útočník může generovat nový ether nebo vysát ether z libovolných účtů. Ani jedno z toho není možné, protože všechny transakce jsou prováděny všemi exekučními klienty v síti. Musí splňovat základní podmínky platnosti (např. transakce jsou podepsány soukromým klíčem odesílatele, odesílatel má dostatečný zůstatek atd.), jinak se jednoduše zvrátí. Existují tři třídy výsledků, na které by se útočník mohl reálně zaměřit: reorganizace, dvojí finalita nebo zpoždění finality.
„Reorganizace“ je přeskládání bloků do nového pořadí, případně s nějakým přidáním nebo odebráním bloků v kanonickém řetězci. Zlomyslná reorganizace by mohla zajistit zahrnutí nebo vyloučení konkrétních bloků, což by umožnilo dvojí útratu nebo extrakci hodnoty pomocí předbíhání a back-running transakcí (MEV). Reorganizace by také mohly být použity k zabránění zahrnutí určitých transakcí do kanonického řetězce – forma cenzury. Nejextrémnější formou reorganizace je „zvrácení finality“, které odstraňuje nebo nahrazuje bloky, které již byly finalizovány. To je možné pouze v případě, že útočník zničí více než ⅓ celkového stakovaného etheru – tato záruka je známá jako „ekonomická finalita“ – více o tom později.
Dvojí finalita je nepravděpodobný, ale závažný stav, kdy jsou dva forky schopny finalizovat současně, což vytváří trvalý rozkol v řetězci. To je teoreticky možné pro útočníka ochotného riskovat 34 % celkového stakovaného etheru. Komunita by byla nucena koordinovat se offchain a dohodnout se, který řetězec následovat, což by vyžadovalo sílu v sociální vrstvě.
Útok zpoždění finality brání síti v dosažení nezbytných podmínek pro finalizaci částí řetězce. Bez finality je těžké důvěřovat finančním aplikacím postaveným na Ethereu. Cílem útoku na zpoždění finality je pravděpodobně spíše narušit Ethereum než přímo profitovat, pokud útočník nemá nějakou strategickou krátkou pozici (short).
Útok na sociální vrstvu by mohl mít za cíl podkopat důvěru veřejnosti v Ethereum, znehodnotit ether, snížit adopci nebo oslabit komunitu Etherea, aby se ztížila mimořádná (out-of-band) koordinace.
Poté, co jsme si ujasnili, proč by protivník mohl zaútočit na Ethereum, následující části zkoumají, jak by to mohl provést.
Metody útoku
Útoky na vrstvu 0
Především jednotlivci, kteří se aktivně neúčastní Etherea (provozováním klientského softwaru), mohou útočit zacílením na sociální vrstvu (vrstva 0). Vrstva 0 je základem, na kterém je Ethereum postaveno, a jako taková představuje potenciální plochu pro útoky s důsledky, které se šíří zbytkem technologického zásobníku. Některé příklady mohou zahrnovat:
-
Dezinformační kampaň by mohla narušit důvěru komunity v plán vývoje (roadmap) Etherea, týmy vývojářů, aplikace atd. To by pak mohlo snížit počet jednotlivců ochotných podílet se na zabezpečení sítě, což by zhoršilo decentralizaci i kryptoekonomickou bezpečnost.
-
Cílené útoky a/nebo zastrašování namířené na vývojářskou komunitu. To by mohlo vést k dobrovolnému odchodu vývojářů a zpomalit pokrok Etherea.
-
Příliš horlivá regulace by také mohla být považována za útok na vrstvu 0, protože by mohla rychle odradit od účasti a adopce.
-
Infiltrace znalých, ale zlomyslných aktérů do vývojářské komunity, jejichž cílem je zpomalit pokrok zbytečnými diskusemi (bike-shedding), zdržováním klíčových rozhodnutí, vytvářením spamu atd.
-
Úplatky klíčovým hráčům v ekosystému Etherea za účelem ovlivnění rozhodování.
To, co činí tyto útoky obzvláště nebezpečnými, je skutečnost, že v mnoha případech je zapotřebí jen velmi málo kapitálu nebo technického know-how. Útok na vrstvu 0 by mohl fungovat jako multiplikátor kryptoekonomického útoku. Pokud by například cenzury nebo zvrácení finality dosáhl zlomyslný většinový držitel staku, podkopání sociální vrstvy by mohlo ztížit koordinaci reakce komunity mimo běžné kanály (out-of-band).
Obrana proti útokům na vrstvu 0 pravděpodobně není přímočará, ale lze stanovit některé základní principy. Jedním z nich je udržování celkově vysokého poměru signálu k šumu u veřejných informací o Ethereu, které vytvářejí a šíří poctiví členové komunity prostřednictvím blogů, serverů na Discordu, anotovaných specifikací, knih, podcastů a YouTube. Zde na ethereum.org se velmi snažíme udržovat přesné informace a překládat je do co nejvíce jazyků. Zaplavení prostoru vysoce kvalitními informacemi a memy je účinnou obranou proti dezinformacím.
Dalším důležitým opevněním proti útokům na sociální vrstvu je jasné prohlášení o poslání a protokol správy. Ethereum se profilovalo jako šampion v decentralizaci a bezpečnosti mezi sítěmi vrstvy 1 (l1) s chytrými kontrakty, přičemž si také vysoce cení škálovatelnosti a udržitelnosti. Ať už v komunitě Etherea vzniknou jakékoli neshody, tyto základní principy jsou kompromitovány jen minimálně. Posuzování narativů vůči těmto základním principům a jejich zkoumání prostřednictvím po sobě jdoucích kol revizí v procesu EIP (Návrh na vylepšení Etherea) může komunitě pomoci odlišit dobré aktéry od špatných a omezuje prostor pro zlomyslné aktéry ovlivňovat budoucí směřování Etherea.
Nakonec je kriticky důležité, aby komunita Etherea zůstala otevřená a vstřícná ke všem účastníkům. Komunita s „hlídači brány“ (gatekeepers) a exkluzivitou je obzvláště zranitelná vůči sociálním útokům, protože je snadné budovat narativy „my a oni“. Tribalismus a toxický maximalismus poškozují komunitu a narušují bezpečnost vrstvy 0. Ethereáni s osobním zájmem na bezpečnosti sítě by měli vnímat své chování online i ve fyzickém světě (meatspace) jako přímý příspěvek k bezpečnosti vrstvy 0 Etherea.
Útok na protokol
Kdokoli může provozovat klientský software Etherea. Pro přidání validátora do klienta je uživatel povinen vložit stake 32 etherů do depozitního kontraktu. Validátor umožňuje uživateli aktivně se podílet na zabezpečení sítě Etherea navrhováním a atestací nových bloků. Validátor má nyní hlas, kterým může ovlivnit budoucí obsah blockchainu – může tak činit poctivě a rozšiřovat svou zásobu etheru prostřednictvím odměn, nebo se může pokusit zmanipulovat proces ve svůj prospěch a riskovat tak svůj stake. Jedním ze způsobů, jak zahájit útok, je nashromáždit větší část celkového staku a poté jej použít k přehlasování poctivých validátorů. Čím větší podíl staku útočník ovládá, tím větší je jeho hlasovací síla, zejména při určitých ekonomických milnících, které prozkoumáme později. Většina útočníků však nebude schopna nashromáždit dostatek etheru k útoku tímto způsobem, takže místo toho musí použít rafinované techniky k manipulaci poctivé většiny, aby jednala určitým způsobem.
V zásadě jsou všechny útoky s malým stakem jemnými variacemi na dva typy nesprávného chování validátora: nedostatečná aktivita (selhání při atestaci/navrhování nebo pozdní provedení) nebo nadměrná aktivita (navrhování/atestace příliš mnohokrát v jednom slotu). V jejich nejzákladnějších formách jsou tyto akce snadno zvládnuty algoritmem volby forku a motivační vrstvou, ale existují chytré způsoby, jak systém zneužít ve prospěch útočníka.
Útoky využívající malé množství ETH
reorganizace
Několik prací vysvětlilo útoky na Ethereum, které dosahují reorganizace nebo zpoždění finality s pouhým malým podílem celkového stakovaného etheru. Tyto útoky obecně spoléhají na to, že útočník zatají některé informace před ostatními validátory a poté je uvolní nějakým nuancovaným způsobem a/nebo ve vhodný okamžik. Obvykle mají za cíl vytlačit nějaký poctivý blok (nebo bloky) z kanonického řetězce. Neuder a kol. 2020 (opens in a new tab) ukázali, jak může útočící validátor vytvořit a atestovat blok (B) pro konkrétní slot n+1, ale zdržet se jeho šíření do ostatních uzlů v síti. Místo toho si tento atestovaný blok ponechají až do dalšího slotu n+2. Poctivý validátor navrhne blok (C) pro slot n+2. Téměř současně může útočník uvolnit svůj zadržený blok (B) a své zadržené atestace pro něj, a také atestovat, že B je hlavou řetězce svými hlasy pro slot n+2, čímž efektivně popře existenci poctivého bloku C. Když je uvolněn poctivý blok D, algoritmus volby forku vidí, že D stavějící na B je těžší než D stavějící na C. Útočníkovi se tak podařilo odstranit poctivý blok C ve slotu n+2 z kanonického řetězce pomocí 1blokové ex ante reorganizace. Útočník s 34 % (opens in a new tab) staku má velmi dobrou šanci na úspěch v tomto útoku, jak je vysvětleno v této poznámce (opens in a new tab). Teoreticky by se však o tento útok dalo pokusit i s menšími staky. Neuder a kol. 2020 (opens in a new tab) popsali tento útok fungující s 30% stakem, ale později se ukázalo, že je životaschopný s 2 % celkového staku (opens in a new tab) a poté znovu pro jediného validátora (opens in a new tab) pomocí vyvažovacích technik, které prozkoumáme v další části.
Koncepční diagram výše popsaného útoku s reorganizací jednoho bloku (převzato z https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))
Sofistikovanější útok může rozdělit sadu poctivých validátorů do oddělených skupin, které mají různé pohledy na hlavu řetězce. To je známé jako vyvažovací útok (balancing attack). Útočník čeká na svou šanci navrhnout blok, a když přijde, dopustí se ekvivokace a navrhne dva. Jeden blok pošle polovině sady poctivých validátorů a druhý blok druhé polovině. Ekvivokace by byla detekována algoritmem volby forku a navrhovatel bloku by byl penalizován a vyloučen ze sítě, ale oba bloky by stále existovaly a měly by asi polovinu sady validátorů atestujících každý fork. Mezitím zbývající zlomyslní validátoři zadržují své atestace. Poté selektivním uvolněním atestací upřednostňujících jeden nebo druhý fork právě dostatečnému počtu validátorů přesně v okamžiku, kdy se provádí algoritmus volby forku, převáží nahromaděnou váhu atestací ve prospěch jednoho nebo druhého forku. To může pokračovat donekonečna, přičemž útočící validátoři udržují rovnoměrné rozdělení validátorů mezi oba forky. Vzhledem k tomu, že žádný fork nemůže přilákat 2/3 supervětšinu, síť by nefinalizovala.
Odrazové útoky (bouncing attacks) jsou podobné. Hlasy jsou opět zadržovány útočícími validátory. Místo uvolnění hlasů k udržení rovnoměrného rozdělení mezi dvěma forky používají své hlasy ve vhodných okamžicích k ospravedlnění kontrolních bodů, které se střídají mezi forkem A a forkem B. Toto přeskakování ospravedlnění mezi dvěma forky brání tomu, aby existovaly páry ospravedlněných zdrojových a cílových kontrolních bodů, které lze finalizovat na kterémkoli řetězci, čímž se zastaví finalita.
Jak odrazové, tak vyvažovací útoky spoléhají na to, že útočník má velmi jemnou kontrolu nad načasováním zpráv v síti, což je nepravděpodobné. Nicméně do protokolu jsou zabudovány obranné mechanismy ve formě dodatečného vážení, které je dáno rychlým zprávám ve srovnání s těmi pomalými. To je známé jako zvýšení váhy navrhovatele (proposer-weight boosting) (opens in a new tab). Na obranu proti odrazovým útokům byl algoritmus volby forku aktualizován tak, aby nejnovější ospravedlněný kontrolní bod mohl přejít na kontrolní bod alternativního řetězce pouze během první 1/3 slotů v každé epoše (opens in a new tab). Tato podmínka brání útočníkovi v šetření hlasů pro pozdější nasazení – algoritmus volby forku jednoduše zůstává loajální kontrolnímu bodu, který si vybral v první 1/3 epochy, během níž by většina poctivých validátorů hlasovala.
V kombinaci tato opatření vytvářejí scénář, ve kterém poctivý navrhovatel bloku vyšle svůj blok velmi rychle po začátku slotu, pak následuje období ~1/3 slotu (4 sekundy), kdy by tento nový blok mohl způsobit, že algoritmus volby forku přepne na jiný řetězec. Po uplynutí stejné lhůty jsou atestace, které dorazí od pomalých validátorů, váhově znevýhodněny ve srovnání s těmi, které dorazily dříve. To silně zvýhodňuje pohotové navrhovatele a validátory při určování hlavy řetězce a podstatně snižuje pravděpodobnost úspěšného vyvažovacího nebo odrazového útoku.
Stojí za zmínku, že samotné zvýšení váhy navrhovatele brání pouze proti „levným reorganizacím“, tj. těm, o které se pokouší útočník s malým stakem. Ve skutečnosti může být samotné zvýšení váhy navrhovatele zneužito většími držiteli staku. Autoři tohoto příspěvku (opens in a new tab) popisují, jak může útočník se 7 % staku strategicky nasadit své hlasy, aby oklamal poctivé validátory, aby stavěli na jeho forku, čímž zreorganizuje poctivý blok. Tento útok byl vymyšlen za předpokladu ideálních podmínek latence, které jsou velmi nepravděpodobné. Šance jsou pro útočníka stále velmi malé a větší stake také znamená více ohroženého kapitálu a silnější ekonomickou demotivaci.
Byl také navržen vyvažovací útok specificky zaměřený na pravidlo LMD (opens in a new tab), u kterého se předpokládalo, že bude životaschopný navzdory zvýšení váhy navrhovatele. Útočník vytvoří dva konkurenční řetězce tím, že se dopustí ekvivokace při návrhu bloku a rozšíří každý blok do zhruba poloviny sítě, čímž vytvoří přibližnou rovnováhu mezi forky. Poté se tajně spolupracující validátoři dopustí ekvivokace svých hlasů a načasují to tak, aby polovina sítě obdržela jejich hlasy pro Fork A jako první a druhá polovina obdržela jejich hlasy pro Fork B jako první. Vzhledem k tomu, že pravidlo LMD zahodí druhou atestaci a ponechá pouze první pro každého validátora, polovina sítě vidí hlasy pro A a žádné pro B, druhá polovina vidí hlasy pro B a žádné pro A. Autoři popisují, že pravidlo LMD dává protivníkovi „pozoruhodnou moc“ k provedení vyvažovacího útoku.
Tento vektor útoku LMD byl uzavřen aktualizací algoritmu volby forku (opens in a new tab) tak, že zcela vyřazuje validátory dopouštějící se ekvivokace z úvah o volbě forku. Validátoři dopouštějící se ekvivokace mají také svůj budoucí vliv znehodnocen algoritmem volby forku. To zabraňuje výše nastíněnému vyvažovacímu útoku a zároveň zachovává odolnost proti lavinovým útokům.
Další třída útoků, nazývaná lavinové útoky (avalanche attacks) (opens in a new tab), byla popsána v práci z března 2022 (opens in a new tab). K provedení lavinového útoku musí útočník ovládat několik po sobě jdoucích navrhovatelů bloků. V každém ze slotů pro návrh bloku útočník zadržuje svůj blok a shromažďuje je, dokud poctivý řetězec nedosáhne stejné váhy podstromu se zadrženými bloky. Poté jsou zadržené bloky uvolněny tak, aby se maximálně dopouštěly ekvivokace. Autoři naznačují, že zvýšení váhy navrhovatele – primární obrana proti vyvažovacím a odrazovým útokům – nechrání před některými variantami lavinového útoku. Autoři však také demonstrovali útok pouze na vysoce idealizované verzi algoritmu volby forku Etherea (použili GHOST bez LMD).
Lavinový útok je zmírněn částí LMD algoritmu volby forku LMD-GHOST. LMD znamená „řízený nejnovější zprávou“ (latest-message-driven) a odkazuje na tabulku udržovanou každým validátorem, která obsahuje nejnovější zprávu přijatou od ostatních validátorů. Toto pole se aktualizuje pouze v případě, že nová zpráva pochází z pozdějšího slotu, než je ten, který je již v tabulce pro konkrétního validátora. V praxi to znamená, že v každém slotu je první přijatá zpráva tou, která je přijata, a jakékoli další zprávy jsou ekvivokace, které je třeba ignorovat. Jinak řečeno, klienti konsensu nepočítají ekvivokace – používají první doručenou zprávu od každého validátora a ekvivokace jsou jednoduše zahozeny, což zabraňuje lavinovým útokům.
Existuje několik dalších potenciálních budoucích vylepšení pravidla volby forku, která by mohla zvýšit bezpečnost poskytovanou zvýšením váhy navrhovatele. Jedním z nich je sloučení pohledů (view-merge) (opens in a new tab), kde atestující zmrazí svůj pohled na volbu forku n sekund před začátkem slotu a navrhovatel pak pomáhá synchronizovat pohled na řetězec napříč sítí. Dalším potenciálním vylepšením je finalita v jednom slotu (single-slot finality) (opens in a new tab), která chrání před útoky založenými na načasování zpráv tím, že finalizuje řetězec po pouhém jednom slotu.
Zpoždění finality
Stejná práce (opens in a new tab), která poprvé popsala nízkonákladový útok s reorganizací jednoho bloku, také popsala útok na zpoždění finality (tzv. „selhání živosti“), který spoléhá na to, že útočník je navrhovatelem bloku pro blok na hranici epochy. To je kritické, protože tyto bloky na hranici epochy se stávají kontrolními body, které Casper FFG používá k finalizaci částí řetězce. Útočník jednoduše zadržuje svůj blok, dokud dostatek poctivých validátorů nepoužije své hlasy FFG ve prospěch předchozího bloku na hranici epochy jako aktuálního cíle finalizace. Poté uvolní svůj zadržený blok. Atestují svůj blok a zbývající poctiví validátoři také, čímž vytvoří forky s různými cílovými kontrolními body. Pokud to načasovali správně, zabrání finalitě, protože nebude existovat 2/3 supervětšina atestující pro žádný z forků. Čím menší je stake, tím přesnější musí být načasování, protože útočník přímo ovládá méně atestací a tím nižší je pravděpodobnost, že útočník ovládá validátora navrhujícího daný blok na hranici epochy.
Útoky na dlouhou vzdálenost (Long range attacks)
Existuje také třída útoků specifická pro blockchainy s důkazem podílem (PoS), která zahrnuje validátora, který se podílel na genesis bloku a udržuje samostatný fork blockchainu vedle toho poctivého, a nakonec přesvědčí sadu poctivých validátorů, aby na něj přešli v nějakou vhodnou dobu mnohem později. Tento typ útoku není na Ethereu možný kvůli mechanismu finality (finality gadget), který zajišťuje, že se všichni validátoři shodnou na stavu poctivého řetězce v pravidelných intervalech („kontrolní body“). Tento jednoduchý mechanismus neutralizuje útočníky na dlouhou vzdálenost, protože klienti Etherea jednoduše nebudou reorganizovat finalizované bloky. Nové uzly připojující se k síti tak činí nalezením důvěryhodného nedávného hashe stavu (kontrolní bod „slabá subjektivita (opens in a new tab)“) a jeho použitím jako pseudo-genesis bloku, na kterém budou stavět. To vytváří „bránu důvěry“ pro nový uzel vstupující do sítě, než může začít sám ověřovat informace.
Odepření služby (Denial of Service)
Mechanismus PoS Etherea vybírá z celkové sady validátorů jednoho validátora, který bude navrhovatelem bloku v každém slotu. To lze vypočítat pomocí veřejně známé funkce a je možné, aby protivník identifikoval dalšího navrhovatele bloku mírně v předstihu před jeho návrhem bloku. Poté může útočník spamovat navrhovatele bloku, aby mu zabránil ve výměně informací s jeho vrstevníky (peers). Zbytku sítě by se zdálo, že navrhovatel bloku byl offline a slot by jednoduše zůstal prázdný. To by mohla být forma cenzury proti konkrétním validátorům, která by jim bránila v přidávání informací do blockchainu. Implementace tajných voleb jednoho lídra (SSLE) nebo tajných voleb více lídrů zmírní rizika DoS, protože pouze navrhovatel bloku ví, že byl vybrán, a výběr není předem zjistitelný. To zatím není implementováno, ale je to aktivní oblast výzkumu a vývoje (opens in a new tab).
To vše ukazuje na skutečnost, že je velmi obtížné úspěšně zaútočit na Ethereum s malým stakem. Zde popsané životaschopné útoky vyžadují idealizovaný algoritmus volby forku, nepravděpodobné síťové podmínky, nebo již byly vektory útoku uzavřeny relativně malými záplatami klientského softwaru. To samozřejmě nevylučuje možnost existence zero-day zranitelností v praxi, ale ukazuje to extrémně vysokou laťku technických schopností, znalostí vrstvy konsensu a štěstí, které jsou nutné k tomu, aby byl útočník s menšinovým stakem efektivní. Z pohledu útočníka by mohlo být nejlepší sázkou nashromáždit co nejvíce etheru a vrátit se vyzbrojen větším podílem celkového staku.
Útočníci využívající >= 33 % celkového staku
Všechny útoky zmíněné dříve v tomto článku mají větší pravděpodobnost úspěchu, když má útočník více stakovaného etheru, se kterým může hlasovat, a více validátorů, kteří by mohli být vybráni k navrhování bloků v každém slotu. Zlomyslný validátor by se proto mohl snažit ovládat co nejvíce stakovaného etheru.
33 % stakovaného etheru je pro útočníka měřítkem, protože s čímkoli větším než toto množství má schopnost zabránit finalizaci řetězce, aniž by musel jemně kontrolovat akce ostatních validátorů. Mohou prostě všichni společně zmizet. Pokud 1/3 nebo více stakovaného etheru zlomyslně atestuje nebo selhává v atestaci, pak nemůže existovat 2/3 supervětšina a řetězec nemůže finalizovat. Obranou proti tomu je únik za neaktivitu. Únik za neaktivitu identifikuje ty validátory, kteří selhávají v atestaci nebo atestují v rozporu s většinou. Stakovaný ether vlastněný těmito neatestujícími validátory postupně krvácí, dokud nakonec společně nepředstavují méně než 1/3 celku, takže řetězec může znovu finalizovat.
Účelem úniku za neaktivitu je přimět řetězec k opětovné finalizaci. Útočník však také ztrácí část svého stakovaného etheru. Trvalá neaktivita napříč validátory představujícími 33 % celkového stakovaného etheru je velmi drahá, i když validátoři nejsou penalizováni.
Za předpokladu, že síť Etherea je asynchronní (tj. existují zpoždění mezi odesláním a přijetím zpráv), útočník ovládající 34 % celkového staku by mohl způsobit dvojí finalitu. Je to proto, že útočník se může dopustit ekvivokace, když je vybrán jako producent bloku, a poté dvojitě hlasovat se všemi svými validátory. To vytváří situaci, kdy existuje fork blockchainu, přičemž pro každý hlasuje 34 % stakovaného etheru. Každý fork vyžaduje pouze 50 % zbývajících validátorů, aby hlasovali v jeho prospěch, aby byly oba forky podporovány supervětšinou, v takovém případě mohou oba řetězce finalizovat (protože 34 % validátorů útočníka + polovina zbývajících 66 % = 67 % na každém forku). Konkurenční bloky by musely být přijaty asi 50 % poctivých validátorů, takže tento útok je životaschopný pouze tehdy, když má útočník určitou míru kontroly nad načasováním zpráv šířících se sítí, aby mohl postrčit polovinu poctivých validátorů na každý řetězec. Útočník by nutně zničil celý svůj stake (34 % z ~10 milionů etherů s dnešní sadou validátorů), aby dosáhl této dvojí finality, protože 34 % jeho validátorů by hlasovalo dvojitě současně – což je přestupek podléhající penalizaci s maximální korelační pokutou. Obranou proti tomuto útoku jsou velmi vysoké náklady na zničení 34 % celkového stakovaného etheru. Zotavení z tohoto útoku by vyžadovalo, aby se komunita Etherea koordinovala „out-of-band“ a dohodla se, že bude následovat jeden nebo druhý fork a ten druhý bude ignorovat.
Útočníci využívající ~50 % celkového staku
Při 50 % stakovaného etheru by zlomyslná skupina validátorů mohla teoreticky rozdělit řetězec na dva stejně velké forky a pak jednoduše použít celý svůj 50% stake k hlasování v rozporu se sadou poctivých validátorů, čímž by udržela dva forky a zabránila finalitě. Únik za neaktivitu na obou forcích by nakonec vedl k finalizaci obou řetězců. V tomto okamžiku je jedinou možností uchýlit se k sociální obnově.
Je velmi nepravděpodobné, že by nepřátelská skupina validátorů mohla trvale ovládat přesně 50 % celkového staku vzhledem k určité míře kolísání počtu poctivých validátorů, latenci sítě atd. – obrovské náklady na provedení takového útoku v kombinaci s nízkou pravděpodobností úspěchu se zdají být silnou demotivací pro racionálního útočníka, zvláště když malá dodatečná investice do získání více než 50 % odemkne mnohem větší moc.
Při >50 % celkového staku by útočník mohl ovládnout algoritmus volby forku. V tomto případě by útočník byl schopen atestovat většinovým hlasem, což by mu poskytlo dostatečnou kontrolu k provádění krátkých reorganizací, aniž by musel oklamat poctivé klienty. Poctiví validátoři by je následovali, protože jejich algoritmus volby forku by také viděl útočníkem preferovaný řetězec jako nejtěžší, takže by řetězec mohl finalizovat. To umožňuje útočníkovi cenzurovat určité transakce, provádět reorganizace na krátkou vzdálenost a extrahovat maximální MEV změnou pořadí bloků ve svůj prospěch. Obranou proti tomu jsou obrovské náklady na většinový stake (v současnosti těsně pod 19 miliardami USD), který útočník riskuje, protože sociální vrstva pravděpodobně zasáhne a přijme poctivý menšinový fork, čímž dramaticky znehodnotí útočníkův stake.
Útočníci využívající >=66 % celkového staku
Útočník s 66 % nebo více celkového stakovaného etheru může finalizovat svůj preferovaný řetězec, aniž by musel nutit jakékoli poctivé validátory. Útočník může jednoduše hlasovat pro svůj preferovaný fork a poté jej finalizovat, jednoduše proto, že může hlasovat s nepoctivou supervětšinou. Jako držitel supervětšinového staku by útočník vždy ovládal obsah finalizovaných bloků, s mocí utrácet, přetáčet a znovu utrácet, cenzurovat určité transakce a libovolně reorganizovat řetězec. Nákupem dalšího etheru k ovládnutí 66 % spíše než 51 % si útočník efektivně kupuje schopnost provádět ex post reorganizace a zvrácení finality (tj. měnit minulost a zároveň ovládat budoucnost). Jedinou skutečnou obranou jsou zde obrovské náklady na 66 % celkového stakovaného etheru a možnost uchýlit se k sociální vrstvě ke koordinaci přijetí alternativního forku. To můžeme podrobněji prozkoumat v další části.
Lidé: poslední linie obrany
Pokud se nepoctivým validátorům podaří finalizovat jejich preferovanou verzi řetězce, komunita Etherea se dostane do obtížné situace. Kanonický řetězec obsahuje nepoctivou část zapečenou do své historie, zatímco poctiví validátoři mohou nakonec být potrestáni za atestaci alternativního (poctivého) řetězce. Všimněte si, že finalizovaný, ale nesprávný řetězec by mohl vzniknout také z chyby ve většinovém klientovi. Nakonec je konečnou záchranou spolehnout se na sociální vrstvu – vrstvu 0 – k vyřešení situace.
Jednou ze silných stránek konsensu PoS Etherea je, že existuje řada obranných strategií (opens in a new tab), které může komunita tváří v tvář útoku použít. Minimální reakcí by mohlo být nucené provedení výstupu útočníkových validátorů ze sítě bez jakékoli další penalizace. Pro opětovný vstup do sítě by se útočník musel připojit k frontě na aktivaci, která zajišťuje, že sada validátorů roste postupně. Například přidání dostatečného počtu validátorů ke zdvojnásobení množství stakovaného etheru trvá asi 200 dní, což poctivým validátorům efektivně kupuje 200 dní, než se útočník může pokusit o další 51% útok. Komunita by se však také mohla rozhodnout potrestat útočníka přísněji, a to zrušením minulých odměn nebo spálením určité části (až 100 %) jeho stakovaného kapitálu.
Ať už je na útočníka uvalena jakákoli penalizace, komunita se také musí společně rozhodnout, zda je nepoctivý řetězec, přestože je upřednostňován algoritmem volby forku zakódovaným v klientech Etherea, ve skutečnosti neplatný a že by komunita měla místo toho stavět na poctivém řetězci. Poctiví validátoři by se mohli kolektivně dohodnout, že budou stavět na komunitou přijatém forku blockchainu Etherea, který se mohl například odštěpit od kanonického řetězce před začátkem útoku nebo z nějž byli útočníkovi validátoři nuceně odstraněni. Poctiví validátoři by byli motivováni stavět na tomto řetězci, protože by se vyhnuli penalizacím, které by na ně byly uplatněny za to, že (správně) neatestovali útočníkův řetězec. Burzy, on-rampy a aplikace postavené na Ethereu by pravděpodobně preferovaly být na poctivém řetězci a následovaly by poctivé validátory na poctivý blockchain.
To by však byla značná výzva pro správu. Někteří uživatelé a validátoři by nepochybně prodělali v důsledku přechodu zpět na poctivý řetězec, transakce v blocích validovaných po útoku by mohly být potenciálně vráceny zpět, což by narušilo aplikační vrstvu, a to zcela jednoduše podkopává etiku některých uživatelů, kteří mají tendenci věřit, že „kód je zákon“. Burzy a aplikace s největší pravděpodobností propojily offchain akce s onchain transakcemi, které nyní mohou být vráceny zpět, což by spustilo kaskádu stažení a revizí, které by bylo těžké spravedlivě rozplést, zvláště pokud byly neoprávněně získané zisky smíchány, uloženy do decentralizovaných financí (DeFi) nebo jiných derivátů se sekundárními dopady na poctivé uživatele. Nepochybně někteří uživatelé, možná i institucionální, by již z nepoctivého řetězce těžili, ať už díky prozíravosti nebo náhodě, a mohli by se postavit proti forku, aby ochránili své zisky. Objevily se výzvy k nácviku reakce komunity na >51% útoky, aby bylo možné rychle provést rozumné koordinované zmírnění. Užitečná diskuse od Vitalika je na ethresear.ch zde (opens in a new tab) a zde (opens in a new tab) a na Twitteru zde (opens in a new tab). Cílem koordinované sociální reakce by mělo být velmi cílené a specifické potrestání útočníka a minimalizace dopadů na ostatní uživatele.
Správa je již tak složité téma. Řízení nouzové reakce na vrstvě 0 na nepoctivý finalizující řetězec by pro komunitu Etherea bylo nepochybně náročné, ale v historii Etherea se to již stalo – dvakrát.
Nicméně je něco docela uspokojivého na tom, že konečná záchrana leží ve fyzickém světě (meatspace). Nakonec, i s tímto fenomenálním technologickým zásobníkem nad námi, kdyby se někdy stalo to nejhorší, skuteční lidé by se z toho museli zkoordinovat.
Shrnutí
Tato stránka prozkoumala některé ze způsobů, jak by se útočníci mohli pokusit zneužít protokol konsensu důkazu podílem (PoS) Etherea. Reorganizace a zpoždění finality byly prozkoumány pro útočníky s rostoucími podíly celkového stakovaného etheru. Celkově má bohatší útočník větší šanci na úspěch, protože jeho stake se promítá do hlasovací síly, kterou může použít k ovlivnění obsahu budoucích bloků. Při určitých prahových množstvích stakovaného etheru se útočníkova moc zvyšuje:
33 %: zpoždění finality
34 %: zpoždění finality, dvojí finalita
51 %: zpoždění finality, dvojí finalita, cenzura, kontrola nad budoucností blockchainu
66 %: zpoždění finality, dvojí finalita, cenzura, kontrola nad budoucností a minulostí blockchainu
Existuje také řada sofistikovanějších útoků, které vyžadují malé množství stakovaného etheru, ale spoléhají na to, že velmi sofistikovaný útočník má jemnou kontrolu nad načasováním zpráv, aby zvrátil sadu poctivých validátorů ve svůj prospěch.
Celkově je navzdory těmto potenciálním vektorům útoku riziko úspěšného útoku nízké, určitě nižší než u ekvivalentů s důkazem prací (PoW). Je to kvůli obrovským nákladům na stakovaný ether, který riskuje útočník s cílem přemoci poctivé validátory svou hlasovací silou. Zabudovaná motivační vrstva „cukru a biče“ chrání před většinou zločinů, zejména u útočníků s nízkým stakem. Jemnější odrazové a vyvažovací útoky také pravděpodobně neuspějí, protože reálné síťové podmínky velmi ztěžují dosažení jemné kontroly doručování zpráv konkrétním podmnožinám validátorů a týmy klientů rychle uzavřely známé vektory odrazových, vyvažovacích a lavinových útoků jednoduchými záplatami.
Útoky s 34 %, 51 % nebo 66 % by k vyřešení pravděpodobně vyžadovaly sociální koordinaci out-of-band. I když by to pro komunitu bylo pravděpodobně bolestivé, schopnost komunity reagovat out-of-band je pro útočníka silnou demotivací. Sociální vrstva Etherea je konečnou pojistkou – technicky úspěšný útok by mohl být stále zneškodněn tím, že by komunita souhlasila s přijetím poctivého forku. Došlo by k závodu mezi útočníkem a komunitou Etherea – miliardy dolarů vynaložené na 66% útok by pravděpodobně byly zničeny úspěšným útokem sociální koordinace, pokud by byl proveden dostatečně rychle, a útočníkovi by zbyly těžké pytle nelikvidního stakovaného etheru na známém nepoctivém řetězci ignorovaném komunitou Etherea. Pravděpodobnost, že by to pro útočníka nakonec bylo ziskové, je dostatečně nízká na to, aby to bylo účinným odstrašujícím prostředkem. Proto jsou investice do udržování soudržné sociální vrstvy s úzce sladěnými hodnotami tak důležité.
Další čtení
- Podrobnější verze této stránky (opens in a new tab)
- Vitalik o finalitě vypořádání (opens in a new tab)
- Práce o LMD-GHOST (opens in a new tab)
- Práce o Casper FFG (opens in a new tab)
- Práce o Gasper (opens in a new tab)
- Specifikace konsensu pro zvýšení váhy navrhovatele (opens in a new tab)
- Odrazové útoky na ethresear.ch (opens in a new tab)
- Výzkum SSLE (opens in a new tab)
Poslední aktualizace stránky: 13. dubna 2026
