Pēcnāves zibens nomaiņas riteņbraukšanas uzbrukumā

By Bitcoin Žurnāls - pirms 6 mēnešiem - Lasīšanas laiks: 6 minūtes

Pēcnāves zibens nomaiņas riteņbraukšanas uzbrukumā

Tāpēc apkārt ir radīts liels troksnis Zibens ievainojamība nesen atklāja Antuāns Riards. Daudzi cilvēki apgalvo, ka debesis krīt, ka zibens ir fundamentāli salauzts, un nekas nevar būt tālāk no patiesības. Es domāju, ka daļa no problēmas ir tā, ka cilvēki īsti nesaprot, kā šī ievainojamība darbojas, pirmkārt, un, otrkārt, daudzi cilvēki nesaprot, kā šī individuālā ievainojamība pārklājas ar citām zināmām zibens tīkla problēmām, kurām ir zināmi risinājumi.

Tāpēc vispirms iesim cauri un mēģināsim saprast pašu ievainojamību. Kad Lightning maksājums tiek novirzīts tīklā, ir svarīgi saprast, kā darbojas laika bloķēšana neveiksmīga maksājuma atmaksai. Uztvērējam tuvākajam lēcienam ir laika bloķēšana “x”, un katram lēcienam, kas atgriežas pie sūtītāja, ir viens no “x+1”, “x+2” un tā tālāk. Laika bloķēšana kļūst arvien garāka, katru reizi virzoties no uztvērēja atpakaļ uz sūtītāju. Iemesls tam ir tāds, ka, ja maksājums sasniedz saņēmēju, bet kāda problēma neļauj priekšattēlam izplatīties līdz pat sūtītājam, lēcienam, kurā tas apstājās, ir laiks to ieviest ķēdē un ievietot priekšattēlu, lai visi iepriekšējiem apiņiem ir jāapstiprina maksājums. Citswise kāds pa vidu, kur notiek kļūme, var likt izejošajam apiņam pieprasīt līdzekļus ar priekšattēlu, bet aplis, kas to viņam pārsūtījis, pieprasīt to ar savu atmaksas ceļu, un atstāt šo personu pa vidu, ja viņam nav veiksmes. līdzekļus.

Replacement Cycling Attack ir sarežģīts veids, kā mēģināt sasniegt tieši šo nevēlamo rezultātu, mērķa mezglam zaudējot naudu, liekot izejošajam apiņam pieprasīt līdzekļus ar veiksmīgu darījumu, un ienākošajam apiņam pieprasīt līdzekļus, izmantojot atmaksas darījumu. Tas rada nepieciešamību apturēt cietušā mezgla darbību un neļaut viņiem redzēt veiksmīgā darījuma priekšattēlu vienā pusē, līdz beidzas laika bloķēšanas termiņš otrā pusē, lai viņi varētu pieprasīt atmaksu tur.

Tam nepieciešama ļoti mērķtiecīga un sarežģīta spēle, manipulējot ar upura mempool. Apskatīsim šeit iesaistīto faktisko darījumu struktūru. Jums ir saistību darījums, kas ir galvenais darījums, kas atspoguļo Lightning kanāla stāvokli. Tam ir izvade katrai kanāla pusei, kas atspoguļo līdzekļus, ko pilnībā kontrolē viens vai otrs dalībnieks, un izvadi katram HTLC maršrutēšanas procesā. Šie rezultāti ir tie, par kuriem mēs rūpējamies. Katru HTLC izvadi var iztērēt vai nu uzreiz jebkurā laikā ar priekšattēlu no uztvērēja, vai pēc tam, kad beidzas atmaksas laika bloķēšanas termiņš.

Uzbrukumam ir nepieciešams, lai ļaunprātīgai pusei vai divām sazvērestējām pusēm būtu kanāls abās upuru mezgla pusēs, kas novirza maksājumu. Tātad Bobam, upurim, ir kanāls ar Alisi un Kerolu, uzbrucējiem, un maksājums tiek novirzīts no Kerolas uz Bobu uz Alisi. Tagad atcerieties, ka laika bloķēšanas atmaksas ceļš starp Alisi un Bobu beigsies un kļūs spēkā pirms atmaksas starp Kerolu un Bobu.

Uzbrucēji novirza maksājumu caur Bobu, un pēc tam Alise atteiksies nosūtīt Bobam priekšattēlu, lai pabeigtu maksājumu, kad viņa to saņems. Bobs tagad darīs, gaidot, līdz beigsies laika bloķēšanas logs starp viņu un Alisi, un pāriet uz kanāla saistību darījumu un atmaksas darījumu pārraidi, lai saņemtu apstiprinājumu pirms laika bloķēšanas loga beigām. Pēc tam Alise iztērēs priekšattēla darījumu, lai pieprasītu līdzekļus ar izvadi, kas nav saistīta ar kanālu, un tūlīt pēc tam divreiz iztērēs otro ievadi priekšattēla veiksmes darījumā. Mērķis ir izlikt Boba noildzes darījumu no mempool, kā arī izlikt priekšattēla veiksmīgo darījumu, lai Bobs to neredzētu. Ja viņš to izdarīs, viņš uzzinās priekšattēlu un var vienkārši pieprasīt līdzekļus savā kanālā kopā ar Kerolu, pirms viņas noildzes darījums ir derīgs tērēšanai.

Alisei un Kerolai tas ir jādara konsekventi, ikreiz, kad Bobs atkārtoti pārraida savu taimauta darījumu ar Alisi, līdz bloka augstums pāriet, kur ir derīgs Kerola taimauta darījums. Pēc tam viņi var iesniegt veiksmīgo darījumu Alises pusē un taimauta darījumu no Kerola puses, un atstāt Bobu turam somu, jo viņš ir zaudējis viņa virzītā maksājuma vērtību.

Problēma ar to ir divējāda. Pirmkārt, upura Bitcoin Pamatmezglam ir jābūt īpaši mērķētam, lai nodrošinātu, ka priekšattēla veiksmīgais darījums nekādā gadījumā netiek izplatīts viņu atmiņā, kur viņu zibens mezgls var iegūt priekšattēlu. Otrkārt, ja tiek apstiprināts otrais darījums, ko Alise izmanto, lai izliktu priekšattēla darījumu, Alisei rodas izmaksas (atcerieties, ideja ir aizstāt taimauta darījumu ar priekšattēlu, lai tas tiktu izlikts no atmiņas, pēc tam aizstājiet priekšattēla darījumu ar otrais, divreiz iztērējot papildu ievadi priekšattēla darījumā). Tas nozīmē, ka katru reizi, kad Bobs atkārtoti pārraida savu taimauta darījumu, Alisei ir jāmaksā lielāka maksa, lai to atkārtoti izliktu, un, kad tas tiek apstiprināts, viņai faktiski rodas izmaksas.

Tātad Bobs var piespiest Alisi segt lielas izmaksas, vienkārši regulāri atkārtoti pārraidot savu taimauta darījumu ar augstāku maksu, kas nozīmē, ja maksājuma HTLC izvade nav ievērojami lielāka par Alises izmaksām, uzbrukums nav ekonomiski izdevīgs. . Tāpat būtu iespējams pilnībā novērst uzbrukumu, mainot HTLC panākumu un taimauta darījumu konstruēšanu. Izmantojot karogu SIGHASH_ALL, kas nozīmē, ka paraksts attiecas uz visu darījumu un kļūst nederīgs, ja tiek mainīta vismazākā detaļa (piemēram, pievienojot jaunu ievadi šim uzbrukumam nepieciešamajā priekšattēla darījumā). Tas nedarbosies ar pašreizējo Lightning kanālu versiju enkura izejas, bet tas atrisinātu problēmu pilnībā. Pīters Tods ir arī ierosinājis a jauna vienprātības funkcija kas pilnībā atrisinātu problēmu, būtībā apgriezto laika bloķēšanu, kurā darījums kļūtu nederīgs pēc noteiktu laiku vai bloka augstumu, nevis kļūst spēkā pēc. Tomēr, manuprāt, nav nepieciešams iet tik tālu.

Regulāra darījuma atkārtota pārraidīšana ar nelielu maksas samazināšanos ir milzīgs uzbrukuma mazinājums, taču ir arī daudz dinamikas, kas padara to par nopietnu problēmu. Pirmkārt, ja jūs neesat maršrutēšanas mezgls, tā nav īsti nopietna problēma. Tātad lielākā daļa lietotāju ir pasargāti no šī uzbrukuma. Otrkārt, ir daudz iemeslu, kāpēc mezgli neļauj nevienai nejaušai personai atvērt tiem kanālus. Lielie mezgli ļoti selektīvi nosaka, ar ko viņi sadarbojas, jo nejaušiem kanāliem, kas netiek pārvaldīti efektīvi vai profesionāli, ir izmaksas, kas izpaužas kā nogrimušais vai izšķērdētais kapitāls neizmantotajos kanālos. Tātad jebkurš liels mezgls, kas būtu šī uzbrukuma sulīgs mērķis, nav mazsvarīgs, lai ar to pat izveidotu savienojumu, nemaz nerunājot par savienojumu ar tiem, izmantojot vairākus kanālus, lai sāktu uzbrukumu. Visbeidzot, kā Esmu par to rakstījis agrāk, citiem iespējamiem nesaistītiem uzbrukumiem tīklā jau ir nepieciešami filtri un ierobežojumi, kā mezgli izvēlas apstrādāt HTLC, ko tie varētu pārsūtīt. T.i. ierobežojumi pārsūtāmo maksājumu apjomam, atļauto maksājumu skaitam jebkurā laikā utt. Tātad, pat ja varat atvērt kanālu ar mezglu, kuram ir vērts uzbrukt, tīklam attīstoties, tiks pārdomāti kritēriji un filtri izlemjot, vai vispār pārsūtīt maksājumu.

Kopumā šī ir leģitīma problēma un iespējams uzbrukums, taču tā nav neatrisināma problēma gan attiecībā uz tiešu seku mazināšanu, gan to, kā uzbrukums ilgtermiņā mijiedarbosies ar citu problēmu risinājumiem. Tā ir likumīga problēma, un tā noraidīšana kā tikai FUD nav precīza reakcija, taču apgalvojums, ka debesis krīt un zibens tīkls kā protokols ir lemts, ir daudz pārspīlēts.

Laiks ies uz priekšu, mēs saskarsimies ar problēmām, un mēs tās atrisināsim, tiklīdz tās radīsies. Kā mums vienmēr. 

Oriģināls avots: Bitcoin žurnāls