Šta je Sybil napad i kako se Bitcoin brani od lažnih čvorova?

Šta je Sybil napad i odakle mu ime, zašto hiljadu lažnih čvorova ne menja lanac Bitcoina, šta je eclipse napad, po čemu se razlikuje od napada 51% i kako tvoj čvor bira s kim se povezuje.

Sadržaj

Najvažnije u nekoliko reči:

  • Sybil napad znači da jedan napadač nastupa kao mnogo učesnika, da bi u mreži imao više uticaja nego što mu pripada.
  • U otvorenoj mreži niko ne izdaje lične karte, pa lažan učesnik skoro ništa ne košta.
  • Bitcoin zato ne broji čvorove. Koji lanac važi, odlučuje dokaz o radu, a hiljadu lažnih čvorova na jednom računaru ima rad jednog računara.
  • Lažni čvorovi ipak mogu da okruže jedan čvor i da mu pokazuju samo ono što napadač hoće. To se zove eclipse napad.
  • Bitcoin Core se od toga brani tako što čvor sam bira s kim se povezuje, i to sa čvorovima iz različitih delova interneta.

Ruka ubacuje kovertu u drvenu glasačku kutiju na pultu pekare, pored visoke gomile istih koverata

Zamisli da lokalni portal pravi anketu o najboljoj pekari u gradu. Glasa se klikom, jedan glas po imejl adresi. Vlasnik jedne pekare za jedno popodne otvori dvesta adresa i njegova pekara pobedi. Niko nije provalio u sajt. Anketa ne zna ko stoji iza adrese.

Sybil napad (engl. Sybil attack) je napad u kome jedan učesnik nastupa pod mnogo identiteta, da bi u sistemu u kome se svaki identitet računa imao više uticaja nego što mu pripada. Identitet može da bude imejl adresa, nalog, IP adresa ili čvor u mreži. U Bitcoinu svako može da pokrene čvor, a niko ne proverava ko stoji iza njega. Šta onda napadač može da uradi sa hiljadu lažnih čvorova?

Ime je došlo iz jedne knjige, a problem je opisao istraživač Microsofta

Pojam je 2002. godine uveo John R. Douceur iz Microsoftovog istraživačkog odeljenja (Microsoft Research), u radu „The Sybil Attack“ (rad, IPTPS 2002). Računar u velikoj mreži ne vidi ljude, nego samo identitete. Ne može da zna da li iza deset identiteta stoji deset ljudi ili jedan. Douceur je pokazao da u mreži bez središnjeg tela koje potvrđuje identitete napadač uvek može da nastupi pod više imena, osim pod uslovima koji u velikoj mreži nisu ostvarivi.

Ime je uzeto iz knjige „Sybil“ koju je Flora Rheta Schreiber objavila 1973. godine (knjiga). Knjiga je predstavljena kao istinita priča o mladoj ženi koja je nastupala kao mnogo različitih osoba. Na to ime je, kako piše u zahvalnici na kraju rada, došao Douceurov kolega Brian Zill.

Kod banke i menjačnice identitet potvrđuje lična karta, kako objašnjava tekst o tome šta zakon u Srbiji traži od menjačnice. Bitcoin takvo telo nema, i to namerno. Čvor može da pokrene svako, bez dozvole i bez lične karte. Zato pravila mreže ne smeju da zavise od toga koliko čvorova nešto tvrdi.

Bitcoin ne broji čvorove, nego rad

Satoshi je to rešio u whitepaperu. Kad bi se većina računala po pravilu „jedna IP adresa, jedan glas“, mogao bi da je izigra svako ko može da zauzme mnogo IP adresa. Dokaz o radu je zato pravilo „jedan procesor, jedan glas“, a odluku većine predstavlja lanac u koji je uloženo najviše rada (odeljak 4).

Dokaz o radu (engl. proof of work) je heš bloka koji ispunjava strog uslov. Do njega se stiže samo isprobavanjem, a to troši struju i opremu. Kako to radi, objašnjava tekst Šta je rudarenje Bitcoina?, a koji se uređaji za to koriste, tekst Šta su ASIC rudari?

Šta onda napadaču donosi deset hiljada lažnih čvorova? Što se tiče lanca, ništa. Svi oni rade na njegovim računarima, pa zajedno imaju onoliko računske snage koliko i ti računari. Blok bez ispravnog dokaza o radu svaki čvor odbacuje sam, ma koliko ga drugih čvorova slalo. Kad stignu dva ispravna lanca, čvor nastavlja onaj u koji je uloženo više rada, a ne onaj za koji se javi više čvorova (odeljak 5).

Šta napadač dobija od lažnih čvorova

Isti učesnici, dva načina brojanja.

Pošteni učesniciNapadač4 čvora, 4 računara12 lažnih čvorova, 1 računarAko se broje čvorovipošteni 4napadač 12napadač 75%Ako se broji radpošteni 4napadač 1napadač 20%

Sliku možeš da pomeraš levo-desno.

Zamišljen primer: svaki računar radi isti posao, a lažni čvorovi napadača rade na jednom računaru.

Neke druge mreže umesto rada traže ulog u svojoj valuti (engl. proof of stake), kako ukratko piše tekst Šta je blockchain? Ovaj tekst govori samo o Bitcoinu.

Sybil napad, eclipse napad i napad 51% nisu isto

Ova tri napada se razlikuju po tome šta napadač mora da ima i šta time dobija.

NapadŠta napadač praviŠta ga to koštaŠta time dobija u Bitcoinu
Sybil napadmnogo lažnih čvorovamalo, računar i IP adresesam po sebi ništa, jer se čvorovi ne broje
Eclipse napadlažne čvorove oko jednog čvoramnogo IP adresa i strpljenjada jednom čvoru skriva blokove i transakcije
Napad 51%više od pola ukupne računske snageviše uređaja i struje nego ostatak mrežeda poništi svoje plaćanje i da ne upisuje tuđe transakcije

Tabelu možeš da pomeraš levo-desno.

Napad 51% je napad pravim radom. Napadač ima više računske snage od svih ostalih zajedno, pa njegov lanac pre ili kasnije postane najduži. Šta tada može, a šta ne, objašnjava tekst o rudarenju, a kako bi poništio svoje plaćanje, tekst Šta je dvostruka potrošnja? Lažni čvorovi mu u tome ne pomažu.

Eclipse napad odseca jedan čvor od ostatka mreže

Tvoj čvor o mreži zna samo ono što mu kažu čvorovi sa kojima je povezan. Od njih dobija nove blokove, transakcije i adrese drugih čvorova. Ako su svi ti čvorovi napadačevi, tvoj čvor je odsečen od ostatka mreže, a da to ne zna.

Eclipse napad (engl. eclipse attack, od reči za pomračenje) je napad u kome napadač zauzme sve veze jednog čvora. Tada može da mu zadržava nove blokove i transakcije. Može i da trgovcu pokaže uplatu, a ostatku mreže pošalje transakciju koja isti novac troši na drugom mestu.

Ni tada se pravila ne menjaju. Tvoj čvor i dalje sam proverava svaki blok i neispravan odbacuje. Blok sa ispravnim dokazom o radu napadač može da napravi samo pravim rudarenjem, pa mu za lažne potvrde treba i stvarna računska snaga.

Napad su 2015. opisali istraživači Univerziteta u Bostonu i Hebrejskog univerziteta u Jerusalimu (Heilman i dr., USENIX Security 2015). Protiv tadašnje verzije Bitcoin Core-a napadač sa 4.600 zaraženih računara, ili sa 8.192 adrese iz 32 različita bloka adresa, mogao je da okruži čvor sa javnom IP adresom, a verovatnoća uspeha bila je najmanje 85%. U probi na pravim čvorovima bilo je dovoljno i 400 računara. Napad je računao na trenutak kad se čvor ponovo pokrene i iznova bira veze.

Autori su predložili i odbranu. Prve izmene ušle su već u Bitcoin Core 0.10.1 (napomene uz izdanje). Danas program ima i dve druge ideje iz istog rada. Prva su probne veze (engl. feeler connections). Otprilike svaka dva minuta čvor se nakratko javi nekoj adresi iz svog spiska da proveri da li tamo zaista radi čvor, pa u spisku ostaje više adresa koje rade (connection_types.h, net.h). Druga su sidra (engl. anchors), o kojima piše sledeći odeljak.

Kako tvoj čvor bira s kim razgovara

Bitcoin Core 32.1 ne ostavlja napadaču da bira veze tvog čvora:

  • Odlazne veze otvara sam. Čvor sam otvara osam veza preko kojih razmenjuje sve i još dve samo za blokove (net.h). Adrese za njih bira iz svog spiska, a ne prema tome ko mu se prvi javi. Napadač može sam da se poveže sa tvojim čvorom, ali ne može da izabere njegove odlazne veze.
  • Najviše jedna veza po delu interneta. Dve odlazne veze nikad ne idu u istu mrežnu grupu, a za IPv4 to su sve adrese sa ista prva dva broja (net.cpp). Napadač sa hiljadu adresa iz jednog data centra tako dobija najviše jednu tvoju odlaznu vezu.
  • Spisak adresa je podeljen na pregrade. Adrese koje pošalje čvor iz jedne mrežne grupe mogu da zauzmu najviše 64 od 1.024 pregrade za nove adrese (addrman.h, addrman_impl.h). Jedan izvor zato ne može da zatrpa ceo spisak svojim adresama.
  • Veze samo za blokove se teško vide spolja. Preko njih ne idu transakcije ni adrese, pa drugi teško otkrivaju s kim je tvoj čvor povezan (connection_types.h).
  • Sidra pamte veze preko ponovnog pokretanja. Pri gašenju čvor zapamti dve veze samo za blokove i pri sledećem pokretanju prvo se poveže sa njima (net.cpp). To je baš trenutak koji je napad iz 2015. koristio.
  • Kad blokovi ne stižu, traži nove veze. Ako za 30 minuta, koliko traju tri ciljana vremena bloka, ne stigne nov blok, čvor otvara još jednu odlaznu vezu (net_processing.cpp).

Eclipse napad i veze koje čvor bira sam

Strelica ide od onoga ko je otvorio vezu.

Eclipse napadsve veze vode do napadačatvoj čvorTvoj čvor sam bira veze8 za sve, 2 samo za blokove (tačkasto)tvoj čvor

Sliku možeš da pomeraš levo-desno.

Izvori: Bitcoin Core 32.1, net.h (otvara se u novom prozoru), 31.10.2026, broj odlaznih veza; net.cpp (otvara se u novom prozoru), 31.10.2026, jedna odlazna veza po mrežnoj grupi. Šema, ne snimak stvarne mreže. Isprekidan krug je čvor napadača.

Ove mere ne obećavaju da napad nikad ne može da uspe. One ga čine skupim i teškim, a neispravan blok tvoj čvor odbacuje u svakom slučaju.

Šta ti možeš da uradiš

  1. Proveravaj na svom čvoru. Novčanik koji pita samo jedan tuđ server veruje tom serveru da mu pokazuje pravu sliku mreže. Za taj novčanik server je jedina veza sa mrežom. Kako da imaš svoj čvor, piše u tekstu Full node i light node.
  2. Ostavi čvoru njegove veze. Podrazumevana podešavanja Bitcoin Core-a već sadrže sve mere iz prethodnog odeljka. Čvor kome veruješ dodaj podešavanjem addnode, pored ostalih veza. Podešavanje connect povezuje čvor samo sa navedenim čvorovima i gasi sve ostale odlazne veze (init.cpp). Zato ga ne koristi umesto podrazumevanih veza.
  3. Za veći iznos sačekaj potvrde. Što više blokova stoji iznad tvoje transakcije, to bi napadaču trebalo više stvarnog rada da je poništi. Koliko da sačekaš, piše u tekstu Šta je dvostruka potrošnja?

Šta iz ovoga sledi za tebe

Ključne lekcije:

  • Sybil napad je jedan napadač pod mnogo imena. U otvorenoj mreži lažan identitet je jeftin.
  • Bitcoin ne odlučuje glasanjem čvorova, nego radom. Lažni čvorovi ne donose nijedan heš više.
  • Eclipse napad cilja veze jednog čvora, a ne celu mrežu. I tada čvor sam odbacuje neispravan blok.
  • Napad 51% je nešto drugo. Za njega treba više stvarne računske snage nego što ima ostatak mreže.
  • Po nama je svoj čvor sa podrazumevanim vezama najbolja zaštita od lažne slike mreže.

Šta dalje?

Sad znaš zašto u Bitcoinu broj čvorova ne odlučuje ništa. Sledeći tekst, Lightning Network: kanali za plaćanje iznad Bitcoina, objašnjava kako se bitcoinima plaća brzo i jeftino, bez čekanja na blok.

U Bitcoinu se ne broje glasovi, nego rad. Hiljadu lažnih čvorova bez rada ne napravi nijedan ispravan blok.

  1. Šta je Sybil napad i kako se Bitcoin brani od lažnih čvorova?

Tekst 3 od 23

Napredne teme