Introducere
Un atac eclipsă este un atac relativ simplu pe care un utilizator rău intenționat îl poate implementa pentru a interfera cu nodurile dintr-o rețea. După cum sugerează și numele, atacul urmărește să ascundă vizibilitatea unui participant asupra rețelei peer-to-peer, pentru a provoca perturbări generale sau pentru a pregăti atacuri mai sofisticate.
Atacurile eclipsă pot fi similare la prima vedere cu atacurile Sybil. Deși există anumite asemănări (utilizatorul rău intenționat inundă rețeaua cu participanți falși), scopul final este diferit. Un atac eclipsă vizează un singur nod (din motive explicate într-o secțiune ulterioară), în timp ce un atac Sybil este un atac la nivel de rețea conceput pentru a exploata sistemul reputațional al protocolului.
Conceptul este discutat pe larg în lucrarea din 2015, Atacurile eclipsă asupra rețelei peer-to-peer a Bitcoin, în care cercetătorii de la Universitatea din Boston și Universitatea Ebraică își prezintă constatările din experimentele cu atacurile eclipsă, precum și posibilele măsuri pentru combaterea acestora.
Cum funcționează un atac eclipsă
Minerii Bitcoin au nevoie de echipamente specializate pentru a genera blocuri noi, însă pentru rularea nodurilor care nu fac parte din procesul de minerit (sau complete) este nevoie de o putere de calcul minimă. Acest lucru ajută la descentralizarea Bitcoin, deoarece oricine poate iniția un nod pe un dispozitiv cu specificații reduse. Software-ul menține o bază de date cu tranzacții pe care o sincronizează cu participanții imediați, astfel încât să rămână în sincron cu rețeaua.
Un factor restrictiv pentru multe noduri este lățimea de bandă. Deși există o cantitate imensă de dispozitive care rulează software-ul, un dispozitiv obișnuit nu se poate conecta direct la multe dintre acestea din cauza limitărilor stabilite în software-ul Bitcoin (care permite doar maximum 125 de conexiuni).
Într-un atac eclipsă, utilizatorul rău intenționat se va asigura că toate conexiunile țintei sunt realizate la nodurile controlate de atacator. Entitatea va inunda mai întâi ținta cu propriile adrese IP, la care victima se va conecta când repornește software-ul. Atacatorul poate forța o repornire (adică cu un atac DDoS asupra țintei) sau poate aștepta pur și simplu să se întâmple în mod natural.
Odată ce s-a întâmplat acest lucru, victima nebănuitoare va fi sub controlul nodurilor rău intenționate. Fără a vedea rețeaua mai extinsă, victima poate primi date incorecte de la atacator.
Consecințele unui atac eclipsă
Dacă un atacator folosește resursele pentru a înstrăina un participant din rețea, probabil că are un motiv întemeiat pentru a face acest lucru. Există câteva atacuri succesive care pot fi lansate mai ușor odată ce un nod a fost sufocat.
Cheltuieli duble cu 0 confirmări
Dacă o persoană acceptă o tranzacție fără confirmări, riscă o cheltuială dublă. Este posibil ca tranzacția să fi fost transmisă, dar până când a fost inclusă într-un bloc (și, prin urmare, implementată în blockchain), expeditorul poate crea cu ușurință o nouă tranzacție care cheltuiește aceleași fonduri în altă parte. Dacă noua tranzacție are o taxă mai mare, un miner o va include probabil înaintea celei inițiale, invalidând-o pe cea anterioară.
Unele companii și persoane fizice acceptă aceste tranzacții cu 0 confirmări. Să luăm ca exemplu un comerciant, Bob, care vinde vehicule de ultimă generație. El nu știe că Alice i-a eclipsat nodul și nu bănuiește nimic în timp ce aceasta plasează o comandă pentru o mașină sport de lux. Ea creează o tranzacție, pe care Bob o transmite apoi în rețea. Mulțumit că plata este în curs, predă cheile mașinii și Alice fuge cu ea.
Desigur, tranzacția nu a fost transmisă în rețea – Bob a transmis-o către nodurile rău intenționate ale lui Alice, care nu o vor transmite către nodurile oneste. În timp ce această tranzacție este în așteptare, Alice cheltuiește aceleași fonduri în rețea (cea reala), fie cu o altă parte sau la o adresă pe care o deține. Chiar dacă tranzacția inițială cu Bob este în cele din urmă identificată, aceasta va fi respinsă deoarece monedele au fost deja cheltuite.
Cheltuieli duble cu N confirmări
Cheltuiala dublă cu N confirmări este similară cu cheltuitele cu confirmări 0, dar implică mai multă pregătire. Multe companii preferă să aștepte un anumit număr de confirmări înainte de a marca o plată ca fiind validă. Pentru a ocoli acest lucru, atacatorul trebuie să eclipseze atât minerii, cât și comerciantul. Odată ce atacatorul a plasat comanda la comerciant, acesta difuzează o tranzacție către mineri (cei eclipsați). Tranzacția este confirmată și inclusă în blockchain – dar acest blockchain nu este lanțul pe care majoritatea rețelei îl poate vedea, deoarece minerul este izolat.
În continuare, atacatorul transmite această versiune a blockchainului către comerciant, care eliberează produsele cu convingerea că tranzacția a fost confirmată. Odată ce nodurile eclipsate se alătură din nou rețelei reale, blockchainul despre care participanții cred în mod eronat că este valid este desprins de cel la care a lucrat restul rețelei (acest atac are unele asemănări cu un atac de tip 51%).
Slăbirea minerilor concurenți
Un nod eclipsat va continua să funcționeze, indiferent de faptul că a fost segregat de rețea. Minerii vor continua să mineze blocuri în conformitate cu regulile stabilite de protocol, dar blocurile adăugate vor fi eliminate pe măsură ce se sincronizează cu participanții onești.
Teoretic, un atac eclipsă la scară largă asupra minerilor principali ar putea fi folosit pentru a facilita un atac de tip 51%. Așa cum stau lucrurile acum, costul pentru preluarea majorității puterii de hashing a Bitcoin este pur și simplu prea mare chiar și pentru cei mai ingenioși atacatori – la ~80TH/s, entitatea ar avea nevoie de mai mult de 40TH/s pentru a încerca o astfel de manevră.
Într-un scenariu ipotetic în care această putere de hashing este distribuită între 10 părți (astfel încât fiecare să dețină 8TH/s), atacatorul poate reduce semnificativ cerințele pentru un atac de 51% prin tăierea acestor părți din rețea. Dacă cinci sunt eclipsate, 40TH/s este eliminat din cursa pentru a găsi următorul bloc, iar atacatorul trebuie acum doar să obțină puțin peste 20TH/s pentru a prelua controlul.
Un alt sabotaj care poate fi realizat prin eclipsarea țintelor include manipularea nodurilor pentru mineritul egoist sau manipularea competiției dintre mineri pentru a găsi următorul bloc.
Mitigare
Cu suficiente adrese IP, un atacator poate eclipsa orice nod. Cea mai simplă metodă de a preveni acest lucru este ca un operator să blocheze conexiunile de intrare și să facă numai conexiuni de ieșire către anumite noduri (cum ar fi cele care au fost incluse în lista de permisiuni de alți participanți). Așa cum subliniază, însă, lucrarea de cercetare, aceasta nu este o abordare care funcționează la scară largă – dacă toți participanții adoptă aceste măsuri, noile noduri nu se vor putea alătura rețelei.
Autorii propun câteva modificări în software-ul Bitcoin, dintre care unele au fost integrate de la lansarea lucrării. Acestea fac atacurile eclipsă mai costisitoare prin modificări minore ale codului, cum ar fi selecția aleatorie a noilor conexiuni și o capacitate mai mare de stocare a adreselor.
Gânduri de încheiere
Atacurile eclipsă sunt efectuate la nivel de rețea peer-to-peer. Desfășurate ca un atac de sine stătător pot produce efecte cel mult deranjante. Adevărata lor eficiență constă în potențarea altor atacuri care au impact financiar asupra țintelor sau oferă atacatorului un avantaj în ceea ce privește mineritul.
În realitate, încă nu au existat consecințe grave ca urmare a unui atac eclipsă, dar amenințarea încă există în ciuda contramăsurilor integrate în rețea. Așa cum este cazul pentru majoritatea vectorilor de atac privind Bitcoin și alte criptomonede, cea mai puternică apărare este aceea care oferă un caracter prohibitiv din punct de vedere financiar pentru părțile rău intenționate.