Įvadas
Užtemdymo ataka yra gana paprasta – ja piktavališkas veikėjas gali sutrikdyti tinklo mazgus. Kaip rodo pavadinimas, šia ataka siekiama užgožti dalyvio matomą lygiaverčių mazgų tinklo vaizdą ir taip sukelti bendrą sutrikimą arba pasirengti sudėtingesnėms atakoms.
Iš pirmo žvilgsnio užtemdymo atakos gali atrodyti panašios į Sybil atakas. Nors jos turi tam tikrų panašumų (piktavališkas veikėjas užtvindo tinklą netikrais lygiaverčiais mazgais), jų galutinis tikslas skiriasi. Užtemdymo ataka nukreipiama į vieną mazgą (dėl tolesniame skyriuje paaiškintų priežasčių), o Sybil ataka būna nukreipta prieš visą tinklą, ji skirta apgauti protokolo reputacijos sistemą.
Ši koncepcija išsamiai aptarta 2015 m. straipsnyje „Užtemdymo atakos prieš bitkoino lygiaverčių mazgų tinklą“, kuriame Bostono universiteto ir Hebrajų universiteto mokslininkai aprašo su užtemdymo atakomis darytų eksperimentų rezultatus bei kovai su jomis skirtas atsakomąsias priemones.
Kaip veikia užtemdymo ataka
Bitkoinų kasėjams reikalinga specializuota įranga, kad būtų galima generuoti naujus blokus, tačiau nekasantys (arba visaverčiai) mazgai nesunkiai veikia naudojant minimalią skaičiavimo galią. Tai padeda decentralizuoti bitkoiną, nes bet kuris asmuo gali sukurti mazgą negalingų specifikacijų įrenginyje. Programinė įranga palaiko sandorių duomenų bazę, kurią ji sinchronizuoja su tiesioginiais lygiaverčiais mazgais, kad būtų suderinta su tinklu.
Daugelį mazgų ribojantis veiksnys yra pralaidumas. Nors ši programinė įranga veikia daugybėje įrenginių, dėl bitkoino programinėje įrangoje nustatytų apribojimų (leidžiami ne daugiau kaip 125 prisijungimai) vidutinis įrenginys negali tiesiogiai prisijungti prie daugelio mazgų.
Užtemdymo atakos metu piktavališktas veikėjas pasirūpina, kad visi taikinio prisijungimai būtų prie užpuoliko valdomų mazgų. Pirmiausia užpuolikas užtvindys taikinį savo IP adresais, prie kurių auka, tikėtina, prisijungs, kai programinė įranga bus paleista iš naujo. Paleidimas iš naujo gali būti priverstinis (t. y. prieš taikinį panaudojus DDoS ataką) arba užpuolikas gali tiesiog palaukti, kol programa bus paleista iš naujo.
Kai tai įvyks, nieko neįtarianti auka paklius į kenkėjiškų mazgų spąstus – neturės galimybės matyti platesnio tinklo ir užpuolikas galės jai teikti neteisingus duomenis.
Užtemdymo atakos pasekmės
Jei užpuolikas naudoja išteklius, kad atskirtų lygiavertį mazgą nuo tinklo, jis tam tikriausiai turi motyvą. Atkirtus mazgą galima lengviau paleisti įvairias atakų kombinacijas.
Dvigubos išlaidos be patvirtinimų
Jei asmuo priima sandorį be patvirtinimų, jam gresia dvigubos išlaidos. Sandoris gali būti ištransliuojamas, bet kol jis nėra įtrauktas į bloką (ir dėl to nėra įtrauktas į blokų grandinę), siuntėjas gali lengvai sukurti naują sandorį ir išleisti tas pačias lėšas kur nors kitur. Jei naujasis sandoris turi didesnį mokestį, kasėjas tikriausiai jam teiks pirmenybę prieš ankstesnį sandorį, todėl ankstesnis nebegalios.
Kai kurios įmonės ir asmenys priima tokius sandorius be patvirtinimų. Pavyzdžiui, prekybininkas Bobas parduoda aukštesnės klasės automobilius. Jis nežino, kad Alisa užtemdė jo mazgą – jai pateikus prabangaus sportinio automobilio užsakymą Bobas nieko neįtaria. Ji sukuria sandorį, kurį Bobas ištransliuoja į tinklą. Manydamas, kad mokėjimas jau pakeliui, jis perduoda automobilio raktelius Alisai ir Alisa išvažiuoja.
Žinoma, šis sandoris nebuvo ištransliuotas tinklui – Bobas tiesiog apie jį pranešė kenkėjiškiems Alisos mazgams, kurie apie jį nepraneš sąžiningiems mazgams. Kol šis sandoris kabo ore, Alisa išleidžia tas pačias lėšas (tikrajame) tinkle pervesdama jas kitai šaliai arba jai priklausančiu adresu. Net jei pradinis sandoris su Bobu galiausiai bus pamatytas, jis bus atmestas, nes monetos jau bus išleistos.
Dvigubos išlaidos su N patvirtinimų
Dvigubos išlaidos su N patvirtinimų veikia panašiai kaip be patvirtinimų, bet šiai atakai reikia daugiau pasiruošimo. Prieš pažymėdamos mokėjimą kaip galiojantį, daugelis įmonių nori sulaukti tam tikro skaičiaus patvirtinimų. Kad apeitų šią sistemą, užpuolikas turi užtemdyti ir kasėjus, ir prekybininką. Kai užpuolikas pateikia užsakymą prekybininkui, jis ištransliuoja šį sandorį (užtemdytiems) kasėjams. Sandoris patvirtinamas ir įtraukiamas į blokų grandinę, tačiau ši blokų grandinė nėra ta grandinė, kurią stebi didžioji dalis tinklo, nes kasėjas yra atkirstas.
Tuomet užpuolikas perduoda šią blokų grandinės versiją prekybininkui, kuris išleidžia prekes manydamas, kad sandoris patvirtintas. Kai užtemdyti mazgai vėl prisijungia prie tikrojo tinklo, blokų grandinė, su kuria dirbo visas likęs tinklas, atmeta grandinę, kurią minėti mazgai klaidingai laikė galiojančia (tai turi tam tikrų panašumų su 51 % ataka).
Konkuruojančių kasėjų silpninimas
Užtemdytas mazgas ir toliau veiks nesuvokdamas, kad jis buvo atskirtas nuo tinklo. Kasėjai ir toliau kas blokus pagal protokole nustatytas taisykles, tačiau naujus blokus sinchronizuojant su sąžiningais lygiaverčiais mazgais šie blokai bus atmesti.
Didelio masto užtemdymo ataka prieš pagrindinius kasėjus teoriškai galėtų būti panaudota siekiant palengvinti 51 % ataką. Šiuo metu didžiosios dalies bitkoino maišos galios perėmimo kaina būtų tiesiog per didelė net išradingiausiems užpuolikams – esant ~80 TH/s, užpuolikui reikėtų daugiau nei 40 TH/s tokiam manevrui atlikti.
Pagal hipotetinį scenarijų, kai ši maišos galia paskirstoma tarp 10 šalių (taip, kad kiekvienai tektų po 8 TH/s), užpuolikas gali ženkliai sumažinti 51 % atakai būtinus reikalavimus atkirsdamas šias šalis nuo tinklo. Jei penkios iš šių šalių užtemdomos, iš kito bloko paieškos lenktynių pašalinami 40 TH/s, o užpuolikui užtenka įgyti jau tik šiek tiek daugiau nei 20 TH/s, kad perimtų kontrolę.
Kiti sabotažo būdai, kuriuos galima pasiekti užtemdant taikinius, yra manipuliavimas mazgais savanaudiško kasimo tikslais arba lenktynių tarp kasėjų ieškant kito bloko sufabrikavimas.
Apsaugos priemonės
Turėdamas pakankamai IP adresų užpuolikas gali užtemdyti bet kurį mazgą. Paprasčiausias būdas to išvengti – operatoriui blokuoti įeinančius prisijungimus, o išeinančius prisijungimus užmegzti tik su tam tikrais mazgais (pvz., tais, kuriuos kiti lygiaverčiai mazgai įtraukė į baltąjį sąrašą). Tačiau, kaip nurodyta minėtame tyrime, šis metodas neveikia dideliu mastu – jei visi dalyviai imsis šių priemonių, prie tinklo negalės prisijungti nauji mazgai.
Autoriai pasiūlė keletą bitkoino programinės įrangos patobulinimų – nuo šio tyrimo išleidimo kai kurie iš jų jau buvo integruoti. Tai nedideli kodo pakeitimai, pvz., atsitiktinė naujų prisijungimų atranka ir didesni adresų saugojimo pajėgumai, dėl kurių užtemdymo atakos tampa brangesnės.
Baigiamosios mintys
Užtemdymo atakos vykdomos lygiaverčių mazgų tinklo lygiu. Jei jos naudojamos kaip atskiros atakos, tai gali erzinti. Bet tikrasis jų veiksmingumas atsiskleidžia sustiprinant kitas atakas, kurios taikiniams pridaro finansinės žalos arba suteikia užpuolikui pranašumą kasyboje.
Realiame pasaulyje užtemdymo ataka dar nėra sukėlusi rimtų pasekmių, tačiau grėsmė vis dar egzistuoja, nors į tinklą ir yra integruotos apsaugos priemonės. Kaip ir daugumos atakų prieš bitkoiną ir kitas kriptovaliutas būdų atveju, stipriausia gynyba bus ta, dėl kurios piktavaliams rengti atakas bus finansiškai nenaudinga.