Hlavní navigace

Veřejné blockchainy pod útokem: jak funguje 51% útok, sobecký útok a na co dojel MtGox

1. 4. 2021
Doba čtení: 8 minut

Sdílet

 Autor: Depositphotos
Jak vypadají hlavní útoky na proof of work a proof of stake? Jaká rizika přináší koncept miningu, ale také proč není tak snadné tento koncept opustit?

minulém článku o útocích na veřejný blockchain jsme se věnovali historii útoků, dnešní díl z čistě kapacitních důvodů věnujeme hlavně útokům na konsensus protokoly. Podíváme se ale také na jednu minule slíbenou zajímavost.

Proof-of-work, který slouží jako důkaz vynaložené námahy při validaci bloku, stále patří mezi nejpopulárnější konsensus protokoly na veřejných blockchainech. Jeho hlavní výhodou je nesporný počáteční vklad validátora (zde minera), který byl učiněn mimo samotnou síť a nelze jej vrátit ani znovu použít a tím vynaložené náklady snížit. 

Vynaložená námaha má podobu počtu hashí, které jsou třeba k dosažení parametru „D“ nastaveného samotnou sítí. Jak roste agregovaná hash power (Hr), stoupá obtížnost toho, aby běžný čas na vytvoření bloku (Tn) zůstával v doporučeném časovém intervalu (10 minut u Bitcoinu, 10–15 vteřin u Etherea atd.). Konsensus se tak rovná náhodou řízené „práci“ k produkci dalšího bloku + volbě nejdelšího blockchainu (největší kombinované obtížnosti).

Protože však PoW konsensus v sobě obsahuje také prvek loterie, který má zaručovat, že si jeden dominantní miner nepřivlastní celou síť, snaží se těžaři náhodě všelijak pomoci. Historie Bitcoinu to krásně ukazuje:

  • 2010–2011: odklon od asi nejdemokratičtější těžby prostřednictvím CPU směrem ke GPU, které skýtaly první kompetitivní výhodu
  • 2012: útěk k FPGA (field-programmable gate array), které díky jejich snadné programovatelnosti umožňovaly jednoduše optimalizovat výpočet na hledání nonce
  • 2013: na sklonku roku příchod Application Specific Integrated Circuit dedikovaných již čistě danému úkolu 

S příchodem GPU těžby se zrodila ještě jedna chytrá idea, jak jít náhodě trochu naproti. Původním smyslem bylo umožnit CPU minerům ještě nějaký čas konkurovat bohatším těžařům s grafickými rigy. V listopadu 2010 Marek „Slush“ Palatinus poprvé publikuje na bitcointalk.org nápad na sdruženou těžbu více minerů (zvyšuje se tím šance na nalezení bloku a snižuje čas mezi úspěchy) s následným dělením odměny. Přes počáteční ideologický odpor (riziko centralizace) se již dnes prakticky jinak ani netěží.

Tento logický a zpětně nejspíš nevyhnutelný vývoj s sebou ale přinesl také mnohem větší zranitelnost útoky na konsensus, zejména většinovými útoky a hrozící double-spending.

Jak funguje nejznámější druh útoku na PoW konsensus protokol: 51% útok

MonaCoin, Bitcoin Gold, ZenCash, Verge, LiteCoin Cash a (dokonce dvakrát) Ethereum Classic, to je šest nejznámějších úspěšně realizovaných 51% útoků na PoW konsensus blockchainy. 

Na útok, o kterém se ještě před čtyřmi lety soudilo, že hrozí pouze teoreticky, docela slušný výsledek. Ztráta reputace v uvedených případech značně převýšila přímý ekonomický dopad (finanční ztrátu tokenů v jednotkách milionů dolarů), o to je ale situace možná horší.

51% útok na PoW předpokládá, že miner získá více než 50 procent síťové hash rate. Díky tomu je schopen navázat na libovolném starším bloku a vytvořit vlastní delší verzi blockchainu. Protože nejdelší řetězec podle pravidel konsensu vždy vítězí (stojí za ním největší výpočetní síla), síť (ostatní mineři a validační nody) nový chain časem nejspíš akceptuje jako správnou verzi (jistotu ovšem útočník nemá). 

Útok sám je ale značně nákladný a umožňuje jen omezené záškodničení, což byl také hlavní důvod, proč se o něm dlouho uvažovalo jen jako o teoretické hrozbě. S 51% hash power například nezměníte pravidla systému ani se nezmocníte cizích digitálních tokenů. 

Co ale můžete provést, je realizace dvojité útraty vlastněných tokenů a v omezené míře cenzura cizích transakcí (51% útok je možné použít k DoS útoku na síť) a přepisování historie (reorganizační útoky), zejména té nedávné (přepisování historie je s každým blokem nazpět citelně nákladnější). Vzhledem k relativně vysokým nákladům a limitované výhodě útok hrozí hlavně u málo využívaných sítí s malou kombinovanou obtížností.

Vedle přiměřeného security budgetu (náklady celkové pobídky minerů ke „správnému chování“, tradičně odměna za blok + transakční poplatky) existuje i teoretické technické řešení tohoto problému. Jmenuje se dvoufázový proof-of-work (2P-PoW) a spočívá v tom, že mineři musí namísto jednoho řešit celkem dva úkoly. Mechanismus by měl vést ve zkratce k tomu, že hashrate v mining poolech neporoste nad stanovený limit.

Pěknou případovou studií 51% útoku je útok na Ethereum Classic z ledna 2019. Zde najdete celý report útoku od čínské společnosti SlowMist, která na něj upozornila. V srpnu o rok později se ta samá síť stala obětí 51% reorganizačního útoku, kdy se minerům podařilo změnit historii více než 3000 bloků.

Sobecký útok

Čistě ekonomicky je ale pro hráče s přístupem k vysoké hash power mnohem výhodnější například „sobecký útok“, kdy mineři zvyšují svoji šanci na odměnu tak, že nevysílají vytěžené bloky do sítě ihned, ale těží si delší čas pro sebe a následně vypustí bloky naráz, čímž připraví ostatní o odměnu. 

Celý koncept útoku v roce 2013 do detailu popsali výzkumníci Emin Gun Sirer a Ittay Eyal ve své práci Majority is not Enough: Bitcoin Mining is Vulnerable

Obětí útoku se v roce 2014 stal bitcoinový mining pool Eligius, mineři kvůli němu přišli zhruba asi o 300 BTC. Sobecký útok lze provést u všech veřejných blockchainů spoléhajících na PoW a šance na jeho úspěšné provedení je na rozdíl od 51% poměrně vysoká. 

Specifickou variantou útoku je pak tzv. Fork after withholding, tedy situace, kdy miner skryje nalezený blok s vidinou, že jej později buď zahodí, nebo uvolní (a vytvoří tak fork platného chainu) v závislosti na tom, která varianta pro něj bude výhodnější.

Transaction malleability: kuriozita, která potopila burzu

Transaction malleability (poddajnost transakce) je útočný vektor, který do dnešního článku vlastně tak úplně tematicky nepatří, protože však jde o zajímavost, kterou jsme minule slíbili vysvětlit a v komentářích se po ní objevila poptávka, zařazujeme ji tak trochu „mimo soutěž“.

Tento kdysi populární útok dnes již snad patří definitivně minulosti. Snadno zneužitelná chyba se objevila již v původním Satoshiho návrhu Bitcoinu a umožňovala třetí straně změnit ID transakce (hash) v síti. 

Součástí dat transakce, ze kterých se počítá otisk (tzv. txid), je totiž i samotný podepisovací skript (scriptSig). V tomto skriptu pak můžeme učinit změny, díky kterým bude výsledný otisk transakce jiný, a přitom nový podpis zůstane stále platným. Podmínkou je, že se tak musí stát ještě před tím, než je transakce definitivně zapsána na blockchain, následně už zůstává ID neměnné. Útočník musí vědět, na jaké ID cílí, a propagovat svoji variantu silněji (větší transakční fee), než jak se děje u legitimního zadavatele transakce.

Protože útočník nemohl měnit obsah transakce, považovala se chyba dlouho za kosmetickou. Problém nastal v okamžiku, kdy se ukázalo, že největší bitcoinová burza té doby, MtGox, používala pro identifikaci transakcí právě pouze transakční ID, což se jí stalo osudným. Útočníkovi totiž stačilo zadat příkaz k výběru a transakci posléze v síti zpropagoval pod jiným ID. Následně si mohl podat stížnost, že se transfer neprovedl, a dožadovat se zaslání bitcoinů znovu. Protože MtGox v blockchainu transakci s daným ID neviděl, bitcoiny poslal.

Dnes by si žádná kryptoměnová burza podobné diletantství nedovolila, pomyslnou tečku za řáděním transaction malleability ale učinil až příchod Segwitu. Ten totiž přesouvá samotný podpis až za vlastní transakci. Původní pole scriptSig zůstává prázdné a v počítání otisku transakce tudíž podpis vůbec nefiguruje. 

Samotný Segwit nicméně zavádí jiný identifikátor – wtxid, který podpis zahrnuje, a na ten je teoreticky opět možné útočit (malleabilitu jeho kódování řeší BIP 146). Výhodou pro nás (a pro bezpečnost sítě) je, že wtxid neslouží pro řetězení transakcí.

Long range útoky v proof of stake sítích

Pokud by to z dosavadního popisu vypadalo, že zranitelné jsou především PoW sítě, máloco by bylo vzdálenější pravdě. Hlavní problém PoS sítí je ten, že si na rozdíl od PoW sítě nevystačí jen s pravidlem nejdelšího řetězce. Důvod je jednoduchý, simulace nejdelšího chainu zde totiž na rozdíl od PoW sítě validátora moc energie nestojí. 

Bezpečnost sítě a motivace validátorů chovat se poctivě tedy musí stát na něčem jiném. Principiální rozdíl PoW a PoS je ten, že PoW odměňuje hlasující uživatele sítě za to, že dělají správnou věc, kdežto PoS spoléhá spíše na to, že je potrestá, pokud udělají věc špatnou. Jinými slovy, U PoW systému musíte vynaložit vysoké náklady (čím vyšší, tím je síť bezpečnější), abyste získali v rámci systému kýženou odměnu, u PoS jsou naopak náklady na získání odměny nízké, ale systém tvrdě trestá za pokus o podvod (ztrátou vložených coinů).

Long range útoky se teoreticky dělí na tři typy podle způsobu implementace PoS protokolu. První z nich (Simple) předpokládá velmi naivní implementaci, kdy nody nekontrolují časová razítka bloků. Druhá varianta (posterior corruption) spočívá ve snaze validátora přidat v daném časovém okně více bloků, než se nalézá v hlavním řetězci. Poslední variantu pak představuje tzv. stake bleeding, který spočívá v okopírování transakce z poctivě udržovaného chainu do privátního blockchainu udržovaného útočníkem. 

Při long range útocích se využívají zakoupené či ukradené privátní klíče k balancím tokenů, které byly v minulosti použity k validaci bloku. Ty jsou následně zneužívány ke snaze o reorganizaci bloku a zvýšení odměny za PoS validaci. 

Existuje hned několik v praxi používaných technik (mimo samotné hrozby ztráty vkladu) a prakticky všechny funkční PoS systémy dnes využívají jednu nebo několik mechanik, které riziko úspěšného long range útoku snižují: pohyblivé checkpointy, key-evolving kryptografie (nebo key-evolving podpisy), kontext-aware transakce či „pravidlo hojnosti“. 

UX DAy - tip 2

Žádný z těchto přístupů ale sám o sobě nechrání PoS blockchain dokonale a k alespoň relativně účinné ochraně je třeba tyto mechaniky kombinovat. Přístupy jako key-evolving podpisy jsou navíc zatím víc akademickým experimentem než v praxi aplikovatelnou myšlenkou. To se ale snad časem změní. 

Celé téma by zasluhovalo samostatný článek, protože se ale k řadě vektorů vůbec nedostalo a my jsme již na konci, nechme si to třeba zase někdy na příště. 

Byl pro vás článek přínosný?

Autor článku

Externí spolupracovník serveru Lupa.cz a expert na blockchain a kryptoměny. Jako šéfredaktor v minulosti vedl ADASTRA Business Intelligence Magazine a server ITbiz.cz. Dnes pracuje jako redaktor časopisu Forbes.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).