Przejdź do głównej treści
Change page

Atak i obrona dowodu stawki (PoS) w Ethereum

Złodzieje i sabotażyści nieustannie szukają okazji do ataku na oprogramowanie klienckie Ethereum. Ta strona opisuje znane wektory ataków na warstwę konsensusu Ethereum i przedstawia sposoby obrony przed nimi. Informacje na tej stronie zostały zaadaptowane z dłuższej wersji (opens in a new tab).

Wymagania wstępne

Wymagana jest podstawowa wiedza na temat dowodu stawki (PoS). Przydatne będzie również podstawowe zrozumienie warstwy zachęt Ethereum oraz algorytmu wyboru rozwidlenia, LMD-GHOST.

Czego chcą atakujący?

Powszechnym błędnym przekonaniem jest to, że udany atak pozwala na wygenerowanie nowego etheru lub opróżnienie dowolnych kont z etheru. Żadne z tych działań nie jest możliwe, ponieważ wszystkie transakcje są wykonywane przez wszystkich klientów warstwy wykonawczej w sieci. Muszą one spełniać podstawowe warunki ważności (np. transakcje są podpisane przez klucz prywatny nadawcy, nadawca ma wystarczające saldo itp.), w przeciwnym razie następuje ich wycofanie. Istnieją trzy klasy wyników, które atakujący może realistycznie obrać za cel: reorganizacje łańcucha, podwójna ostateczność lub opóźnienie ostateczności.

„Reorganizacja łańcucha” (często nazywana reorgiem) to przetasowanie bloków w nowej kolejności, być może z dodaniem lub odjęciem pewnych bloków w kanonicznym łańcuchu. Złośliwa reorganizacja łańcucha może zapewnić uwzględnienie lub wykluczenie określonych bloków, umożliwiając podwójne wydatkowanie lub ekstrakcję wartości poprzez wyprzedzanie transakcji i back-running (MEV). Reorganizacje łańcucha mogą być również wykorzystane do zapobiegania włączeniu pewnych transakcji do kanonicznego łańcucha – jest to forma cenzury. Najbardziej skrajną formą reorganizacji łańcucha jest „odwrócenie ostateczności”, które usuwa lub zastępuje bloki, które zostały wcześniej sfinalizowane. Jest to możliwe tylko wtedy, gdy ponad ⅓ całkowitego stakowanego etheru zostanie zniszczona przez atakującego – ta gwarancja jest znana jako „ostateczność ekonomiczna” – więcej na ten temat w dalszej części.

Podwójna ostateczność to mało prawdopodobny, ale poważny stan, w którym dwa rozwidlenia są w stanie sfinalizować się jednocześnie, tworząc trwałą schizmę w łańcuchu. Jest to teoretycznie możliwe dla atakującego gotowego zaryzykować 34% całkowitego stakowanego etheru. Społeczność byłaby zmuszona do koordynacji pozałańcuchowej i dojścia do porozumienia, za którym łańcuchem podążać, co wymagałoby siły w warstwie społecznej.

Atak opóźnienia ostateczności uniemożliwia sieci osiągnięcie warunków niezbędnych do sfinalizowania sekcji łańcucha. Bez ostateczności trudno jest ufać aplikacjom finansowym zbudowanym na Ethereum. Celem ataku opóźnienia ostateczności jest prawdopodobnie po prostu zakłócenie działania Ethereum, a nie bezpośredni zysk, chyba że atakujący ma jakieś strategiczne krótkie pozycje.

Atak na warstwę społeczną może mieć na celu podważenie zaufania publicznego do Ethereum, dewaluację etheru, zmniejszenie adopcji lub osłabienie społeczności Ethereum, aby utrudnić koordynację poza głównym kanałem (out-of-band).

Po ustaleniu, dlaczego przeciwnik może zaatakować Ethereum, w kolejnych sekcjach przeanalizujemy, jak może to zrobić.

Metody ataku

Ataki na warstwę 0

Przede wszystkim osoby, które nie uczestniczą aktywnie w Ethereum (poprzez uruchamianie oprogramowania klienckiego), mogą atakować, obierając za cel warstwę społecznej (warstwę 0). Warstwa 0 jest fundamentem, na którym zbudowane jest Ethereum, i jako taka stanowi potencjalną powierzchnię dla ataków, których konsekwencje odbijają się echem w pozostałej części stosu. Niektóre przykłady mogą obejmować:

  • Kampania dezinformacyjna może podważyć zaufanie społeczności do mapy drogowej Ethereum, zespołów programistów, aplikacji itp. Może to następnie zmniejszyć liczbę osób chętnych do udziału w zabezpieczaniu sieci, degradując zarówno decentralizację, jak i bezpieczeństwo kryptoekonomiczne.

  • Ukierunkowane ataki i/lub zastraszanie skierowane do społeczności programistów. Może to doprowadzić do dobrowolnego odejścia programistów i spowolnić postęp Ethereum.

  • Nadgorliwe regulacje można również uznać za atak na warstwę 0, ponieważ mogą one szybko zniechęcić do uczestnictwa i adopcji.

  • Infiltracja społeczności programistów przez kompetentnych, ale złośliwych aktorów, których celem jest spowolnienie postępu poprzez trywializowanie dyskusji (bike-shedding), opóźnianie kluczowych decyzji, tworzenie spamu itp.

  • Łapówki wręczane kluczowym graczom w ekosystemie Ethereum w celu wpłynięcia na podejmowanie decyzji.

To, co czyni te ataki szczególnie niebezpiecznymi, to fakt, że w wielu przypadkach wymagają one bardzo niewielkiego kapitału lub wiedzy technicznej. Atak na warstwę 0 może być mnożnikiem ataku kryptoekonomicznego. Na przykład, jeśli cenzura lub odwrócenie ostateczności zostałyby osiągnięte przez złośliwego interesariusza posiadającego większość, podważenie warstwy społecznej mogłoby utrudnić koordynację reakcji społeczności poza głównym kanałem.

Obrona przed atakami na warstwę 0 prawdopodobnie nie jest prosta, ale można ustalić pewne podstawowe zasady. Jedną z nich jest utrzymanie ogólnie wysokiego stosunku sygnału do szumu dla publicznych informacji o Ethereum, tworzonych i propagowanych przez uczciwych członków społeczności za pośrednictwem blogów, serwerów Discord, opatrzonych komentarzami specyfikacji, książek, podcastów i YouTube. Tutaj, na ethereum.org, bardzo staramy się utrzymywać dokładne informacje i tłumaczyć je na jak najwięcej języków. Zalewanie przestrzeni wysokiej jakości informacjami i memami jest skuteczną obroną przed dezinformacją.

Kolejną ważną fortyfikacją przed atakami na warstwę społeczną jest jasna deklaracja misji i protokół zarządzania. Ethereum pozycjonuje się jako mistrz decentralizacji i bezpieczeństwa wśród sieci warstwy 1 (L1) obsługujących inteligentne kontrakty, jednocześnie wysoko ceniąc skalowalność i zrównoważony rozwój. Niezależnie od tego, jakie nieporozumienia pojawiają się w społeczności Ethereum, te podstawowe zasady są w minimalnym stopniu naruszane. Ocena narracji w odniesieniu do tych podstawowych zasad i badanie ich poprzez kolejne rundy przeglądu w procesie EIP (Propozycja Ulepszenia Ethereum) może pomóc społeczności odróżnić dobrych aktorów od złych i ogranicza pole manewru złośliwym aktorom w wpływaniu na przyszły kierunek rozwoju Ethereum.

Wreszcie, kluczowe jest, aby społeczność Ethereum pozostała otwarta i przyjazna dla wszystkich uczestników. Społeczność z „odźwiernymi” (gatekeepers) i ekskluzywnością jest szczególnie podatna na ataki społeczne, ponieważ łatwo jest w niej budować narracje „my i oni”. Trybalizm i toksyczny maksymalizm szkodzą społeczności i osłabiają bezpieczeństwo warstwy 0. Ethereanie żywotnie zainteresowani bezpieczeństwem sieci powinni postrzegać swoje zachowanie w sieci i w świecie rzeczywistym (meatspace) jako bezpośredni wkład w bezpieczeństwo warstwy 0 Ethereum.

Atakowanie protokołu

Każdy może uruchomić oprogramowanie klienckie Ethereum. Aby dodać walidator do klienta, użytkownik musi stakować 32 ethery w kontrakcie depozytowym. Walidator pozwala użytkownikowi aktywnie uczestniczyć w bezpieczeństwie sieci Ethereum poprzez proponowanie i poświadczanie nowych bloków. Walidator ma teraz głos, którego może użyć do wpływania na przyszłą zawartość blockchaina – może to robić uczciwie i powiększać swoje zasoby etheru poprzez nagrody, lub może próbować manipulować procesem na własną korzyść, ryzykując swoją stawkę. Jednym ze sposobów na przeprowadzenie ataku jest zgromadzenie większej części całkowitej stawki, a następnie użycie jej do przegłosowania uczciwych walidatorów. Im większa część stawki kontrolowana przez atakującego, tym większa jego siła głosu, zwłaszcza przy pewnych kamieniach milowych ekonomicznych, które zbadamy później. Jednak większość atakujących nie będzie w stanie zgromadzić wystarczającej ilości etheru, aby zaatakować w ten sposób, więc zamiast tego muszą użyć subtelnych technik, aby zmanipulować uczciwą większość do działania w określony sposób.

Zasadniczo wszystkie ataki z użyciem małej stawki są subtelnymi wariacjami na temat dwóch rodzajów niewłaściwego zachowania walidatora: niedostatecznej aktywności (brak poświadczenia/propozycji lub robienie tego z opóźnieniem) lub nadmiernej aktywności (proponowanie/poświadczanie zbyt wiele razy w danym slocie). W swoich najbardziej podstawowych formach działania te są łatwo obsługiwane przez algorytm wyboru rozwidlenia i warstwę zachęt, ale istnieją sprytne sposoby na oszukanie systemu na korzyść atakującego.

Ataki z użyciem małych ilości ETH

reorganizacje łańcucha

W kilku artykułach wyjaśniono ataki na Ethereum, które osiągają reorganizację łańcucha lub opóźnienie ostateczności przy użyciu zaledwie niewielkiej części całkowitego stakowanego etheru. Ataki te na ogół polegają na tym, że atakujący zataja pewne informacje przed innymi walidatorami, a następnie ujawnia je w jakiś zniuansowany sposób i/lub w odpowiednim momencie. Zazwyczaj mają one na celu wyparcie pewnych uczciwych bloków z kanonicznego łańcucha. Neuder i in. 2020 (opens in a new tab) pokazali, jak atakujący walidator może utworzyć i poświadczyć blok (B) dla określonego slotu n+1, ale powstrzymać się od propagowania go do innych węzłów w sieci. Zamiast tego zatrzymują ten poświadczony blok do następnego slotu n+2. Uczciwy walidator proponuje blok (C) dla slotu n+2. Prawie jednocześnie atakujący może uwolnić swój wstrzymany blok (B) i wstrzymane poświadczenia dla niego, a także poświadczyć, że B jest szczytem łańcucha za pomocą swoich głosów dla slotu n+2, skutecznie zaprzeczając istnieniu uczciwego bloku C. Kiedy uczciwy blok D zostaje uwolniony, algorytm wyboru rozwidlenia widzi, że D budowany na B jest cięższy niż D budowany na C. Atakującemu udało się zatem usunąć uczciwy blok C w slocie n+2 z kanonicznego łańcucha za pomocą 1-blokowej reorganizacji łańcucha ex ante. Atakujący z 34% (opens in a new tab) stawki ma bardzo duże szanse na powodzenie w tym ataku, jak wyjaśniono w tej notatce (opens in a new tab). W teorii jednak atak ten można by przeprowadzić z mniejszymi stawkami. Neuder i in. 2020 (opens in a new tab) opisali ten atak jako działający przy 30% stawce, ale później wykazano, że jest on wykonalny przy 2% całkowitej stawki (opens in a new tab), a następnie ponownie dla pojedynczego walidatora (opens in a new tab) przy użyciu technik równoważenia, które zbadamy w następnej sekcji.

ex-ante re-org

Schemat koncepcyjny opisanego powyżej ataku jednoblokowej reorganizacji łańcucha (zaadaptowany z https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))

Bardziej wyrafinowany atak może podzielić zbiór uczciwych walidatorów na odrębne grupy, które mają różne poglądy na temat szczytu łańcucha. Jest to znane jako atak równoważący (balancing attack). Atakujący czeka na swoją szansę na zaproponowanie bloku, a kiedy ona nadejdzie, dopuszcza się ekwiwokacji i proponuje dwa. Wysyła jeden blok do połowy zbioru uczciwych walidatorów, a drugi blok do drugiej połowy. Ekwiwokacja zostałaby wykryta przez algorytm wyboru rozwidlenia, a proponujący blok zostałby ukarany cięciem i wyrzucony z sieci, ale dwa bloki nadal by istniały i miałyby około połowy zbioru walidatorów poświadczających każde rozwidlenie. W międzyczasie pozostali złośliwi walidatorzy wstrzymują swoje poświadczenia. Następnie, poprzez selektywne uwalnianie poświadczeń faworyzujących jedno lub drugie rozwidlenie do wystarczającej liczby walidatorów w momencie wykonywania algorytmu wyboru rozwidlenia, przechylają skumulowaną wagę poświadczeń na korzyść jednego lub drugiego rozwidlenia. Może to trwać w nieskończoność, a atakujący walidatorzy utrzymują równy podział walidatorów między dwoma rozwidleniami. Ponieważ żadne z rozwidleń nie może przyciągnąć większości kwalifikowanej 2/3, sieć nie zostałaby sfinalizowana.

Ataki odbijające (bouncing attacks) są podobne. Głosy są ponownie wstrzymywane przez atakujących walidatorów. Zamiast uwalniać głosy, aby utrzymać równy podział między dwoma rozwidleniami, używają swoich głosów w odpowiednich momentach, aby uzasadnić punkty kontrolne, które naprzemiennie przełączają się między rozwidleniem A i rozwidleniem B. To przeskakiwanie uzasadnienia między dwoma rozwidleniami zapobiega powstawaniu par uzasadnionych źródłowych i docelowych punktów kontrolnych, które można sfinalizować na którymkolwiek z łańcuchów, zatrzymując ostateczność.

The game of reorgs in proof of stake Ethereum

Caspar Schwarz-Schilling presents research on block reorganization attacks in proof of stake Ethereum, covering attack vectors, defense mechanisms, and the protocol-level mitigations in place.

Oglądaj z transkrypcją 

Zarówno ataki odbijające, jak i równoważące opierają się na tym, że atakujący ma bardzo precyzyjną kontrolę nad czasem przesyłania wiadomości w sieci, co jest mało prawdopodobne. Niemniej jednak w protokół wbudowane są mechanizmy obronne w postaci dodatkowej wagi nadawanej szybkim wiadomościom w porównaniu z wolnymi. Jest to znane jako zwiększenie wagi proponującego (opens in a new tab) (proposer-weight boosting). Aby obronić się przed atakami odbijającymi, algorytm wyboru rozwidlenia został zaktualizowany w taki sposób, że najnowszy uzasadniony punkt kontrolny może przełączyć się na punkt kontrolny alternatywnego łańcucha tylko podczas pierwszej 1/3 slotów w każdej epoce (opens in a new tab). Warunek ten uniemożliwia atakującemu oszczędzanie głosów do późniejszego wykorzystania – algorytm wyboru rozwidlenia po prostu pozostaje lojalny wobec punktu kontrolnego, który wybrał w pierwszej 1/3 epoki, w którym to czasie większość uczciwych walidatorów oddałaby głos.

W połączeniu, środki te tworzą scenariusz, w którym uczciwy proponujący blok emituje swój blok bardzo szybko po rozpoczęciu slotu, a następnie następuje okres ~1/3 slotu (4 sekundy), w którym ten nowy blok może spowodować przełączenie algorytmu wyboru rozwidlenia na inny łańcuch. Po tym samym terminie poświadczenia, które docierają od powolnych walidatorów, mają zmniejszoną wagę w porównaniu z tymi, które dotarły wcześniej. To silnie faworyzuje szybkich proponujących i walidatorów w określaniu szczytu łańcucha i znacznie zmniejsza prawdopodobieństwo udanego ataku równoważącego lub odbijającego.

Warto zauważyć, że samo zwiększenie wagi proponującego chroni tylko przed „tanimi reorganizacjami łańcucha”, tj. tymi podejmowanymi przez atakującego z małą stawką. W rzeczywistości samo zwiększenie wagi proponującego może zostać oszukane przez większych interesariuszy. Autorzy tego posta (opens in a new tab) opisują, jak atakujący z 7% stawki może strategicznie rozmieścić swoje głosy, aby oszukać uczciwych walidatorów do budowania na ich rozwidleniu, usuwając uczciwy blok poprzez reorganizację łańcucha. Atak ten został opracowany przy założeniu idealnych warunków opóźnienia, które są bardzo mało prawdopodobne. Szanse atakującego są nadal bardzo małe, a większa stawka oznacza również więcej kapitału narażonego na ryzyko i silniejszy ekonomiczny czynnik zniechęcający.

Zaproponowano również atak równoważący wymierzony konkretnie w regułę LMD (opens in a new tab), który sugerowano jako wykonalny pomimo zwiększenia wagi proponującego. Atakujący tworzy dwa konkurujące łańcuchy poprzez ekwiwokację swojej propozycji bloku i propagowanie każdego bloku do około połowy sieci, ustanawiając przybliżoną równowagę między rozwidleniami. Następnie współpracujący walidatorzy dopuszczają się ekwiwokacji swoich głosów, synchronizując to tak, aby połowa sieci otrzymała najpierw ich głosy na rozwidlenie A, a druga połowa otrzymała najpierw ich głosy na rozwidlenie B. Ponieważ reguła LMD odrzuca drugie poświadczenie i zachowuje tylko pierwsze dla każdego walidatora, połowa sieci widzi głosy na A i żadnych na B, a druga połowa widzi głosy na B i żadnych na A. Autorzy opisują regułę LMD jako dającą przeciwnikowi „niezwykłą moc” do przeprowadzenia ataku równoważącego.

Ten wektor ataku LMD został zamknięty poprzez aktualizację algorytmu wyboru rozwidlenia (opens in a new tab) w taki sposób, że całkowicie odrzuca on walidatorów dopuszczających się ekwiwokacji z rozważań nad wyborem rozwidlenia. Walidatorzy dopuszczający się ekwiwokacji mają również swój przyszły wpływ pomniejszony przez algorytm wyboru rozwidlenia. Zapobiega to opisanemu powyżej atakowi równoważącemu, jednocześnie utrzymując odporność na ataki lawinowe.

Inna klasa ataków, zwana atakami lawinowymi (opens in a new tab) (avalanche attacks), została opisana w artykule z marca 2022 r. (opens in a new tab) Aby przeprowadzić atak lawinowy, atakujący musi kontrolować kilku kolejnych proponujących blok. W każdym ze slotów propozycji bloku atakujący wstrzymuje swój blok, zbierając je do momentu, aż uczciwy łańcuch osiągnie równą wagę poddrzewa z wstrzymanymi blokami. Następnie wstrzymane bloki są uwalniane, tak aby maksymalnie dopuszczały się ekwiwokacji. Autorzy sugerują, że zwiększenie wagi proponującego – główna obrona przed atakami równoważącymi i odbijającymi – nie chroni przed niektórymi wariantami ataku lawinowego. Jednak autorzy zademonstrowali również atak tylko na wysoce wyidealizowanej wersji algorytmu wyboru rozwidlenia Ethereum (użyli GHOST bez LMD).

Atak lawinowy jest łagodzony przez część LMD algorytmu wyboru rozwidlenia LMD-GHOST. LMD oznacza „sterowany najnowszą wiadomością” (latest-message-driven) i odnosi się do tabeli prowadzonej przez każdego walidatora, zawierającej najnowszą wiadomość otrzymaną od innych walidatorów. Pole to jest aktualizowane tylko wtedy, gdy nowa wiadomość pochodzi z późniejszego slotu niż ten, który znajduje się już w tabeli dla danego walidatora. W praktyce oznacza to, że w każdym slocie pierwsza otrzymana wiadomość jest tą, która została zaakceptowana, a wszelkie dodatkowe wiadomości są ekwiwokacjami, które należy zignorować. Innymi słowy, klienci warstwy konsensusu nie liczą ekwiwokacji – używają pierwszej przybywającej wiadomości od każdego walidatora, a ekwiwokacje są po prostu odrzucane, co zapobiega atakom lawinowym.

Istnieje kilka innych potencjalnych przyszłych ulepszeń reguły wyboru rozwidlenia, które mogłyby zwiększyć bezpieczeństwo zapewniane przez zwiększenie wagi proponującego. Jednym z nich jest scalanie widoku (opens in a new tab) (view-merge), w którym poświadczający zamrażają swój widok wyboru rozwidlenia na n sekundy przed rozpoczęciem slotu, a proponujący pomaga następnie zsynchronizować widok łańcucha w całej sieci. Kolejnym potencjalnym ulepszeniem jest ostateczność pojedynczego slotu (opens in a new tab) (single-slot finality), która chroni przed atakami opartymi na czasie przesyłania wiadomości poprzez sfinalizowanie łańcucha po zaledwie jednym slocie.

Opóźnienie ostateczności

Ten sam artykuł (opens in a new tab), który po raz pierwszy opisał tani atak jednoblokowej reorganizacji łańcucha, opisał również atak opóźnienia ostateczności (znany również jako „awaria żywotności”), który polega na tym, że atakujący jest proponującym blok dla bloku granicznego epoki. Jest to krytyczne, ponieważ te bloki graniczne epoki stają się punktami kontrolnymi, których Casper FFG używa do sfinalizowania części łańcucha. Atakujący po prostu wstrzymuje swój blok, dopóki wystarczająca liczba uczciwych walidatorów nie użyje swoich głosów FFG na korzyść poprzedniego bloku granicznego epoki jako bieżącego celu finalizacji. Następnie uwalniają swój wstrzymany blok. Poświadczają swój blok, a pozostali uczciwi walidatorzy również to robią, tworząc rozwidlenia z różnymi docelowymi punktami kontrolnymi. Jeśli zrobili to w odpowiednim momencie, zapobiegną ostateczności, ponieważ nie będzie większości kwalifikowanej 2/3 poświadczającej którekolwiek z rozwidleń. Im mniejsza stawka, tym bardziej precyzyjny musi być czas, ponieważ atakujący kontroluje bezpośrednio mniej poświadczeń, a szanse na to, że atakujący kontroluje walidatora proponującego dany blok graniczny epoki, są mniejsze.

Ataki dalekiego zasięgu

Istnieje również klasa ataków specyficzna dla blockchainów opartych na dowodzie stawki (PoS), która polega na tym, że walidator, który uczestniczył w bloku genezy, utrzymuje oddzielne rozwidlenie blockchaina obok uczciwego, ostatecznie przekonując zbiór uczciwych walidatorów do przejścia na nie w dogodnym momencie znacznie później. Ten typ ataku nie jest możliwy w Ethereum ze względu na gadżet ostateczności, który zapewnia, że wszyscy walidatorzy zgadzają się co do stanu uczciwego łańcucha w regularnych odstępach czasu („punkty kontrolne”). Ten prosty mechanizm neutralizuje atakujących z dalekiego zasięgu, ponieważ klienci Ethereum po prostu nie zreorganizują sfinalizowanych bloków. Nowe węzły dołączające do sieci robią to, znajdując zaufany hash niedawnego stanu (punkt kontrolny „słabej subiektywności (opens in a new tab)”) i używając go jako pseudo-bloku genezy, na którym można budować. Tworzy to „bramę zaufania” dla nowego węzła wchodzącego do sieci, zanim będzie mógł zacząć samodzielnie weryfikować informacje.

Odmowa usługi (DoS)

Mechanizm PoS Ethereum wybiera jednego walidatora z całego zbioru walidatorów na proponującego blok w każdym slocie. Można to obliczyć za pomocą publicznie znanej funkcji i możliwe jest, aby przeciwnik zidentyfikował następnego proponującego blok z niewielkim wyprzedzeniem przed jego propozycją bloku. Następnie atakujący może spamować proponującego blok, aby uniemożliwić mu wymianę informacji z jego rówieśnikami (peers). Dla reszty sieci wyglądałoby to tak, jakby proponujący blok był offline, a slot po prostu pozostałby pusty. Może to być forma cenzury wobec określonych walidatorów, uniemożliwiająca im dodawanie informacji do blockchaina. Wdrożenie pojedynczych tajnych wyborów lidera (SSLE) lub niepojedynczych tajnych wyborów lidera złagodzi ryzyko DoS, ponieważ tylko proponujący blok wie, że został wybrany, a wybór nie jest znany z góry. Nie zostało to jeszcze wdrożone, ale jest to aktywny obszar badań i rozwoju (opens in a new tab).

Wszystko to wskazuje na fakt, że bardzo trudno jest skutecznie zaatakować Ethereum z małą stawką. Opisane tutaj wykonalne ataki wymagają wyidealizowanego algorytmu wyboru rozwidlenia, mało prawdopodobnych warunków sieciowych lub wektory ataków zostały już zamknięte za pomocą stosunkowo drobnych poprawek w oprogramowaniu klienckim. Oczywiście nie wyklucza to możliwości istnienia luk typu zero-day w praktyce (in the wild), ale pokazuje niezwykle wysoką poprzeczkę umiejętności technicznych, wiedzy o warstwie konsensusu i szczęścia wymaganych, aby atakujący z mniejszościową stawką był skuteczny. Z perspektywy atakującego najlepszym rozwiązaniem może być zgromadzenie jak największej ilości etheru i powrót uzbrojonym w większą część całkowitej stawki.

Atakujący używający >= 33% całkowitej stawki

Wszystkie ataki wymienione wcześniej w tym artykule mają większe szanse powodzenia, gdy atakujący ma więcej stakowanego etheru do głosowania i więcej walidatorów, którzy mogą zostać wybrani do proponowania bloków w każdym slocie. Złośliwy walidator może zatem dążyć do kontrolowania jak największej ilości stakowanego etheru.

33% stakowanego etheru to punkt odniesienia dla atakującego, ponieważ przy czymkolwiek większym niż ta kwota ma on możliwość zapobieżenia sfinalizowaniu łańcucha bez konieczności precyzyjnego kontrolowania działań innych walidatorów. Mogą po prostu wszyscy zniknąć razem. Jeśli 1/3 lub więcej stakowanego etheru złośliwie poświadcza lub nie poświadcza, to większość kwalifikowana 2/3 nie może istnieć i łańcuch nie może zostać sfinalizowany. Obroną przed tym jest wyciek za nieaktywność. Wyciek za nieaktywność identyfikuje tych walidatorów, którzy nie poświadczają lub poświadczają wbrew większości. Stakowany ether należący do tych niepoświadczających walidatorów jest stopniowo wykrwawiany, aż w końcu wspólnie stanowią oni mniej niż 1/3 całości, dzięki czemu łańcuch może zostać ponownie sfinalizowany.

Celem wycieku za nieaktywność jest ponowne sfinalizowanie łańcucha. Jednak atakujący traci również część swojego stakowanego etheru. Uporczywa nieaktywność wśród walidatorów reprezentujących 33% całkowitego stakowanego etheru jest bardzo kosztowna, mimo że walidatorzy nie są poddawani cięciu.

Zakładając, że sieć Ethereum jest asynchroniczna (tj. występują opóźnienia między wysyłaniem a odbieraniem wiadomości), atakujący kontrolujący 34% całkowitej stawki mógłby spowodować podwójną ostateczność. Dzieje się tak, ponieważ atakujący może dopuścić się ekwiwokacji, gdy zostanie wybrany na producenta bloku, a następnie oddać podwójny głos wszystkimi swoimi walidatorami. Tworzy to sytuację, w której istnieje rozwidlenie blockchaina, a na każde z nich głosuje 34% stakowanego etheru. Każde rozwidlenie wymaga jedynie, aby 50% pozostałych walidatorów zagłosowało na jego korzyść, aby oba rozwidlenia były wspierane przez większość kwalifikowaną, w którym to przypadku oba łańcuchy mogą zostać sfinalizowane (ponieważ 34% walidatorów atakującego + połowa z pozostałych 66% = 67% na każdym rozwidleniu). Konkurujące bloki musiałyby zostać odebrane przez około 50% uczciwych walidatorów, więc ten atak jest wykonalny tylko wtedy, gdy atakujący ma pewien stopień kontroli nad czasem propagacji wiadomości w sieci, tak aby mógł popchnąć połowę uczciwych walidatorów na każdy łańcuch. Atakujący musiałby zniszczyć całą swoją stawkę (34% z ~10 milionów etherów przy dzisiejszym zbiorze walidatorów), aby osiągnąć tę podwójną ostateczność, ponieważ 34% jego walidatorów głosowałoby podwójnie w tym samym czasie – jest to przewinienie podlegające cięciu z maksymalną karą za korelację. Obroną przed tym atakiem jest bardzo duży koszt zniszczenia 34% całkowitego stakowanego etheru. Odzyskanie sprawności po tym ataku wymagałoby od społeczności Ethereum koordynacji poza głównym kanałem („out-of-band”) i zgody na podążanie za jednym lub drugim rozwidleniem i zignorowanie drugiego.

Atakujący używający ~50% całkowitej stawki

Przy 50% stakowanego etheru złośliwa grupa walidatorów mogłaby teoretycznie podzielić łańcuch na dwa rozwidlenia równej wielkości, a następnie po prostu użyć całej swojej 50% stawki do głosowania wbrew zbiorowi uczciwych walidatorów, utrzymując w ten sposób dwa rozwidlenia i zapobiegając ostateczności. Wyciek za nieaktywność na obu rozwidleniach ostatecznie doprowadziłby do sfinalizowania obu łańcuchów. W tym momencie jedyną opcją jest ucieczka do odzyskiwania społecznościowego.

Jest bardzo mało prawdopodobne, aby wroga grupa walidatorów mogła konsekwentnie kontrolować dokładnie 50% całkowitej stawki, biorąc pod uwagę pewien stopień wahań w liczbie uczciwych walidatorów, opóźnienia w sieci itp. – ogromny koszt przeprowadzenia takiego ataku w połączeniu z niskim prawdopodobieństwem sukcesu wydaje się być silnym czynnikiem zniechęcającym dla racjonalnego atakującego, zwłaszcza gdy niewielka dodatkowa inwestycja w uzyskanie więcej niż 50% odblokowuje znacznie większą moc.

Przy >50% całkowitej stawki atakujący mógłby zdominować algorytm wyboru rozwidlenia. W tym przypadku atakujący byłby w stanie poświadczać większością głosów, co dałoby mu wystarczającą kontrolę do przeprowadzania krótkich reorganizacji łańcucha bez konieczności oszukiwania uczciwych klientów. Uczciwi walidatorzy poszliby w ich ślady, ponieważ ich algorytm wyboru rozwidlenia również widziałby faworyzowany przez atakującego łańcuch jako najcięższy, więc łańcuch mógłby zostać sfinalizowany. Umożliwia to atakującemu cenzurowanie pewnych transakcji, przeprowadzanie krótkoterminowych reorganizacji łańcucha i wydobywanie maksymalnego MEV poprzez zmianę kolejności bloków na swoją korzyść. Obroną przed tym jest ogromny koszt większościowej stawki (obecnie nieco poniżej 19 miliardów USD), który jest narażony na ryzyko przez atakującego, ponieważ warstwa społeczna prawdopodobnie wkroczy i przyjmie uczciwe rozwidlenie mniejszościowe, drastycznie dewaluując stawkę atakującego.

Atakujący używający >=66% całkowitej stawki

Atakujący posiadający 66% lub więcej całkowitego stakowanego etheru może sfinalizować preferowany przez siebie łańcuch bez konieczności zmuszania jakichkolwiek uczciwych walidatorów. Atakujący może po prostu zagłosować na preferowane przez siebie rozwidlenie, a następnie je sfinalizować, po prostu dlatego, że może głosować nieuczciwą większością kwalifikowaną. Jako interesariusz posiadający większość kwalifikowaną, atakujący zawsze kontrolowałby zawartość sfinalizowanych bloków, mając moc wydawania, cofania i ponownego wydawania, cenzurowania pewnych transakcji i reorganizacji łańcucha do woli. Kupując dodatkowy ether, aby kontrolować 66% zamiast 51%, atakujący skutecznie kupuje możliwość przeprowadzania reorganizacji łańcucha ex post i odwracania ostateczności (tj. zmiany przeszłości, a także kontrolowania przyszłości). Jedyną prawdziwą obroną jest tutaj ogromny koszt 66% całkowitego stakowanego etheru oraz opcja ucieczki do warstwy społecznej w celu skoordynowania przyjęcia alternatywnego rozwidlenia. Możemy to zbadać bardziej szczegółowo w następnej sekcji.

Ludzie: ostatnia linia obrony

Jeśli nieuczciwym walidatorom uda się sfinalizować preferowaną przez nich wersję łańcucha, społeczność Ethereum znajdzie się w trudnej sytuacji. Kanoniczny łańcuch zawiera nieuczciwą sekcję wbudowaną w jego historię, podczas gdy uczciwi walidatorzy mogą zostać ukarani za poświadczanie alternatywnego (uczciwego) łańcucha. Należy zauważyć, że sfinalizowany, ale nieprawidłowy łańcuch może również wynikać z błędu w kliencie większościowym. Ostatecznie ostatecznym wyjściem awaryjnym jest poleganie na warstwie społecznej – warstwie 0 – w celu rozwiązania sytuacji.

Jedną z mocnych stron konsensusu PoS Ethereum jest to, że istnieje szereg strategii obronnych (opens in a new tab), które społeczność może zastosować w obliczu ataku. Minimalną reakcją mogłoby być przymusowe wyjście walidatorów atakujących z sieci bez żadnej dodatkowej kary. Aby ponownie wejść do sieci, atakujący musiałby dołączyć do kolejki aktywacji, która zapewnia stopniowy wzrost zbioru walidatorów. Na przykład dodanie wystarczającej liczby walidatorów, aby podwoić ilość stakowanego etheru, zajmuje około 200 dni, skutecznie kupując uczciwym walidatorom 200 dni, zanim atakujący będzie mógł podjąć kolejną próbę ataku 51%. Jednak społeczność mogłaby również zdecydować się na surowsze ukaranie atakującego, cofając wcześniejsze nagrody lub spalając pewną część (do 100%) jego stakowanego kapitału.

Niezależnie od kary nałożonej na atakującego, społeczność musi również wspólnie zdecydować, czy nieuczciwy łańcuch, pomimo tego, że jest faworyzowany przez algorytm wyboru rozwidlenia zakodowany w klientach Ethereum, jest w rzeczywistości nieważny i że społeczność powinna zamiast tego budować na uczciwym łańcuchu. Uczciwi walidatorzy mogliby wspólnie zgodzić się na budowanie na akceptowanym przez społeczność rozwidleniu blockchaina Ethereum, które mogłoby na przykład odłączyć się od kanonicznego łańcucha przed rozpoczęciem ataku lub z którego przymusowo usunięto walidatorów atakujących. Uczciwi walidatorzy byliby zachęcani do budowania na tym łańcuchu, ponieważ uniknęliby kar nałożonych na nich za (słuszny) brak poświadczenia łańcucha atakującego. Giełdy, bramki fiat (on-ramps) i aplikacje zbudowane na Ethereum prawdopodobnie wolałyby znajdować się na uczciwym łańcuchu i podążałyby za uczciwymi walidatorami do uczciwego blockchaina.

Byłoby to jednak poważne wyzwanie dla zarządzania. Niektórzy użytkownicy i walidatorzy niewątpliwie straciliby w wyniku powrotu do uczciwego łańcucha, transakcje w blokach zwalidowanych po ataku mogłyby potencjalnie zostać wycofane, zakłócając warstwę aplikacji, a to po prostu podważa etykę niektórych użytkowników, którzy mają tendencję do wierzenia, że „kod jest prawem” (code is law). Giełdy i aplikacje najprawdopodobniej powiązały działania pozałańcuchowe z transakcjami onchain, które mogą teraz zostać wycofane, rozpoczynając kaskadę wycofań i rewizji, które trudno byłoby sprawiedliwie rozwikłać, zwłaszcza jeśli nieuczciwie zdobyte zyski zostały zmieszane, zdeponowane w zdecentralizowanych finansach (DeFi) lub innych instrumentach pochodnych z wtórnymi skutkami dla uczciwych użytkowników. Niewątpliwie niektórzy użytkownicy, być może nawet instytucjonalni, odnieśliby już korzyści z nieuczciwego łańcucha, czy to dzięki sprytowi, czy przypadkowi, i mogliby sprzeciwić się rozwidleniu, aby chronić swoje zyski. Pojawiły się wezwania do przećwiczenia reakcji społeczności na ataki >51%, aby można było szybko przeprowadzić rozsądne, skoordynowane łagodzenie skutków. Istnieje kilka przydatnych dyskusji prowadzonych przez Vitalika na ethresear.ch tutaj (opens in a new tab) i tutaj (opens in a new tab) oraz na Twitterze tutaj (opens in a new tab). Celem skoordynowanej reakcji społecznej powinno być bardzo ukierunkowane i konkretne ukaranie atakującego oraz zminimalizowanie skutków dla innych użytkowników.

Zarządzanie jest już skomplikowanym tematem. Zarządzanie awaryjną reakcją warstwy 0 na nieuczciwy finalizujący się łańcuch byłoby niewątpliwie wyzwaniem dla społeczności Ethereum, ale to już się zdarzyłodwukrotnie – w historii Ethereum).

Niemniej jednak jest coś całkiem satysfakcjonującego w tym, że ostateczne wyjście awaryjne znajduje się w świecie rzeczywistym (meatspace). Ostatecznie, nawet z tym fenomenalnym stosem technologii nad nami, gdyby kiedykolwiek wydarzyło się najgorsze, prawdziwi ludzie musieliby skoordynować swoje wyjście z tej sytuacji.

Podsumowanie

Na tej stronie zbadano niektóre ze sposobów, w jakie atakujący mogą próbować wykorzystać protokół konsensusu dowodu stawki (PoS) Ethereum. Reorganizacje łańcucha i opóźnienia ostateczności zostały zbadane dla atakujących z rosnącymi proporcjami całkowitego stakowanego etheru. Ogólnie rzecz biorąc, bogatszy atakujący ma większe szanse na sukces, ponieważ jego stawka przekłada się na siłę głosu, której może użyć do wpływania na zawartość przyszłych bloków. Przy pewnych progowych ilościach stakowanego etheru moc atakującego wzrasta:

33%: opóźnienie ostateczności

34%: opóźnienie ostateczności, podwójna ostateczność

51%: opóźnienie ostateczności, podwójna ostateczność, cenzura, kontrola nad przyszłością blockchaina

66%: opóźnienie ostateczności, podwójna ostateczność, cenzura, kontrola nad przyszłością i przeszłością blockchaina

Istnieje również szereg bardziej wyrafinowanych ataków, które wymagają niewielkich ilości stakowanego etheru, ale opierają się na bardzo wyrafinowanym atakującym, który ma precyzyjną kontrolę nad czasem przesyłania wiadomości, aby przeciągnąć zbiór uczciwych walidatorów na swoją stronę.

Ogólnie rzecz biorąc, pomimo tych potencjalnych wektorów ataku, ryzyko udanego ataku jest niskie, z pewnością niższe niż w przypadku odpowiedników opartych na dowodzie pracy (PoW). Wynika to z ogromnego kosztu stakowanego etheru narażonego na ryzyko przez atakującego, którego celem jest przytłoczenie uczciwych walidatorów swoją siłą głosu. Wbudowana warstwa zachęt „kija i marchewki” chroni przed większością nadużyć, zwłaszcza w przypadku atakujących z niską stawką. Bardziej subtelne ataki odbijające i równoważące również mają niewielkie szanse powodzenia, ponieważ rzeczywiste warunki sieciowe sprawiają, że precyzyjna kontrola dostarczania wiadomości do określonych podzbiorów walidatorów jest bardzo trudna do osiągnięcia, a zespoły klienckie szybko zamknęły znane wektory ataków odbijających, równoważących i lawinowych za pomocą prostych poprawek.

Ataki 34%, 51% lub 66% prawdopodobnie wymagałyby koordynacji społecznej poza głównym kanałem w celu ich rozwiązania. Chociaż prawdopodobnie byłoby to bolesne dla społeczności, zdolność społeczności do reagowania poza głównym kanałem jest silnym czynnikiem zniechęcającym dla atakującego. Warstwa społeczna Ethereum jest ostatecznym zabezpieczeniem – technicznie udany atak mógłby nadal zostać zneutralizowany przez społeczność zgadzającą się na przyjęcie uczciwego rozwidlenia. Trwałby wyścig między atakującym a społecznością Ethereum – miliardy dolarów wydane na atak 66% prawdopodobnie zostałyby zniweczone przez udany atak koordynacji społecznej, gdyby został on przeprowadzony wystarczająco szybko, pozostawiając atakującego z ciężkimi torbami niepłynnego stakowanego etheru na znanym nieuczciwym łańcuchu ignorowanym przez społeczność Ethereum. Prawdopodobieństwo, że ostatecznie okaże się to opłacalne dla atakującego, jest na tyle niskie, że stanowi skuteczny środek odstraszający. Dlatego inwestowanie w utrzymanie spójnej warstwy społecznej o ściśle dopasowanych wartościach jest tak ważne.

Dalsza lektura

Ostatnia aktualizacja strony: 13 kwietnia 2026