Úvod
Útok typu eclipse je relativně jednoduchý útok, kterým může subjekt s nekalými úmysly narušit uzly v síti. Cílem tohoto útoku je zastřít pohled účastníka na peer-to-peer síť, aby vytvořil obecné narušení nebo se připravil na sofistikovanější útok.
Útoky typu eclipse vám mohou připomínat útoky Sybil. V něčem jsou si sice podobné – subjekt s nekalými úmysly zaplaví síť falešnými účastníky – ale jejich konečný cíl je odlišný. Útok typu eclipse se zaměřuje na jeden uzel (z důvodů vysvětlených v další části) a útok Sybil je útok na celou síť s cílem je oklamat reputační systém protokolu.
Tento koncept je podrobně rozebrán v publikaci Eclipse Attacks on Bitcoin's Peer-to-Peer Network z roku 2015, ve které vědci z Bostonské univerzity a Hebrejské univerzity uvádí výsledky svých experimentů s útoky typu eclipse a možná protiopatření.
Jak útok typu eclipse funguje?
Těžaři na bitcoinové síti potřebují k vytváření nových bloků specializované vybavení, ale netěžařské (neboli plné) uzly je možné snadno provozovat s minimálním výpočetním výkonem. To napomáhá Bitcoinu s decentralizací, protože uzel může provozovat kdokoli i na zařízení s nízkým výkonem. Software udržuje databázi transakcí v souladu se sítí pomocí synchronizace s bezprostředními účastníky.
Limitujícím faktorem pro mnoho uzlů je přenosová rychlost. I když tento software běží na obrovském množství zařízení, průměrné zařízení se k mnoha z nich kvůli omezením stanoveným bitcoinovým softwarem (který umožňuje maximálně 125 připojení) nedokáže přímo připojit.
Při útoku typu eclipse se útočník postará o to, aby všechna připojení oběti byla navázána na uzly ovládané útočníkem. Útočník nejprve zaplaví oběť vlastními IP adresami, ke kterým se oběť po restartu softwaru s největší pravděpodobností připojí. Restart je možné buď vynutit (např. DDoS útokem), nebo útočník může jednoduše počkat, až k němu dojde.
Jakmile k restartu dojde, nic netušící oběť je vydána na milost a nemilost škodlivým uzlům, a protože nevidí širší síť, může jí útočník poskytnout nesprávná data.
Důsledky útoku typu eclipse
Pokud útočník vynakládá prostředky na vyřazení účastníka ze sítě, má k tomu pravděpodobně dobrý důvod. Jakmile uzel nevidí zbytek sítě, je možné provést několik následných útoků.
Dvojí útrata s žádnými potvrzeními
Pokud někdo přijme transakci bez potvrzení, vystavuje se riziku dvojí útraty. Transakce sice byla odvysílána, ale dokud není zařazena do bloku (a tedy zapsaná na blockchainu), odesílatel může snadno vytvořit novou transakci, která utratí stejné prostředky někde jinde. Pokud má nová transakce vyšší poplatek, těžař ji pravděpodobně zařadí před tu původní, čímž tuto původní transakci zneplatní.
Některé podniky a jednotlivci tyto transakce s žádnými potvrzeními přijímají. Představte si obchodníka Boba, který prodává auta vyšší třídy. Netuší, že Alice zaútočila na jeho uzel útokem typu eclipse, takže ji z ničeho nepodezřívá, když si objedná luxusní sportovní vůz. Vytvoří transakci, kterou Bob následně odvysílá do sítě. Když se přesvědčí, že je platba na cestě, předá jí klíče od auta a Alice odjíždí.
Transakce samozřejmě odvysílána do sítě nebyla – Bob ji jen předal Aliciným škodlivým uzlům, které ji už poctivým uzlům nepředají. Zatímco tato transakce visí ve vzduchoprázdnu, Alice utratí stejné prostředky na skutečné síti, ať už u jiné strany, nebo na adrese, kterou vlastní. I když se původní transakce Bobovi nakonec objeví, bude zamítnuta, protože dané kryptoměny už byly utraceny.
Dvojí útrata s n potvrzeními
Dvojí útrata s n potvrzeními je podobná té s žádnými potvrzeními, ale vyžaduje větší přípravu. Mnoho podniků raději čeká na určitý počet potvrzení, než označí platbu za platnou. Útočník se s tím může vypořádat tak, že útokem typu eclipse zaútočí na obchodníka i těžaře. Jakmile útočník vytvoří u obchodníka objednávku, obchodník odešle transakci těžařům, na které útočník také zaútočil. Transakce se potvrdí a odešle na blockchain. Nejedná se ale o blockchain, který vidí většina sítě, protože těžař je od něj odříznutý.
Útočník pak předá tuto verzi blockchainu obchodníkovi, který své zboží vydá v domnění, že transakce byla potvrzena. Jakmile se postižené uzly znovu připojí ke skutečné síti, blockchain, o kterém se mylně domnívali, že je platný, je blockchainem, na kterém pracoval zbytek sítě, opuštěn (tímto se útok typu eclipse do jisté míry podobá 51% útoku).
Oslabení konkurenčních těžařů
Uzel pod útokem typu eclipse bude fungovat dál, aniž by věděl, že je od sítě odtržen. Těžaři budou dál těžit bloky podle pravidel stanovených protokolem, ale přidané bloky budou po synchronizaci s poctivými účastníky vyřazeny.
Teoreticky by bylo možné pomocí rozsáhlého útoku typu eclipse umožnit 51% útok. Aktuálně jsou náklady na získání většiny hashovacího výkonu sítě Bitcoin příliš vysoké i pro útočníky s obrovskými zdroji – při výkonu přibližně 80 TH/s by útočník potřeboval víc než 40 TH/s, aby se o útok mohl vůbec pokusit.
Kdyby byl tento hashovací výkon hypoteticky rozdělen mezi 10 stran (každá z nich by disponovala 8 TH/s), útočník by odříznutím několika stran od sítě mohl požadavky na 51% útok výrazně snížit. Kdyby na pět z nich zaútočil útokem typu eclipse, 40 TH/s výkonu by bylo vyřazeno ze závodu o nalezení dalšího bloku a útočníkovi by k převzetí kontroly stačilo získat něco přes 20TH/s výkonu.
Mezi další sabotáže, kterých je možné útokem typu eclipse dosáhnout, patří selfish mining (sobecká těžba) a podvádění v závodech o další blok mezi těžaři.
Zmírňující opatření
S dostatečným počtem IP adres může útočník provést útok typu eclipse na libovolný uzel. Nejjednodušší metodou, jak tomu zabránit, je zablokovat příchozí spojení a navazovat odchozí spojení pouze s určitými uzly (například s těmi, které byly zařazeny na seznam povolených jinými účastníky). Jak ale zmíněná publikace upozorňuje, tento přístup nefunguje ve velkém měřítku – pokud tato opatření přijmou všichni účastníci, nové uzly se nedokáží připojit k síti.
Autoři navrhují několik vylepšení bitcoinového softwaru. Některá z nich už byla po vydání článku přijata. Díky drobným úpravám kódu, jako je náhodný výběr nových připojení a větší kapacita pro ukládání adres, jsou teď útoky typu eclipse nákladnější.
Závěrem
Útoky typu eclipse se provádí na úrovni peer-to-peer. Provedení samostatného útoku ale nedává moc smysl. Jejich skutečná účinnost spočívá v posílení dalších útoků s finančním dopadem nebo získáním výhody v oblasti těžby.
Ve skutečném světě zatím neměl žádný útok typu eclipse vážné následky, ale jeho hrozba nebyla navzdory zavedeným protiopatřením zažehnána. Nejsilnější obranou (jako proti většině kryptoměnových útoků) je ta, která subjektům s nekalými úmysly finančně znemožňuje se o útok pokusit.