Atacul ciclului de înlocuire în rețeaua Lightning

Bitcoin Lightning Network este o soluție de scalare de nivel 2 pentru Bitcoin, menită să abordeze provocările de scalabilitate ale blockchain-ului Bitcoin. Permite tranzacții cu Bitcoin instantanee și cu costuri reduse, făcându-l mai eficient și mai accesibil pentru utilizatori. În comparație cu tranzacțiile în lanț pe Bitcoin, tranzacțiile pe rețeaua Lightning sunt private, apar în afara lanțului și doar rezultatul general este înregistrat.

Unul dintre principalele avantaje ale rețelei Lightning este viteza și accesibilitatea. Permite utilizatorilor să trimită și să primească plăți mici prin rețeaua Bitcoin simplu și rentabil. Prin crearea unei rețele de canale de plată între utilizatori, Lightning Network permite tranzacțiile fără a difuza fiecare tranzacție către blockchain. Acest lucru reduce congestionarea blockchain-ului Bitcoin și îmbunătățește scalabilitatea tranzacțiilor.

Cu toate acestea, trebuie remarcat faptul că Lightning Network este încă în dezvoltare și se confruntă cu anumite riscuri de securitate și riscuri de centralizare. În luna octombrie a acestui an, o vulnerabilitate numită „atac cu ciclu de înlocuire” a fost descoperită recent în Lightning Network, care implică mecanismul de înlocuire a tranzacțiilor și poate duce la pierderea fondurilor canalului în Lightning Network. Apariția acestei metode de atac a stârnit îngrijorări cu privire la securitatea rețelei Lightning și a determinat cercetări suplimentare și îmbunătățiri ale protocoalelor și implementărilor sale.

Mecanismul de rețea fulger

Bitcoin Lightning Network folosește mecanismul Multisig pentru a asigura securitatea canalelor de plată. Participanții trebuie să blocheze fonduri și să stabilească canale de plată. Participanții pot efectua plăți rapide și cu costuri reduse în cadrul canalului, fără a fi nevoiți să trimită tranzacțiile la blockchain-ul Bitcoin de fiecare dată. Canalul de plată este doar o relație între participanții din afara blockchain-ului Bitcoin, care se realizează prin semnarea unei serii de tranzacții în cadrul canalului care se propagă doar între cele două capete ale canalului fără a implica consensul întregii rețele Bitcoin.

În ceea ce privește procesul specific, atunci când deschid un canal de plată, participanții trebuie să creeze un script cu semnături multiple care solicită fiecărei părți de pe canal să-și furnizeze cheia publică, specificând în același timp numărul necesar de semnături, de exemplu, definirea unui script care conține mai multe chei publice și logică de verificare a semnăturii. La generarea adresei cu semnături multiple, acest script va fi convertit într-o adresă Bitcoin, formând infrastructura canalului de plată.

De exemplu, așa cum se arată în Figura 1, Bob și Alice creează mai întâi o adresă Bitcoin cu 2 din 2 semnături multiple în lanț ca fond comun. În cadrul canalului, aceștia pot efectua tranzacții nelimitate de angajament în afara lanțului pentru a înregistra starea actuală a alocării fondurilor. Cele două părți pot negocia și semna noi tranzacții de angajament pentru a actualiza starea canalului, fără a difuza aceste actualizări către întreaga rețea Bitcoin. Atunci când decid să închidă canalul, tranzacția finală de decontare în lanț va distribui fondurile conform ultimei alocări negociate. Această tranzacție de decontare necesită semnăturile comune atât ale lui Bob, cât și ale lui Alice, asigurându-se că fondurile sunt alocate în modul convenit în final. În acest fel, Lightning Network îmbunătățește eficiența tranzacțiilor Bitcoin și reduce costurile, păstrând în același timp caracteristicile sale descentralizate.

Figura 1: Diagrama canalului de stat               Sursa:https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

Mecanismul HTLC

Rețeaua Bitcoin Lightning adoptă, de asemenea, canale de plată bazate pe Hashed Timelock Contracts (HTLC) pentru a implementa un sistem de canale de plată rutabil, multi-hop. În implementare, HTLC necesită un script de tranzacție complex definit într-un limbaj de scripting pentru a îndeplini condiția hash și condiția de blocare a timpului. Acest script va fi folosit pentru inițializare la deschiderea canalului de plată și va fi declanșat în timpul plății. În acest fel, Bitcoin Lightning Network atinge eficiență și securitate pentru plățile încrucișate.

HTLC (Hashed Timelock Contract) este un Hashed Timelock Contract, care este una dintre componentele importante pentru implementarea tranzacțiilor cross-chain pe blockchain. HTLC are două aplicații comune: schimburi atomice încrucișate și canale de plată în Lightning Network. HTLC poate bloca un transfer și poate stabili condiții de deblocare, cum ar fi furnizarea de informații specifice într-un interval de timp specificat. Acest lucru asigură că fondurile pot fi retrase de către destinatar numai atunci când sunt îndeplinite condițiile.

Din punct de vedere tehnic, un HTLC este o ieșire suplimentară într-o tranzacție de angajament cu un script de ieșire unic. Acesta este un script Script care conține operațiuni precum OP_HASH160, OP_EQUALVERIFY etc., utilizate pentru a bloca fonduri, astfel încât doar furnizarea valorii preimagine R să le poată debloca. Acest script are două căi posibile. Prima cale (definită în OP IF) trimite fonduri către Bob dacă Bob poate furniza R. A doua cale este de a aplica un timelock folosind nLockTime în tranzacția de plată, permițând rambursări înapoi către Alice după expirarea blocării.

OP_IF

OP_HASH160 OP_EQUALVERIFY 

2 OP_CHECKMULTISIG

OP_ELSE

2 OP_CHECKMULTISIG

OP_ENDIF

Exemplu de rutare

În Lightning Network, Alice vrea să plătească 1 bitcoin lui Eric, dar nu există un canal de plată direct între Alice și Eric. Așadar, Alice direcționează plata prin noduri intermediare din rețeaua de canale de plată (Bob, Carol, Diana) pentru a construi o cale de plată sigură, permițându-i să plătească indirect 1 bitcoin lui Eric. Rutarea plăților folosește HTLC – doar prin furnizarea „secretului” corect într-o anumită fereastră de timp, fondurile pot fi deblocate, asigurând securitatea plății. 

În acest exemplu, în Pasul 1, Eric generează un secret R (soluție) și calculează valoarea hash H (puzzle), apoi îi dă lui Alice valoarea hash.

Pașii 2-5: Alice, Bob, Carol, Diana și Eric construiesc fiecare HTLC-uri în perechi, necesitând furnizarea de R (soluție) într-o anumită perioadă de timp pentru a recupera fondurile blocate de la partea din amonte.

Pașii 6-9: Eric îi oferă R (soluție) Dianei pentru a prelua 1 BTC. Diana preia apoi BTC-ul de la Carol cu ​​R și R este transmis înapoi astfel până când 1.003 BTC a lui Alice (din care 0.003 BTC este taxa de serviciu pentru nodurile intermediare) este preluat.

În acest exemplu, dacă în Pasul 6 Eric nu a furnizat R (soluția) în timpul fixat, după expirarea timpului, fondurile blocate în Pașii 2-5 se vor debloca direct și se vor întoarce.

Figura 2: Sursa exemplu de rutare: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

Atacul de înlocuire pentru ciclism

Mecanismul de înlocuire a tranzacțiilor Bitcoin se referă la momentul în care o tranzacție este marcată ca înlocuibilă, atunci o tranzacție poate fi înlocuită cu o altă tranzacție în rețea cu o taxă mai mare înainte de a fi confirmată într-un bloc. Dacă o tranzacție este plătită cu o taxă absolută mai mare și cu o rată a comisionului mai mare, aceasta poate înlocui tranzacțiile neconfirmate în așteptare care sunt în conflict direct cu aceasta. După primirea tranzacției de înlocuire, nodurile vor elimina tranzacția inițială cu taxa mai mică din mempool și vor păstra doar tranzacția de înlocuire. Mecanismul de înlocuire a tranzacției permite ajustarea taxelor de tranzacție sau a altor parametri înainte ca tranzacția să fie confirmată. Dar acest mecanism poate fi folosit și pentru a implementa atacuri de refuzare a serviciului tranzacției, cum ar fi înlocuirea în mod repetat a unei tranzacții critice, determinând eșuarea confirmării. Prin urmare, mecanismul de înlocuire a tranzacțiilor oferă confort pentru ajustarea tranzacțiilor, dar introduce și riscuri de abuz.

Potrivit e-mailului dezvoltatorului Bitcoin Core, Antoine Riard, atacul ciclului de înlocuire implică în principal canale de plată din Bitcoin Lightning Network. Atacatorul difuzează o tranzacție HTLC-preimagine cu o taxă absolută și o rată a taxei mai mari pentru a înlocui tranzacția HTLC-timeout a nodului onest. În timpul înlocuirii, atacatorul poate adăuga intrări sau ieșiri suplimentare pentru a se asigura că tranzacția de înlocuire este acceptată cu succes de rețea. Această metodă de atac poate duce la dublarea cheltuielilor de fonduri în canalele de plată, adică după ce nodul cinstit transmite tranzacția HTLC-timeout, atacatorul recuperează cu succes fondurile prin înlocuire. Putem oferi un exemplu simplu pentru a ilustra, similar cu exemplul anterior, presupunând că calea este simplificată doar la Alice, Bob și Eric, iar Alice și Eric se complică pentru a fura BTC-ul lui Bob.

Pasul 1: Alice intenționează să plătească 1 BTC lui Eric prin Bob. Alice\Bob și Bob\Eric construiesc fiecare un HTLC. Eric trebuie să îi furnizeze R (soluția) lui Bob înainte de blocul 1020 (presupunem că înălțimea curentă este 1000), altfel Bob poate prelua 1 BTC blocat; în mod similar, Bob trebuie să răspundă lui Alice înainte de blocul 1080, altfel Alice își poate recupera 1 BTC.

Pasul 2: Eric nu i-a oferit R (soluția) lui Bob înainte de blocul 1020. Bob va difuza o tranzacție care conține HTLC-timeout. Fondurile din această tranzacție vor fi rambursate lui Bob.

Pasul 3: Eric monitorizează tranzacția HTLC-timeout a lui Bob și o înlocuiește cu o tranzacție HTLC-preimage cu o taxă mai mare. Apoi Eric inițiază o altă tranzacție pentru a elimina preimaginea anterioară HTLC din mempool.

Pasul 4: nodul lui Bob va retransmite tranzacția HTLC-timeout până la blocul 1080. Eric poate iniția înlocuirea de fiecare dată. Până la blocul 1080, tranzacția celuilalt canal parte Alice este confirmată, iar Alice preia BTC-ul blocat.

Pasul 5: Eric primește confirmarea preimaginei HTLC, astfel încât 1 BTC blocat de Bob este transferat lui Eric.

Astfel, 1 BTC al lui Bob a fost transferat lui Eric, în timp ce el nu a primit nici BTC-ul datorat de la Alice.

Rezumat

În noiembrie 2023, rețeaua Lightning are peste 16,000 de noduri Lightning și 5,000 BTC. Deși cazurile reale de atac în ciclul de înlocuire nu au fost confirmate, evidențiază necesitatea cercetării și îmbunătățirilor continue de securitate pentru Lightning Network. Antoine Riard a sugerat, de asemenea, mai multe măsuri pentru a evita sau atenua atacurile ciclului de înlocuire, cum ar fi monitorizarea mempool-ului local și a tranzacțiilor transmise, construirea de rețele de suprapunere între mineri și nodurile Lightning și reluarea activă a tranzacțiilor de timeout HTLC pentru a crește costurile atacatorilor. Dar, în același timp, el a anunțat oprirea participării la Lightning Network și a activității sale de implementare, inclusiv coordonarea soluțiilor pentru vulnerabilitățile de securitate la nivel de protocol.

Pe măsură ce rețeaua Lightning crește, potențiala amenințare a atacurilor ciclului de înlocuire poate deveni un obstacol în calea sa de dezvoltare, forțând comunitatea să se concentreze mai mult pe cercetarea și îmbunătățirea securității. Cu toate acestea, tocmai prin abordarea serioasă și îmbunătățirea problemelor de securitate putem asista că Lightning Network rezolvă treptat riscurile potențiale în viitor, realizând un ecosistem mai sănătos și mai fiabil.

Despre CoinEx

Fondată în 2017, CoinEx este o bursă globală de criptomonede care se angajează să faciliteze tranzacționarea. Platforma oferă o gamă largă de servicii, inclusiv tranzacționare la vedere și în marjă, contracte futures, swap, crearea de piață automată (AMM) și servicii de management financiar pentru peste 5 milioane de utilizatori din peste 200 de țări și regiuni. De la înființare, CoinEx a aderat cu fermitate la principiul serviciului „în primul rând utilizatorul”. Cu intenția sinceră de a crea un mediu de tranzacționare cripto echitabil, respectuos și sigur, CoinEx le permite utilizatorilor să acceseze fără efort lumea criptomonedei, oferind produse și servicii ușor de utilizat.

Referinte

https://cypherpunks-core.github.io/bitcoinbook/

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html

https://lightning.network/lightning-network-paper.pdf

https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf

Declinare de responsabilitate: Aceasta este o postare plătită și nu trebuie tratată ca știre / sfat.  

Sursa: https://ambcrypto.com/replacement-cycle-attack-in-the-lightning-network/