Sybil Attack je útok, při kterém jeden protivník ovládá mnoho identit a vydává je za nezávislé účastníky. V Bitcoinu mu další síťová spojení sama nepřidají těžební výkon ani právo změnit pravidla. Mohou mu ale pomoci ovlivnit, od koho určitý uzel dostává informace.
Anna vybírá službu podle doporučení v diskusi. Desítky účtů ji chválí, jenže všechny ovládá její provozovatel. Souhlas mnoha jmen tu nevznikl nezávisle. Podobný problém popsal John R. Douceur v práci The Sybil Attack z roku 2002 pro počítačové sítě: jeden protivník může předstírat více účastníků. Vymyslet nové jméno je snadné; získat potřebné adresy, servery (počítače poskytující služby ostatním) a spojení už může stát peníze a čas. [1]
V bitcoinové síti je peer prostě protistrana, se kterou si váš program vyměňuje data. Petr může provozovat několik uzlů a jedna firma jich může provozovat mnohem více. Bitcoin přitom nevyžaduje registr lidí, který by jim přiděloval po jednom uzlu. IP adresa určuje místo v síti, ke kterému se program připojuje. Jiná IP adresa tedy nedokazuje jiného majitele. Ani provoz více uzlů sám o sobě není útok; problém začíná zneužitím zdánlivé nezávislosti. [1] [3]
Petrův Full Node je program, který sám kontroluje bitcoinová pravidla. Podepsat tu znamená vytvořit pomocí soukromého klíče, tajného číselného údaje, ověřitelný důkaz oprávnění k platbě. Ostatní mohou podpis zkontrolovat, aniž by tento tajný údaj znali. Když Petrovu uzlu všechny připojené protistrany pošlou transakci s neplatným podpisem, stále ji odmítne. Nepočítá souhlasné odpovědi jako hlasy. Blok sdružuje transakce do dávky, která se připojuje ke společné historii. Uzel stejně ověřuje i celé bloky: například zda neutrácí již utracené prostředky nebo nevytvářejí nepovolenou odměnu. Síť mu dodává podklady; platnost posuzuje podle svých pravidel, nikoli podle popularity odesílatele. [2] [6] [9]
Někdy mohou existovat dvě konkurenční platné větve historie. Proof of Work umožňuje porovnat jejich nahromaděnou práci, tedy váhu odvozenou z obtížnosti nalezených bloků. Těžba vyžaduje skutečné výpočetní pokusy; pouhé přejmenování počítače žádnou práci nepřidá. Kdyby útočník rozdělil stejné těžební vybavení mezi mnoho identit, tímto rozdělením by jeho celkový výkon nevzrostl. Proto zde neplatí jeden účet, jeden hlas. [2] [6]
Tisíc připojení nenahradí soukromý klíč potřebný k utracení cizích bitcoinů. Samotné množení identit také neprolomí pravidla vydávání mincí ani nepřiměje správně ověřující uzel přijmout neplatný blok. To ovšem není příslib bezpečí před každým útokem. Útočník může vedle síťových identit získat i těžební výkon nebo využít chybu programu. Takové schopnosti je třeba posuzovat zvlášť, ne je přisuzovat samotnému počtu účtů. [2] [9]
Vraťme se k Petrovu uzlu. Útočník se může snažit zaplnit jeho seznam známých adres a obsadit jeho spojení. Pokud ovládne všechny relevantní cesty ke zbytku sítě, může mu zadržovat bloky a ukazovat neúplný nebo zpožděný obraz dění. Taková izolace se nazývá Eclipse Attack. Sybil Attack ji může usnadnit, ale mnoho útočníkových identit ještě neznamená, že se izolace podařila. Ověřovat přijatá data není totéž jako vědět o datech, která vám někdo zatají. [3] [5] [8]
Bitcoin Core kombinuje více překážek. Při automatickém výběru odchozích spojení hledá síťovou rozmanitost a známé adresy rozděluje do skupin, aby jeden zdroj snadno neovládl celý výběr. Krátká zkušební spojení nazývaná feeler ověřují dosažitelnost dalších protistran. Tyto mechanismy zvyšují náročnost útoku; nezjišťují skutečného majitele každého serveru a nedávají záruku proti izolaci. Konkrétní provedení se vyvíjí — zdroje zde ukazují verzi Bitcoin Core 29.0. [4] [7] [8]
IP adresa nebo adresa služby Tor říká programu, kam se připojit. Není potvrzením, že na druhé straně stojí nový nezávislý člověk. Jeden provozovatel může mít mnoho adres, zatímco více uživatelů může sdílet veřejnou IP adresu nebo část síťové cesty. Tor má smysl pro soukromí spojení, ale jeho adresa sama neprokazuje nezávislost protistrany. Směrování zpráv a váha při výběru bitcoinové historie jsou odlišné věci. [3] [4]
Proof of Work řeší důležitou část problému falešné většiny, nikoli každé riziko komunikace. P2P síť — přímá výměna dat mezi účastníky — může čelit zahlcování, sledování i zadržování zpráv. Obrana proto zahrnuje také práci se spojeními a omezení spotřeby zdrojů. Bezpečnost závisí na tom, co útočník skutečně ovládá: samotná jména, síťové cesty, výpočetní výkon, nebo kombinaci těchto možností. [1] [5] [6]
Počítadlo veřejně dosažitelných uzlů neukazuje počet lidí ani výsledek hlasování o pravidlech. Důležité je také to, jak uzly získávají informace a co samy ověřují. Vlastní Full Node vám umožní kontrolovat přijaté bloky, ale potřebuje spojení se zbytkem sítě. Peněženka je aplikace nebo zařízení pro přijímání a odesílání bitcoinů. Pokud používá cizí server, samotný fakt, že někde běží mnoho uzlů, závislost peněženky na tomto serveru neodstraní. Větší počet kontaktů a větší nezávislost nejsou automaticky totéž. [1] [3] [9]
Pro nejúplnější obraz čtěte toto heslo společně s Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. Opačným směrem na něj odkazují také Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.