Înainte să explicăm ce este protecția împotriva atacurilor replay, trebuie să pricepem ce sunt atacurile replay.

În caz că are loc o bifurcație fermă fără protecție replay, tranzacțiile care s-au făcut ÎNAINTE de bifurcație sunt valabile pe ambele blockchainuri. Adică, dacă Ana îi trimite lui Bogdan un bitcoin pe blockchainul X, aceeași tranzacție va fi validă și pe blockchainul Y.

Atacurile replay – Să zicem că Ana vrea să îi trimită lui Bogdan un Xcoin și un Ycoin (după bifurcație). În cazul ăsta, emite tranzacțiile pe cele două blockchainuri, fără nici un pericol. Dacă însă vrea să îi trimită lui Bogdan doar 1 Xcoin, nu și un Ycoin, atunci pot apărea probleme. Ana va transmite desigur tranzacția pe blockchainul X. Tranzacția este însă acum publică, iar asta înseamnă că ea este acum vulnerabilă la atac.

Un atacator poate să preia tranzacția publică și să trimită un Xcoin de la Ana la Bogdan de pe blockchainul X și să o replice și pe blockchainul Y. Asta înseamnă că Bogdan va primi, pe lângă Xcoinul pe care Ana intenționa să i-l trimită, și un Ycoin. Acesta este atacul replay, care poate să cauzeze multe tranzacții neintenționate, neautorizate de utilizatorul de drept.

Protecția replay este un termen general pentru felul în care poți să previi un atac de acest fel. Sunt deci scheme prin care te asiguri că tranzacțiile de pe lanțul X sunt valide doar pe lanțul X nu și pe lanțul Y.

Protecția puternică pe două benzi și protecția opțională

Protecția puternică pe două benzi (strong 2-way replay protection) înseamnă că tranzacțiile de pe lanțul X nu sunt niciodată valabile pe lanțul Y după bifurcația fermă. Toate tranzacțiile au un marker, iar acesta arată foarte clar de ce lanț îi aparține fiecare.

Bitcoin cash a rezolvat problema marcând semnăturile, de care este nevoie la fiecare tranzacție. Asta face toate tranzacțiile pe lanțul bitcoin cash invalide pe lanțul bitcoin și invers. Se numește protecție replay strong pentru că nu există nici o variantă prin care cineva să se expună în mod accidental la atacuri replay. Este ca și când ai încuia ușa, iar tranzacția de pe lanțul X nu mai poate să evadeze și să ajungă pe lanțul Y.

Protecția opțională pentru atacurile replay presupune că tranzacțiile de pe lanțul X trebuie să facă o operațiune suplimentară pentru a se asigura că sunt invalide pe lanțul Y. Tranzacțiile sunt vulnerabile la atacurile replay. Dacă însă faci tranzacția într-un anumit fel, aceasta nu va fi validă și pe lanțul Y. Protecția opțională este ca o ușă pe care trebuie să nu uiți să o încui, pentru că altfel tranzacția poate să scape și să ajungă pe lanțul Y.

cum schimb bitcoin în lei btcxchange

Ce au făcut dezvoltatorii Segwit2x

Dezvoltatorii Segwit2x au căzut de acord asupra unei scheme de protecție pentru atacurile replay opțională, foarte controversată pe /reddit.

Când Ana îi trimite monede pe lanțul principal lui Bogdan, trebuie să trimită o sumă mică (numită și tranzacție praf) și către 3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi, pentru ca tranzacția să fie invalidă pe cel de-al doilea lanț. Unele portofele îți permit să emiți tranzacții cu suma zero, dar nu toate.  Această adresă a fost aleasă pentru că este relativ ușor de observat (începe cu 3Bit) și este ușor de cheltuit, deoarece cheia privată este arhi-cunoscută.

Scriptul pentru a scoate aceste tranzacții foarte mici din adresă este 04148f33be. Acesta rulează și îți dă un răspuns de „semnătură validă”. Asta înseamnă că acei satoshi trimiși în adresă pot să fie cheltuiți de oricine. Trebuie doar să dai scriptul de mai sus. Nimeni nu o să fie însă motivat să scoată satoshi din adresă, pentru că tranzacțiile sunt foarte mici. Comisionul de tranzacționare ar depăși câștigul. Cel mai probabil, de fiecare dată când rețeaua este liberă (adică de obicei în weekend) minerii vor veni să adune tranzacțiile dust.

Mai există și alte scheme de protecție opțională care se iau în considerare, cum ar fi să se pună un string în OP_RETURN, care să creeze o valoare nSequence sau să ignore tranzacțiile cu anumite versiuni de biți. Asta este o variantă care încă se mai poate implementa.

Schema a fost aleasă cel mai probabil pentru că este ușor de pus în aplicare. Chiar și de utilizatorii care nu știu că a avut loc o bifurcație fermă pot să continue să folosească bitcoinul ca de obicei.

Atenție ! Nu trebuie să începeți de pe acum să trimiteți fise la adresă. Această protecție pentru atacurile replay se activează doar după bifurcație. Așadar, nu are rost să trimiteți sume mici către adresă deocamdată. Strategia este importantă începând cu 18 noiembrie, când are loc bifurcația. Atunci va fi minat blocul cu numărul 494 784. La GoanaDupăBitcoin vom anunța evenimentul.

În acel moment, dacă trimiteți o tranzacție care include o sumă mică spre adresa de mai sus pe blockchainul tradițional, tranzacția nu se va replica și pe cel de-al doilea lanț.

De ce nu a adăugat Segwit2x protecție puternică, la fel ca bitcoin cash

Dezvoltatorii Segwit2x cred că după bifurcație, lanțul lor va fi cel majoritar. Așadar, vor ca toate portofelele utilizate astăzi să fie compatibile cu 2x fără să aibă nevoie de upgrade. Așadar, portofelele și serviciile nu vor trebui să își facă upgrade la partea de software, dacă se adaugă protecție replay opțională. Ideea este că protecția puternică ar cauza o disensiune mai mare în ecosistem.

Pe 1 august, când s-a bifurcat bitcoin cash, aproape că nu existau portofele care să susțină BCH. Situația era cauzată în special de schema de protecție replay puternică. Dezvoltatorii nu avuseseră timp să scrie cod și să facă modificările necesare pentru ca tranzacțiile să fie valide pe BCH. Se pare că Segwit2x încearcă să evite această problemă. Implementând protecția opțională, fac tranzacțiile să funcționeze cu toate portofelele bitcoin existente, cu comercianții și cu operatorii de servicii.

Ce ar însemna pentru Core să implementeze protecție replay strong?

Din păcate, orice protecție replay puternică are nevoie de o bifurcație fermă. Mulți dintre dezvoltatorii core consideră că pentru bifurcațiile ferme, este nevoie de mult timp de pregătire și de consens în rândul comunității. Acesta este un aspect important din dezbaterea upgrade-ului 2x. Așadar, o schemă de protecție puternică este puțin probabilă în viitor.

Ce ai de făcut înainte de bifurcație pentru a bifurca fisele?

Trebuie să îți muți fisele pe care le ai până acum către adrese noi. Fiecare dintre tranzacții trebuie să trimită o sumă mică spre  3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi. Dacă nu vă interesează prea mult anonimitatea, atunci puteți să faceți o tranzacție mare care să trimită toate fisele către o altă adresă sau către mai multe adrese. Important este să vă asigurați că trimiteți o sumă mică și către 3Bit1xA4apyzgmFNT2k8Pvnd6zb6TnwcTi.

După aceea, puteți să vă trimiteți monedele 2x către adrese diferite, iar acesta va fi portofelul 2x.

Concluzii

Bifurcațiile ferme au tot felul de probleme pe care comunitatea bitcoin nu le-a avut în trecut. Atacurile replay se numără printre ele. Ca întotdeauna, mare atenție când faceți tranzacții bitcoin și informați-vă în legătură cu bifurcațiile hard înainte să trimiteți bitcoini undeva.