Az Ethereum proof-of-stake rendszerére vonatkozó támadás és védekezés
Utolsó módosítás: @Satglow(opens in a new tab), 2023. augusztus 15.
A tolvajok és szabotőrök folyamatosan keresik a lehetőséget, hogy megtámadják az Ethereum kliensszoftverét. Ez az oldal ismerteti az Ethereum konszenzusrétegét érő ismert támadási vektorokat, és felvázolja, hogyan lehet ezeket a támadásokat kivédeni. Az ezen az oldalon található információk egy hosszabb változatból(opens in a new tab) származnak.
Előfeltételek
A proof-of-stake alapszintű ismerete szükséges. Hasznos lesz továbbá, ha alapszintű ismeretekkel rendelkezik az Ethereum ösztönzési réteg és az elágazásválasztási algoritmus, az LMD-GHOST működéséről.
Mit akarnak a támadók?
Gyakori tévhit, hogy egy sikeres támadó képes új ethert generálni, vagy tetszőleges számlákról ethert lehívni. Egyik sem lehetséges, mivel minden tranzakciót a hálózat összes végrehajtási kliense hajtja végre. A tranzakcióknak meg kell felelniük az érvényesség alapvető feltételeinek (például a tranzakciókat a feladó privát kulcsa írja alá, a feladónak elegendő egyenleggel kell rendelkeznie stb. Az eredménynek három osztálya van, amelyet egy támadó reálisan megcélozhat: átszervezés, dupla véglegesség vagy a véglegesség késleltetése.
Az átszervezés a blokkok új sorrendbe rendezése, esetleg a kanonikus láncban lévő blokkok hozzáadásával vagy kivonásával. Egy rosszindulatú átszervezés biztosíthatja, hogy bizonyos blokkok bekerüljenek vagy kikerüljenek, lehetővé téve a dupla költést vagy az értékkivonást előre és hátra futó tranzakciókkal (MEV). Az átszervezés arra is felhasználható, hogy bizonyos tranzakciókat ne lehessen felvenni a kanonikus láncba, ami a cenzúra egy formája. Az átszervezés legszélsőségesebb formája a „véglegesítés visszaállítása”, amely eltávolítja vagy helyettesíti a korábban véglegesített blokkokat. Ez csak akkor lehetséges, ha a támadó a teljes feltett ether több mint ⅓-át megsemmisíti – ez a garancia az úgynevezett „gazdasági véglegesség” (erről később még lesz szó).
Kettős véglegesség az a valószínűtlen, de súlyos állapot, amikor két elágazás képes egyszerre véglegesedni, ami tartós szakadást okoz a láncban. Ez elméletileg lehetséges egy olyan támadó számára, aki hajlandó a teljes feltett ether 34%-át kockáztatni. A közösség kénytelen lenne a láncon kívül koordinálni és megegyezni arról, hogy melyik láncot kövesse, amihez a társadalmi réteg erejére lenne szükség.
A véglegesség késleltetése megakadályozza, hogy a hálózat elérje a szükséges feltételeket a lánc szakaszainak véglegesítéséhez. Véglegesség nélkül nehéz megbízni az Ethereumra épülő pénzügyi alkalmazásokban. A véglegességkésleltetéses támadás célja valószínűleg egyszerűen az Ethereum megzavarása, nem pedig a közvetlen haszonszerzés, kivéve, ha a támadónak stratégiai short pozíciói vannak.
A szociális réteg elleni támadás célja lehet az Ethereumba vetett közbizalom aláásása, az ether leértékelése, az elfogadás csökkentése vagy az Ethereum-közösség gyengítése, hogy megnehezítse a sávon kívüli koordinációt.
Miután megállapítottuk került, hogy egy ellenség miért támadhatja meg az Ethereumot, a következő szakaszok azt vizsgálják meg, hogy hogyan lehet ezt megtenni.
Támadási módszerek
0. rétegbeli támadások
Először is, azok a személyek, akik nem vesznek részt aktívan az Ethereumban (a kliensszoftver futtatásával), a társadalmi réteget (0. réteg) célozva támadhatnak. A 0. réteg az alap, amelyre az Ethereum épül, és mint ilyen, potenciális támadási felületet jelent, amelynek következményei a stack többi részére is kihatnak. Néhány példa:
Egy félretájékoztató kampány alááshatja a közösség bizalmát az Ethereum ütemtervét, fejlesztőcsapatokat, alkalmazásokba stb. illetően. Ez pedig csökkentheti a hálózat biztosításában résztvevők számát, ami rontja a decentralizációt és a kriptogazdasági biztonságot.
Célzott támadások és/vagy fenyegetés a fejlesztői közösség ellen. Ez a fejlesztők önkéntes kilépéséhez vezethet, és lelassíthatja az Ethereum fejlődését.
A túlbuzgó szabályozás a 0. réteg elleni támadásnak is tekinthető, mivel gyorsan visszavetheti a részvételt és az elfogadást.
Hozzáértő, de rosszindulatú szereplők beszivárgása a fejlesztői közösségbe, akiknek célja a fejlődés lelassítása a megbeszélések megzavarásával, a fontos döntések késleltetésével, szemeteléssel (spam) stb.
Az Ethereum ökoszisztéma kulcsszereplőinek adott kenőpénzek, hogy ezzel befolyásolják a döntéshozatalt.
Ezeket a támadásokat az teszi különösen veszélyessé, hogy sok esetben nagyon kevés tőkére vagy technikai tudásra van szükség. Egy 0. rétegbeli támadás egy kriptogazdasági támadás multiplikátora lehet. Ha például a cenzúrát vagy a véglegesség visszaállítását egy rosszindulatú többségi érdekelt fél érné el, a szociális réteg aláásása megnehezíthetné a sávon kívüli közösségi válaszlépések koordinálását.
A 0. rétegbeli támadások elleni védekezés valószínűleg nem egyszerű, de néhány alapelvet fel lehet állítani. Az egyik az Ethereummal kapcsolatos nyilvános információk magas jel-zaj arányának fenntartása, amelyeket a közösség becsületes tagjai hoznak létre és terjesztenek blogokon, Discord szervereken, kommentált specifikációkon, könyveken, podcastokon és Youtube-on keresztül. Itt az ethereum.org-on is igyekszünk pontos információkat fenntartani és a lehető legtöbb nyelvre lefordítani. A tér minőségi információkkal és mémekkel való elárasztása hatékony védekezés a félretájékoztatás ellen.
Egy másik fontos megerősítés a társadalmi réteg támadásaival szemben az egyértelmű küldetésnyilatkozat és az irányítási protokoll. Az Ethereum a decentralizáció és a biztonság bajnokaként pozicionálta magát az L1-es okosszerződések között, miközben nagyra értékeli a skálázhatóságot és a fenntarthatóságot is. Bármilyen nézeteltérések merülnek fel az Ethereum közösségben, ezek az alapelvek minimálisan sérülnek. A narratíva értékelése ezen alapelvek alapján és a felülvizsgálat egymást követő fordulóin keresztül az EIP (Ethereum Fejlesztési Javaslatok) folyamatában segíthet a közösségnek megkülönböztetni a jó és a rossz szereplőket, illetve korlátozhatja a rosszindulatú szereplők lehetőségét az Ethereum jövőbeli irányának befolyásolására.
Végezetül fontos, hogy az Ethereum-közösség nyitott és befogadó maradjon minden résztvevő számára. A zártkörű közösségek különösen sebezhetők a társadalmi támadásokkal szemben, mivel könnyű „mi és ők” narratívákat építeni. A törzsiség és a mérgező maximalizmus árt a közösségnek és aláássa a 0. réteg biztonságát. A hálózat biztonságában érdekelt Ethereum-tagoknak úgy kell tekinteni az online és személyes találkozásokra, mint ami közvetlenül hozzájárul az Ethereum 0. rétegének biztonságához.
A protokoll megtámadása
Bárki, aki az Ethereum kliensszoftverét futtatja. Ahhoz, hogy egy validátor hozzáadjon egy klienshez, a felhasználónak 32 ethert kell betennie a letéti szerződésbe. A validátor lehetővé teszi a felhasználó számára, hogy aktívan részt vegyen az Ethereum hálózatának biztonságában azáltal, hogy új blokkokat javasol és tanúsít. A validátornak mostantól befolyásolhatja a blokklánc jövőbeli tartalmát is – teheti ezt becsületesen, és a jutalmak révén növelheti ether-egyenlegét, vagy megpróbálhatja a folyamatot a saját előnyére manipulálni, kockáztatva a letétjét. A támadás egyik módja az, hogy a teljes letét nagyobb hányadát halmozzák fel, majd ezt arra használják, hogy a becsületes validátorokat túlszavazzák. Minél nagyobb a támadó által ellenőrzött letét aránya, annál nagyobb a szavazóereje, különösen bizonyos gazdasági mérföldköveknél, amelyeket később megvizsgálunk. A legtöbb támadó azonban nem lesz képes elegendő ethert felhalmozni ahhoz, hogy ilyen módon támadjon, így ehelyett finom technikákat kell alkalmazniuk, hogy manipulálják a becsületes többséget, hogy egy bizonyos módon cselekedjen.
Alapvetően minden kis letétes támadás a validátor kétféle hibás viselkedésének variációja: az aktivitáshiány (nem vagy későn tesznek javaslatot) vagy a túlaktivitás (túl sokszor tesznek javaslatot egy sloton belül). Legegyszerűbb formájukban ezeket a műveleteket az elágazásválasztó algoritmus és az ösztönző réteg könnyen kezeli, de vannak okos módszerek arra, hogy a támadók előnyére játszhassák ki a rendszert.
Kis mennyiségű ETH-t használó támadások
Átszervezések (reorg)
Több cikk is ismertette az Ethereum elleni olyan támadásokat, amelyek a teljes feltett ether csak kis hányadával érnek el reorgokat vagy végleges késleltetést. Ezek a támadások általában arra épülnek, hogy a támadó visszatart valamilyen információt a többi validátor elől, majd valamilyen árnyalt módon és/vagy egy alkalmas pillanatban kiadja azt. Céljuk általában az, hogy kiszorítsanak egy vagy több becsületes blokkot a kanonikus láncból. Egy tanulmány, Neuder et al 2020(opens in a new tab), megmutatta, hogy egy támadó validátor hogyan hozhat létre és tanúsíthat egy blokkot (B
) egy adott n+1
slothoz, de tartózkodhat attól, hogy azt a hálózat más csomópontjainak továbbítsa. Ehelyett a következő n+2
slotig megtartják az igazolt blokkot. Egy becsületes validátor egy blokkot (C
) javasol az n+2
slotba. Ezzel szinte egyidejűleg a támadó kiadhatja a visszatartott blokkját (B
) és az arra vonatkozó visszatartott tanúsítványait, és az n+2
slotra leadott szavazataival azt is tanúsíthatja, hogy B
a lánc feje, ezzel gyakorlatilag tagadva a becsületes C
blokk létezését. Amikor a becsületes D
blokk felszabadul, az elágazásválasztó algoritmus úgy látja, hogy a B
tetejére épülő D
nehezebb, mint a C
-re épülő D
. A támadónak tehát sikerült eltávolítania az n+2
slotban lévő becsületes C
blokkot a kanonikus láncból egy 1 blokkos ex ante reorg segítségével. Egy támadónak a tét 34%-ával(opens in a new tab) nagyon jó esélye van arra, hogy sikerrel járjon ebben a támadásban, amint azt ebben a jegyzetben(opens in a new tab) kifejtettük. Elméletileg azonban ezt a támadást kisebb letétekkel is meg lehetne kísérelni. Neuder et al 2020(opens in a new tab) leírta, hogy ez a támadás 30%-os letét mellett is működik, de később kimutatták, hogy 2%-os letét mellett is életképes(opens in a new tab), majd egyetlen validátor(opens in a new tab) esetén is, a következő fejezetben vizsgált kiegyensúlyozási technikák segítségével.
A fent leírt egyblokkos átszervezési támadás koncepcionális ábrája (a https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair(opens in a new tab) oldalról átvéve)
Egy kifinomultabb támadás a becsületes validátorok halmazát különálló csoportokra oszthatja, amelyeknek különböző nézeteik vannak a lánc fejéről. Ezt nevezik kiegyenlítő támadásnak. A támadó megvárja az esélyt, hogy egy blokkot javasoljon, és amikor az megérkezik, kétértelműsíti, és kettőt javasol. Az egyik blokkot a becsületes validátorok felének, a másik blokkot pedig a másik felének. Az elágazásválasztó algoritmus észlelné a kétértelműséget, és a blokkot javaslót megbüntetné és kidobná a hálózatból, de a két blokk továbbra is létezne, és a validátorok körülbelül fele tanúsítaná mindkét elágazást. Eközben a fennmaradó rosszindulatú validátorok visszatartják tanúsításaikat. Ezután az egyik vagy másik elágazást előnyben részesítő tanúsítások szelektív felszabadításával éppen elég validátornak adják át a tanúsítások felhalmozott súlyát az egyik vagy másik elágazás javára, amint az elágazásválasztó algoritmus lefut, így a tanúsítások felhalmozott súlyát az egyik vagy másik elágazás javára billentik. Ez a végtelenségig folytatódhat, a támadó validátorok pedig fenntartják a validátorok egyenletes elosztását a két elágazás között. Mivel egyik elágazás sem tud 2/3-os szupertöbbséget szerezni, a hálózat nem kerülne véglegesítésre.
A pattogó (bouncing) támadások hasonlóak. A szavazatokat a támadó validátorok ismét visszatartják. Ahelyett, hogy a szavazatokat úgy adnák le, hogy a két elágazás között egyenletes legyen a felosztás, a megfelelő pillanatokban arra használják a szavazataikat, hogy olyan ellenőrzőpontokat igazoljanak, amelyek felváltva váltakoznak az A és a B elágazás között. A tanúsításnak ez a két elágazás közötti felcserélése megakadályozza, hogy olyan igazolt forrás- és célellenőrzési pontok párjai legyenek, amelyek bármelyik láncban véglegesíthetők, ami megállítja a véglegesítést.
A pattogó (bouncing) és a kiegyenlítő (balancing) támadás is arra épül, hogy a támadó kifinomult irányítással rendelkezik az üzenetek időzítése felett a hálózaton keresztül, ami nem valószínű. Mindazonáltal a protokollba védelmet építettek be a gyors üzeneteknek a lassú üzenetekkel szemben adott többletsúlyozás formájában. Ez az úgynevezett javaslattevő-súlynövelés (proposer-weight boosting)(opens in a new tab). A pattogó támadások elleni védekezés érdekében az elágazásválasztó algoritmust úgy frissítették, hogy a legutóbbi igazolt ellenőrzőpont csak az adott korszak slotjainak első 1/3-ában(opens in a new tab) válthat át egy alternatív láncra. Ez a feltétel megakadályozza, hogy a támadó szavazatokat gyűjtsön a későbbi használatra – az elágazásválasztó algoritmus egyszerűen hű marad ahhoz az ellenőrzőponthoz, amelyet a korszak első 1/3-ában választott, amely idő alatt a legtöbb becsületes validátor szavazott volna.
Együttesen ezek az intézkedések olyan forgatókönyvet hoznak létre, amelyben egy becsületes blokkajánló nagyon gyorsan kibocsátja blokkját a slot kezdete után, majd egy kb. 1/3 slotnyi (4 másodperc) időszak következik, amikor az új blokk miatt az elágazásválasztó algoritmus egy másik láncra válthat. Ugyanezen határidő után a lassú validátoroktól érkező tanúsításokat a korábban érkezett tanúsításokhoz képest lefelé súlyozzák. Ez nagymértékben kedvez a gyors ajánlattevőknek és a validátoroknak a lánc fejének meghatározásakor, és jelentősen csökkenti a sikeres kiegyenlítő (balancing) vagy pattogó (bouncing) támadás valószínűségét.
Érdemes megjegyezni, hogy a javaslattevő erősítése önmagában csak az „olcsó reorgok” ellen véd, vagyis kis letétellel rendelkező támadó esetén. Valójában az előterjesztő-erősítés önmagában is kijátszható a nagyobb érdekeltek által. E bejegyzés(opens in a new tab) szerzői leírják, hogy egy támadó, aki a letét 7%-ával rendelkezik, hogyan vetheti be a szavazatait stratégiailag, hogy becsületes validátorok becsapásával a saját elágazására építsen, és egy becsületes blokkot átszervezzen. Ezt a támadást ideális késleltetési feltételeket feltételezve dolgozták ki, ami nagyon valószínűtlen. A támadónak kedveznek az esélyek, de a nagyobb letét nagyobb tőkekockázatot és erősebb gazdasági visszatartó erőt is jelent.
Javasoltak egy kiegyenlítő támadást is, amely kifejezetten az LMD-szabályt célozza(opens in a new tab), és amely a előterjesztő-erősítés ellenére is életképesnek bizonyult. Egy támadó két versengő láncot hoz létre úgy, hogy a blokkjavaslatát egyenlővé teszi, és minden egyes blokkot a hálózat egy-egy felére terjeszti el, így megközelítőleg egyensúlyt hoz létre az elágazások között. Ezután az összejátszó validátorok kiegyenlítik a szavazataikat, úgy időzítve, hogy a hálózat fele az A
elágazásra kapja meg először a szavazatát, a másik fele pedig a B
elágazásra. Mivel az LMD-szabály elveti a második tanúsítást, és csak az elsőt tartja meg minden egyes validátor számára, a hálózat egyik fele csak az A
-ra adott szavazatokat látja, a B
-re adottakat nem; a másik fele csak a B
-re adott szavazatokat látja, az A
-ra adottakat nem. A szerzők leírják, hogy az LMD-szabály „figyelemre méltó hatalmat” ad az ellenségnek a kiegyenlítő támadáshoz.
Ezt az LMD támadási vektort a az elágazásválasztó algoritmus frissítésével(opens in a new tab) zárták le úgy, hogy az elágazásválasztásnál az egyenlőtlen validátorokat teljesen kizárja a megfontolásból. Az egyenlőtlen validátorok jövőbeli befolyását az elágazásválasztó algoritmus kihagyja a számításból. Ez megakadályozza a fent vázolt kiegyenlítő támadást, miközben a lavinatámadásokkal szembeni ellenállóképességet is fenntartja.
A támadások egy másik osztályát, az úgynevezett lavinatámadásokat(opens in a new tab) egy 2022 márciusában megjelent tanulmányban(opens in a new tab) írták le. A lavinatámadáshoz a támadónak több egymást követő blokkajánlót kell irányítania. A támadó minden egyes blokkjavaslati slotban visszatartja a blokkját, és addig gyűjti azokat, amíg az őszinte lánc el nem éri a visszatartott blokkokkal azonos részfa súlyát. Ezután a visszatartott blokkok felszabadulnak úgy, hogy maximálisan kiegyenlítődnek. A szerzők szerint a előterjesztő-erősítés – az elsődleges védelem a kiegyenlítő és pattogó támadások ellen – nem véd a lavinatámadás egyes változatai ellen. A szerzők azonban a támadást csak az Ethereum elágazásválasztó algoritmusának egy erősen idealizált változatán mutatták be (a GHOST-ot használták LMD nélkül).
A lavinatámadást az LMD-GHOST elágazásválasztó algoritmus LMD része enyhíti. Az LMD jelentése a „legutolsó üzenet által vezérelt” (latest-message-driven), és az egyes validátorok által vezetett táblázatra utal, amely a többi validátortól kapott legfrissebb üzenetet tartalmazza. Ez a mező csak akkor frissül, ha az új üzenet későbbi időpontból származik, mint a táblázatban egy adott validátort illetően már szereplő üzenet. A gyakorlatban ez azt jelenti, hogy minden egyes slotban az első fogadott üzenet az, amelyet a rendszer elfogadott, és minden további üzenet kétértelműség, amelyet figyelmen kívül kell hagyni. Másképpen fogalmazva, a konszenzuskliensek nem veszik figyelembe a kétértelműséget – a validátoroktól elsőként érkező üzenetet használják, a kétértelműséget elvetik, megelőzve ezzel a lavinatámadásokat.
Az elágazásválasztási szabály számos más lehetséges jövőbeli frissítése is létezik, amelyek növelhetik a előterjesztő-erősítés által nyújtott biztonságot. Az egyik a nézetösszevonás(opens in a new tab), ahol a tanúsítók n
másodperccel egy slot kezdete előtt befagyasztják az elágazásválasztásról alkotott nézetüket, és a javaslattevő ezután segít szinkronizálni a lánc nézetét a hálózaton. Egy másik lehetséges fejlesztés az egy sloton belüli véglegesség (single-slot finality)(opens in a new tab), amely az üzenet időzítésén alapuló támadások ellen véd azáltal, hogy a láncot egyetlen slot után véglegesíti.
Véglegesség késleltetése
Az a cikk(opens in a new tab), amely először írta le az alacsony költségű, egyetlen blokkot érintő reorg támadást, leírt egy végső késleltetés (liveness failure) nevű támadást is, amely arra támaszkodik, hogy a támadó egy korszakkal határos blokk javaslattevője. Ez azért kritikus, mert ezek a korszakhatárblokkok lesznek az ellenőrzőpontok, amelyeket a Casper FFG a lánc egyes részeinek véglegesítéséhez használ. A támadó egyszerűen visszatartja a blokkját, amíg elegendő becsületes validátor nem használja FFG-szavazatát az előző korszakhatárblokk javára, mint az aktuális véglegesítési cél. Ezután kiadja a visszatartott blokkot. Tanúsítja a blokkját, és a fennmaradó becsületes validátorok is ezt teszik, különböző célellenőrzési pontokkal rendelkező elágazásokat létrehozva. Ha jól időzített, akkor megakadályozza a véglegességet, mert nem lesz 2/3-os szupertöbbség, amely bármelyik elágazást tanúsítaná. Minél kisebb a letét, annál pontosabb időzítésre van szükség, mivel a támadó kevesebb tanúsítást ellenőriz közvetlenül, és annál kisebb az esélye annak, hogy a támadó ellenőrzi a validátort, amely a korszakhatárblokkot javasolja.
Nagy hatótávolságú támadások
Létezik egy, a proof-of-stake blokkláncokra jellemző támadási osztály is, amelynek lényege, hogy a genezisblokkban részt vevő validátor fenntartja a blokklánc egy különálló elágazását a helyes blokklánc mellett, és végül meggyőzi az őszinte validátorhalmazt, hogy később egy alkalmas időpontban váltson át rá. Ez a fajta támadás nem lehetséges az Ethereumon, mivel a véglegességi eszköz (finality gadget) biztosítja, hogy az összes validátor rendszeres időközönként (ellenőrzőpontok) megegyezzen a becsületes lánc állapotáról. Ez az egyszerű mechanizmus semlegesíti a nagy hatótávolságú támadókat, mivel az Ethereum kliensei egyszerűen nem fogják a véglegesített blokkokat újraszervezni. A hálózathoz csatlakozó új csomópontok úgy teszik ezt, hogy keresnek egy megbízható legutóbbi állapot hasht (egy gyenge szubjektivitás(opens in a new tab) ellenőrzőpontot), és azt használják pszeudo-genezis blokk-ként, amelyre építkeznek. Ez egy „bizalmi bejáratot” hoz létre a hálózatba belépő új csomópont számára, mielőtt az elkezdené ellenőrizni az információkat saját maga számára.
Szolgáltatásmegtagadás (DoS)
Az Ethereum proof-of-stake mechanizmusa minden egyes slotban egyetlen validátort választ ki a teljes validátorkészletből, aki blokkajánló lesz. Ezt egy nyilvánosan ismert függvény segítségével lehet kiszámítani, és egy támadó számára lehetséges, hogy a következő blokkelőterjesztőt beazonosítsa. Ezután a támadó eláraszthatja szeméttel (spam) a blokkelőterjesztőt, hogy megakadályozza, hogy információt cseréljen a társaival. A hálózat többi része számára úgy tűnne, hogy a blokkelőterjesztő offline, és a slot egyszerűen üresen marad. Ez egyfajta cenzúra lehet bizonyos validátorokkal szemben, megakadályozva őket abban, hogy információt adjanak hozzá a blokklánchoz. Az egyetlen, titkos vezetőválasztás (SSLE) vagy az egynél több titkos vezetőválasztás megvalósítása csökkenti a szolgáltatásmegtagadás (DoS) kockázatát, mivel mindig csak a blokkelőterjesztő tudja, hogy kiválasztották, és nem deríthető ki előre. Ez még nem valósult meg, de a kutatás-fejlesztési(opens in a new tab) terület aktívan foglalkozik vele.
Mindezek alapján elmondható, hogy kis letétekkel nehéz sikeresen megtámadni az Ethereumot. Az itt leírt életképes támadásokhoz idealizált elágasztásválasztó algoritmusra, valószínűtlen hálózati körülményekre van szükség, vagy a támadási vektorokat már lezárták az kliensszoftver-javításokkal. Ez nem zárja ki a lehetőséget, de a kisebbségi letéttel rendelkező támadó hatékonyságát meghatározza az, hogy milyen szintű technikai képességekkel bír, a konszenzusréteg ismerete és a szerencse. A támadó szempontjából az lehet a legjobb megoldás, ha minél több ethert halmoz fel, és a teljes letét többségi hányadával próbál elérni valamit.
A támadók a teljes letét >=33%-át használják
Az eddig említett összes támadás sikerének valószínűsége megnő, ha a támadónak több letétbe helyezett ether áll rendelkezésére, amivel szavazhat, és több validátort választhat, akik blokkokat javasolhatnak az egyes slotokban. Egy rosszindulatú validátor ezért arra törekedhet, hogy minél több letétbe helyezett ethert irányítson.
A feltett ether 33%-a egy támadó számára viszonyítási alap, mivel egy ennél nagyobb összeggel képesek megakadályozni a lánc véglegesítését anélkül, hogy a többi validátor tevékenységét irányítaniuk kellene. Egyszerűen mindannyian együtt eltűnhetnek. Ha a letétbe helyezett ether legalább 1/3-a rosszindulatúan vagy nem tanúsít, akkor a 2/3-os szupertöbbség nem állhat fenn, és a lánc nem véglegesíthető. Ez ellen az inaktivitás elszivárgással védekeznek. Az inaktivitás elszivárgás azonosítja azokat a validátorokat, akik nem vagy a többséggel ellentétesen tanúsítanak. A nem tanúsító validátorok által birtokolt letétbe helyezett ether fokozatosan elvezetésre kerül, míg végül együttesen a teljes mennyiség kevesebb mint 1/3-át képviselik, így a lánc újra véglegesedhet.
Az inaktivitási elszivárgás célja, hogy a lánc ismét véglegesedjen. A támadó azonban a letétbe helyezett ether egy részét is elveszíti. A teljes letétbe helyezett ether 33%-át kitevő validátorok tartós inaktivitása nagyon drága, még akkor is, ha nem is kapnak súlyos és kizárással járó büntetést.
Feltételezve, hogy az Ethereum-hálózat aszinkron (az üzenetek küldése és fogadása között késések vannak), egy támadó, aki a teljes letét 34%-át ellenőrzi, kétszeres véglegesítést okozhat. Ez azért van, mert a támadó kétértelművé teheti, ha őt választják blokkelőterjesztőnek, majd duplán szavazhat az összes validátorával. Ez olyan helyzetet teremt, amelyben a blokkláncnak egy olyan elágazása létezik, amely mellett a letétbe helyezett ether 34%-a szavazott. Mindkét elágazásra csak a fennmaradó validátorok 50%-ának kell szavaznia, hogy mindkét elágazást szupertöbbség támogassa, és így mindkét lánc véglegesíthető (mivel a támadó validátorok 34%-a + a fennmaradó 66% fele = 67% mindkét elágazásnál). Az egymással versengő blokkokat a becsületes validátorok kb. 50%-ának kellene megkapnia, így ez a támadás csak akkor életképes, ha a támadónak bizonyos fokú ellenőrzése van a hálózaton terjedő üzenetek időzítése felett, így a becsületes validátorok felét rá tudja kényszeríteni az egyes láncokra. A támadónak szükségszerűen el kellene pusztítania a teljes letétjét (kb. 10 millió ether 34%-a a mai validátorhalmazt figyelembe véve), hogy elérje ezt a kettős véglegességet, mivel a validátorok 34%-a egyszerre kétszer szavazna – ez egy súlyos és kizárással járó büntetés maximális korrelációval. Ezzel a támadással szemben az a magas költség áll, hogy a teljes letétbe helyezett ether 34%-át el kell pusztítani. A támadásból való kilábaláshoz az Ethereum közösségnek „sávon kívül” kell koordinálnia, és meg kellene állapodnia abban, hogy az egyik elágazást követi, a másikat pedig figyelmen kívül hagyja.
A támadók a teljes letét kb. 50%-át használják
A letétbe helyezett ether 50%-ánál a validátorok egy rosszindulatú csoportja elméletileg két egyforma méretű elágazásra oszthatná a láncot, majd egyszerűen felhasználhatná a teljes 50%-os letétjét arra, hogy a becsületes validátorok csoportjával ellentétesen szavazzon, így fenntartva a két elágazást és megakadályozva a véglegesítést. A két elágazáson az inaktivitási elszivárgás végül mindkét lánc véglegesítéséhez vezet. Ezen a ponton az egyetlen lehetőség a közösségi helyreállítás.
Nagyon valószínűtlen, hogy a validátorok egy ellenséges csoportja következetesen ellenőrizni tudná a teljes letét pontosan 50%-át, mivel a becsületes validátorok száma, a hálózati késleltetés stb. változó mértékű – egy racionális támadó számára a támadás hatalmas költsége és a siker alacsony valószínűsége erős visszatartó erőnek tűnik, különösen ha a több mint 50% megszerzése nagyobb hatalmat szabadít fel.
A teljes letét >50%-ánál a támadó uralni tudta az elágazásválasztó algoritmust. Ebben az esetben a támadó képes lenne a többségi szavazattal tanúsítani, ami elegendő kontrollt adna neki ahhoz, hogy rövid átrendeződéseket hajtson végre anélkül, hogy becsületes klienseket kellene becsapnia. A becsületes validátorok követnék ezt a példát, mivel az ő elágazásválasztó algoritmusuk is a támadó által preferált láncot látná a legnehezebbnek, így a lánc véglegesedhetne. Ez lehetővé teszi a támadó számára, hogy bizonyos tranzakciókat cenzúrázzon, rövidtávú átszervezéseket végezzen, és a blokkok önérdekű átrendezésével maximális profitot (MEV) szerezzen. Ez ellen a többségi részesedés hatalmas költsége (az írás idején ez kb. 19 milliárd dollár) ad védelmet, amelyet egy támadó kockáztat, mivel a társadalmi réteg közbeléphet, és elfogadhat egy becsületes kisebbségi elágazást, ami drámaian leértékeli a támadó részesedését.
A támadók a teljes letét >=66%-át használják
Egy támadó, aki az összes letétbe helyezett ether 66%-ával vagy többel rendelkezik, véglegesítheti a preferált láncot anélkül, hogy a becsületes validátorokat kényszerítenie kellene. A támadók egyszerűen megszavazhatják a preferált elágazást, majd véglegesíthetik azt, mert tisztességtelen szupertöbbséggel szavazhatnak. A szupertöbbség birtokosaként a támadó irányítaná a véglegesített blokkok tartalmát, hatalmában állna költeni, visszatekerni és újrakölteni, cenzúrázni bizonyos tranzakciókat és tetszés szerint átszervezni a láncot. Azzal, hogy a támadó további ethert vásárol, hogy 51% helyett 66%-ot ellenőrizzen, megszerzi a képességet, hogy utólagos reorgokat és végleges visszafordításokat hajtson végre (azaz megváltoztassa a múltat és ellenőrizze a jövőt is). Az egyetlen igazi védekezés a hatalmas költség, a teljes letétbe helyezett ether 66%-a, és a közösségi rétegre támaszkodva egy alternatív elágazás elfogadásának koordinálása. Ezt a következő részben részletesebben is megvizsgáljuk.
Emberek: az utolsó védelmi vonal
Ha a tisztességtelen validátoroknak sikerül véglegesíteniük a lánc általuk preferált verzióját, az Ethereum-közösség nehéz helyzetbe kerül. A kanonikus lánc tartalmaz egy tisztességtelen szakaszt az előzményeibe égetve, míg a becsületes validátorok büntetést kaphatnak, ha egy alternatív (becsületes) láncot tanúsítanak. Vegye figyelembe, hogy egy véglegesített, de hibás lánc a többségi kliens hibájából is adódhat. Végül a végső megoldás az, hogy a közösségi (0.) rétegre hagyatkozunk.
Az Ethereum proof-of-stake konszenzusának egyik erőssége, hogy a közösség számos védekező stratégiát(opens in a new tab) alkalmazhat egy támadás esetén. A minimális válasz lehet a támadók validátorainak a hálózatból való kizárása további szankció nélkül. A hálózatba való újbóli belépéshez a támadó egy aktiválási sorba kerül, amely biztosítja, hogy a validátorok halmaza fokozatosan növekedjen. Például elegendő validátor hozzáadása ahhoz, hogy megduplázza a letétbe helyezett ether mennyiségét, körülbelül 200 napot vesz igénybe, így a becsületes validátorok 200 napot nyerhetnek, mielőtt a támadó újabb 51%-os támadást kísérelhet meg. A közösség azonban dönthet úgy is, hogy szigorúbban bünteti a támadót, visszavonva a korábbi jutalmakat, vagy elégetve a letéti tőke egy részét (vagy akár 100%-át).
A támadóra kiszabott büntetéstől függetlenül a közösségnek közösen kell döntenie arról is, hogy a tisztességtelen lánc – annak ellenére, hogy az Ethereum-kliensekbe kódolt elágazásválasztó algoritmus előnyben részesíti – valójában érvénytelen, és a közösségnek inkább a tisztességes láncra kellene építenie. A becsületes validátorok megállapodhatnak, hogy az Ethereum blokklánc közösség által elfogadott elágazására építenek, amely például a támadás megkezdése előtt elágazhatott a kanonikus láncról, vagy a támadók validátorait eltávolíthatják. A becsületes validátorok ösztönzést kapnának arra, hogy erre a láncra építsenek, mert elkerülhetnék a büntetést, amit azért kapnának, ha (jogosan) nem tanúsítanák a támadó láncát. Az Ethereumra épülő tőzsdék, on-rampok és alkalmazások inkább a helyes láncon szeretnének lenni, és követnék a becsületes validátorokat a helyes blokkláncra.
Ez azonban jelentős vezetési kihívást jelentene. Néhány felhasználó és validátor kétségtelenül veszítene a helyes láncra való visszaváltás következtében, a támadás után validált blokkokban lévő tranzakciókat potenciálisan visszavonnák, megzavarva az alkalmazási réteget, és ez aláássa egyes felhasználók etikai elképzeléseit, akik hajlamosak azt hinni, hogy „a kód a törvény”. A tőzsdék és az alkalmazások valószínűleg összekapcsolták a láncon kívüli műveleteket a láncon belüli tranzakciókkal, amelyeket most vissza lehet göngyölíteni, elindítva a visszavonások és felülvizsgálatok tömkelegét, amelyet nehéz lenne tisztességesen kibogozni, különösen, ha a jogtalanul szerzett nyereségeket összekeverték, DeFi-ba vagy más származékos termékekbe helyezték, amelyek másodlagos hatásokkal járnak a tisztességes felhasználók számára. Kétségtelen, hogy néhány felhasználó, talán még az intézményiek is, hasznot húztak volna a tisztességtelen láncból, ravaszságból vagy szerencsés véletlenből, és elleneznék az elágazást, hogy megvédjék a hasznukat. Elpróbálták a >51%-os támadásokra adott közösségi válaszlépéseket, hogy egy észszerű, összehangolt választ gyorsan végre lehessen hajtani. A témáról tekintse meg Vitalik hasznos eszmecseréit az ethresear.ch oldalon itt(opens in a new tab) és itt(opens in a new tab), valamint a Twitteren itt(opens in a new tab). Az összehangolt társadalmi reakció célja a támadó megbüntetése és a többi felhasználóra gyakorolt hatások minimalizálása kell, hogy legyen.
A vezetés már önmagában is bonyolult téma. Egy tisztességtelen véglegesítő láncra adott 0. rétegbeli vészreakció kezelése kihívást jelentene az Ethereum közösség számára, de ez már megtörtént – kétszer – az Ethereum történetében.
Mindazonáltal van valami kielégítő abban, hogy a végső megoldás a való világban található. Végső soron, még e fenomenális technológiai rendszer ellenére is, ha a legrosszabb valaha is bekövetkezne, a valódi embereknek kellene koordinálniuk a kiutat.
Összegzés
Ez az oldal azt vizsgálta, hogy a támadók milyen módon próbálhatják meg kihasználni az Ethereum proof-of-stake konszenzus protokollját. A reorgokat és a véglegesítés késleltetését a teljes letétbe helyezett ether növekvő arányú támadók esetében vizsgáltuk. Összességében a gazdagabb támadóknak nagyobb esélyük van a sikerre, mivel a letétjük szavazati joggal jár, amellyel befolyásolni tudják a jövőbeli blokkok tartalmát. Bizonyos küszöbértékeknél a támadó ereje növekszik:
33%: késleltetett véglegesség
34%: késleltetett véglegesség, kettős véglegesség
51%: késleltetett véglegesség, kettős véglegesség, cenzúra, a blokklánc jövőjének ellenőrzése
66%: késleltetett véglegesség, kettős véglegesség, cenzúra, a blokklánc jövőjének és múltjának ellenőrzése
Létezik egy sor kifinomultabb támadás is, amelyekhez kis mennyiségű letétbe helyezett ether is elég, de egy kifinomult támadó kell hozzá, aki az üzenet időzítése felett kontrollt gyakorol, hogy a saját javára befolyásolja a becsületes validátorok halmazát.
Összességében, ezen potenciális támadási vektorok ellenére a sikeres támadás kockázata alacsony, minden bizonnyal alacsonyabb, mint a proof-of-worknél. Mivel a támadó, aki a becsületes validátorok szavazati erejével elnyomja a becsületes validátorokat, a letétbe helyezett ether költségét kockáztatja. A beépített „jutalmazás-büntetés” ösztönző réteg megvéd a legtöbb visszaéléstől, különösen az alacsony letéttel rendelkező támadóktól. A kifinomultabb pattogó és kiegyenlítő támadások szintén nem valószínű, hogy sikerrel járnak, mivel a valós hálózati feltételek miatt nehéz elérni az üzenetek kézbesítésének szabályozását a validátorok meghatározott részhalmazaihoz, és a klienscsapatok egyszerű javításokkal lezárták az ismert pattogó, kiegyenlítő és lavinatámadási vektorokat.
A 34%-os, 51%-os vagy 66%-os támadások sávon kívüli társadalmi koordinációt igényelnek a megoldásához. Bár ez valószínűleg fájdalmas lenne a közösség számára, a sávon kívüli válaszadás képessége erős visszatartó erőt jelent a támadóknak. Az Ethereum közösségi rétege a végső biztosíték – egy technikailag sikeres támadást még mindig ki lehet iktatni azzal, hogy a közösség elfogad egy becsületes elágazást. A támadó és az Ethereum közösség versenyt futna – a 66%-os támadásra költött dollármilliárdokat egy sikeres közösségi koordináció eltörölné, ha elég gyorsan végzik, így a támadó rengeteg nem likvid etherrel maradna egy tisztességtelen láncon, amelyet az Ethereum közösség figyelmen kívül hagy. Alacsony a valószínűsége, hogy ez a támadónak végül nyereséget hoz, ezért hatékony visszatartóerőt jelent. Ezért olyan fontos a szorosan összehangolt értékekkel rendelkező, összetartó közösségi réteg fenntartása.
További olvasnivaló
- A jelen írás részletesebb változata(opens in a new tab)
- Vitalik az elszámolási véglegességről(opens in a new tab)
- Az LMD GHOST leírása(opens in a new tab)
- A Casper-FFG leírása(opens in a new tab)
- A Gasper leírása(opens in a new tab)
- A javaslattevő-erősítéses konszenzus specifikációi(opens in a new tab)
- Pattogó támadások az ethresear.ch oldalon(opens in a new tab)
- SSLE-kutatás(opens in a new tab)