Rizika 51% útoku

Platby budoucnosti
6 min readDec 1, 2022

O 51% útoku slyšel snad již naprosto každý, kdo se o Bitcoin zajímá. V tomto článku se podíváme na to, jak velký problém to představuje, pokud by k němu někdy došlo. Často se totiž setkávám s názorem, že by stačilo pouze počkat více bloků na potvrzení transakce, což není tak úplně pravda.

Trocha teorie

V dnešní době se těžaři (až na výjimky) shlukují do těžebních poolů, jelikož je to výhodnější. K 51% útoku dojde v případě, že jedna entita (ať již samotný pool anebo nějaký externí útočník) dosáhne takového výpočetního výkonu (tzv. hashrate), který bude představovat nadpoloviční většinu sítě.

Jinak řečeno — někomu by se muselo podařit sehnat takové množství těžebních strojů a elektřiny, aby dokázal jednotlivé hashe počítat rychleji, než celý zbytek sítě dohromady. A aby se to dalo považovat za úspěšný útok, takovýto výkon by útočník musel být schopen udržet po delší dobu.

Aktuální poměr výkonu těžebních poolů. Zdroj: mempool.space
Aktuální poměr těžebních poolů. Zdroj: mempool.space

Realita

V dnešní době, s aktuální hodnotou hashrate, je tento typ útoku téměř vyloučený. Samotné pooly se do této situace nebudou chtít dostat. Důkazem může být mining pool GHash.io, který se v minulosti blížil k poloviční hodnotě celkového hashratu. Samotní těžaři poté ze své vlastní iniciativy přesměrovávali svůj výpočetní výkon jinam, jelikož teoretický 51% útok by jim nebyl nikterak ku prospěchu.

I pro externího útočníka by bylo extrémně složité (spíše nereálné) s dnešní (ne)-dostupností těžebních strojů (ASICů), sehnat jich potřebné množství. A to neuvažuji zajištění elektřiny pro jejich provoz.

Tento článek si ale nedává za cíl odpovědět na otázku, zda je 51% útok reálný a může k němu dojít. Řeším zde pouze, co by to pro síť jako takovou znamenalo a jak velký by to byl problém.

Příklad

V našem smyšleném a zjednodušeném příkladu budou existovat čtyři těžební pooly:

  • Pool A (znázorněn modře)
  • Pool B (znázorněn zeleně)
  • Pool C (znázorněn oranžově)
  • Pool D (znázorněn fialově)

Každý z nich bude mít přibližně 25 % výkonu (pro jiný poměr by to vycházelo stejně) a posledních 5 bloků bylo vytěženo následovně:

Posledních 5 bloků vytěžených férovými těžaři.

V tuto chvíli se do sítě připojí útočník (dále značený červeně), který bude financovaný skupinou totalitních vlád s cílem zničit Bitcoin. Jeho hashrate bude konstantně nadpoloviční, počítejme například 55 % z celkové sítě. Na ostatní pooly dohromady tedy zbývá 45 % hashrate.

Jak jste již zajisté slyšeli, takovýto útočník by mohl provádět double-spend útok. Tedy například — odeslat určitý počet bitcoinů na adresu burzy v bloku 101 a bitcoiny ihned prodat. Mezitím si bude potají těžit nový chain začínající na bloku 101, kde ale zamění cílovou adresu burzy za svoji vlastní.

Tvorba alternativního chainu s pozměněnou transakcí.

Jelikož má nadpoloviční hashrate, bude v určitou chvíli jeho chain delší (správněji na něm bude provedeno více práce) a v tuto chvíli jej oznámí do sítě. To způsobí, že síť bude tento chain považovat za hlavní. Dojde k reorganizaci a útočník bude mít jak své bitcoiny (pouze na jiné adrese), tak i fiat peníze, které obdržel z prodeje na burze. Útok úspěšně proveden, bloky férových těžařů byly zneplatněny. Těžba bude dále probíhat nad blokem 104.

Stačí počkat?

Často se lze setkat s názorem, že lze tento problém vyřešit delším čekáním na potvrzení. Jinak řečeno — dnes považuji on-chain transakci za schválenou (a tudíž vydám zboží či fiat peníze) po 1, 3 nebo 6 potvrzeních v závislosti na velikosti transakce.

Nově bych tedy čekal například 24 bloků a tím by to mělo být vyřešeno, jelikož takto velká reorganizace není údajně moc reálná, když případný útočník začne od znovu těžit nad blokem 105.

Útočník si připravuje znovu delší chain nad blokem 105.

Bohužel to není pravda a pro Bitcoin tento útok představuje opravdu zásadní problém. Útočník totiž nemusí být tak hloupý, že by na síť útočil výše popsaným způsobem.

Může si potají počítat mnohem delší chain a ten do sítě nikterak neoznamovat. Čistě teoreticky k tomuto útoku může nepozorovaně docházet i nyní. Osobně to nevidím jako reálné ale vzhledem k povaze útoku to vyloučit nelze.

Po určitém a velmi dlouhém čase bude ta “správná část sítě”, jejíž bloky těží féroví těžaři, například u bloku číslo 350. Ale jelikož má útočník vyšší hashrate, může být například již u bloku 400.

Útočník má potají napočítáno velké množství bloků a drží si je u sebe.

Při zahájení útoku ale nezveřejní celý svůj chain až k bloku 400 ale pouze například jen k bloku 353. Dojde tedy k reorganizaci a bude se pokračovat na bloku 353, který vytěžil útočník.

Útočník zveřejnil část ze svých předpočítaných bloků a provedl reorganizaci.

Problém je ale následující — útočník má náskok 50 bloků před hlavním (správným) chainem a tento náskok si nejen neustále udržuje ale díky většímu hashrate se i prodlužuje.

V době reorganizace má útočník připraveno již více jak 50 následujících bloků.

Vždycky tedy může počkat pár bloků, aby to vypadalo, jakože došlo pouze k nějaké anomálii a opět vyslat do sítě delší chain, který má již předpočítaný z minulosti. Dokud bude mít “dostatečný náskok”, který je zapříčiněn nadpoloviční většinou hashrate, bude kompletně ovládat celou síť a naprosto všechny bloky bude tvořit on.

Navíc se může rozhodnout, že do bloků nebude zařazovat vůbec žádné transakce a tím celou síť “defacto vypnout”. Dokud nebudou mít poctiví těžaři většinový hashrate, díky čemuž by se délka útočníkových dopředu předpočítaných bloků postupně zkracovala, neexistuje proti tomuto útoku obrana.

Ba co víc — těžaři budou utrácet ohromné množství peněz za elektrickou energii a kdykoliv to již bude vypadat, že konečně vytěžili nový blok a dostanou tedy odměnu, tak ta jim bude vzápětí “sebrána” útočníkem díky reorganizaci. To by zajisté po delší době vedlo k hromadnému odpojování těžařů a ještě větší nadvládě útočníkem.

Ani pro běžné uživatele by síť nebyla použitelná, jelikož by všechny bloky byly prázdné a ani delší čekání na potvrzení by nepomohlo — blok by byl vždy nahrazen.

Bohužel by Bitcoinu v tomto případě nepomohl ani fork na alternativní chain, jelikož útočník by jej následoval. Určitým řešení by byla jen změna hashovacího algoritmu (nebo jeho parametrů) takovým způsobem, aby současné ASIC minery, které vlastní útočník, nebyly použitelné. V tomto případě by se musely vyvinout nové a zde by to byl opět jen nový závod o to, kdo jich získá nadpoloviční většinu — zda poctiví těžaři anebo útočník.

Závěr

I když tento článek může vyznít celkem pesimisticky, tak si osobně myslím, že provést 51% útok v dnešní době (kdy je celkový hashrate na historicky maximálních hodnotách), je nereálné.

Případný útočník by musel mít nepředstavitelné množství peněz k získání takto vysokého počtu těžebních strojů a zajištění jejich napájení po velmi dlouhou dobu.

Kromě nějakých pokusů o shortování ceny bitcoinu na burze (kde by případný zisk zajisté nepokryl náklady popsané výše), by zde nebyla žádná finanční incentiva pro provedení útoku. Jeho jediným cílem by tedy muselo být “pouze” extrémně drahé zničení důvěry v Bitcoin a jeho pohřbení na věky věků. Důvěra v tento systém by totiž po takovémto dlouhotrvajícím útoku byla na bodu mrazu.

Nic takového nám ale v současnosti s největší pravděpodobností nehrozí, Bitcoin je v pořádku a není potřeba panikařit. Cílem tohoto článku bylo pouze ukázat na fakt, že dlouhotrvající 51% útok, který se čas od času zmiňuje například při problematice security budgetu, je mnohem větší problém, než si spousta lidí uvědomuje a delší čekání na potvrzení transakce by nám nikterak nepomohlo.

Chcete být informováni ihned jakmile vydám další článek ohledně Bitcoinu, Lightning Network nebo ekonomie? Sledujte mne na Twitteru, navštivte můj web a případně si stáhněte moji nově vydanou knihu o Lightning Network.

--

--

Platby budoucnosti

Články ohledně Bitcoinu, Lightning Network a ekonomie.