Scris pe

In termeni simpli: cum functioneaza un wallet crypto + blockchain-ul. Cum poti fi hackuit?

This post is also available in: English (Engleză)

Sunt pe diverse grupuri pe Facebook sau Telegram de crypto, unde inevitabil sunt si foarte multi incepatori sau utilizatori mai putini tehnici. De multe ori vad fraze de genul “mi-au fost transferate fondurile catre un alt wallet, dar nu inteleg cum ca aveam si autentificare cu pin si cu face ID”.

Hai sa va explic pe scurt si in termeni simpli despre cum functioneaza un wallet.

Important de stiut

Ca utilizator, intr-un wallet nu ai absolut nimic fizic. Nu exista Bitcoin sau Egold in wallet, chiar daca wallet-ul tie iti arata ca ai suma X disponibila.

Tot ceea ce tu ai se afla defapt pe blockchain, asignat unei anumite adrese.

Cum functioneaza un blockchain pe scurt

Blockchain-ul este un sir de date inlantuit. Atunci cand faci un wallet nou, primesti o noua adresa. De multe ori, daca nu faci nicio tranzactie (primesti sau trimiti ceva), adresa noua nu exista fizic in blockchain. In momentul in care exista o tranzactie catre adresa ta sau dinspre adresa ta, atunci apare prima inregistrare in blockchain legata de adresa wallet-ului tau.

Imagineaza-ti blockchain-ul ca un caiet mare, cu multe linii, in care un contabil scrie linie cu linie tot ce se intampla cu conturile clientilor. Singura cale ca sa vezi totalul fondurilor tale este sa treci prin acel caiet linie cu linie si sa scazi/aduni linia respectiva, la final avand un total curent al contului tau.

Acum… adresa ta este formata din 2 parti: partea publica (cheie publica) si partea privata (cheie privata).

Partea publica este stiuta de toata lumea, daca cineva vrea sa iti trimita fonduri adresa unde trimite aceste fonduri este partea publica din adresa ta. In registrul contabil imaginar, liniile care te reprezinta pe tine sunt doar cele care contin cheia ta publica.

Partea privata este stiuta doar de tine si trebuie tratata ca o parola foarte importanta. Daca vrei ca acest contabil imaginar pe care il avem sa noteze ceva in caiet (in blockchain), trebuie sa facem o cerere speciala in care mentionam printre altele: cui transferam monede, in ce cantitate, ce detalii de plata trecem si asa mai departe. Acum vine partea interesanta: o astfel de cerere catre blockchain fara o semnatura este inutila. Contabilul nu o va baga in seama.

Cum facem ca cererile noastre sa fie bagate in seama si duse la indeplinire? Semnam cererea noastra cu cheia/partea privata. Iti poti imagina un bilet pe care notezi toate detaliile tranzactiei si la final, in loc de semnatura cu numele tau, semnezi cu cele 24 (in functie de blockchain poate fi un numar diferit) de cuvinte. Contabilul (blockchain-ul) vede ca aceste cuvinte sunt cele reale, in ordinea potrivita si considera cererea ta valida si o scrie intr-o linie in caiet.

Din momentul in care contabilul a scris tranzactia ta in caiet, operatia nu se mai poate reversa. Deci, daca ai trimis bani la o adresa dar ai incurcat o cifra sau litera din adresa respectiva, operatia nu se mai poate opri/reversa.

Cum functioneaza un wallet

Un wallet nu face nimic special in afara ca iti faciliteaza comunicarea cu blockchain-ul.

De multe ori exista in spate niste mecanisme care tin starea actuala a contului tau de pe blockchain intr-un mod mai centralizat, pentru ca sa nu fie nevoie sa parcurgi mereu toate randurile “din caiet” ca sa vezi cate fonduri ai disponibile.

Wallet-ul se foloseste de aceste mecanisme ca sa intrebe practic “hey, cate monede detine Filip in acest moment, pornind de la prima tranzactie scrisa in caiet”.

Wallet-ul mai are o functie importanta: trebuie sa iti tina in siguranta cheia ta privata, adica acele cuvinte secrete. Doar asa tu ii vei putea cere wallet-ului sa trimiti unui prieten monede si el sa trimita mai departe catre blockchain/contabil cererea ta.

De multe ori, un wallet pastreaza acele cuvinte secrete intr-un loc sigur (de exemplu pe telefon intr-un cip sigur de unde informatiile pot fi luate doar daca te autentifici cu Face/Touch ID sau bagi un cod pin).

Faptul ca tu ai protejat aplicatia de wallet cu un cod pin, nu inseamna ca nimeni nu iti va putea umbla la fonduri. De ce? Pentru ca acele 24 de cuvinte secrete sunt tot ceea ce ai nevoie pentru ca sa inregistrezi tranzactii la contabil. Blockchain-ul/contabilul nu iti stie PIN-ul la telefon, la aplicatie sau nu iti imita fata ta sa poata trece peste Face ID, nu, contabilul stie doar sa verifice cuvintele secrete.

Din acest motiv exista niste wallet-uri numite “paper wallet”. Adica pur si simplu iti notezi cuvintele secrete pe o foaie de hartie si le pastrezi acolo in siguranta. Este metoda cea mai sigura, pentru ca foaia nu este conectata la internet, dar este si o metoda ineficienta, pentru ca daca nu esti user tehnic nu poti semna tu singur tranzactiile cu acele cuvinte.

Din acest motiv 99% dintre oameni folosesc o aplicatie de wallet, pentru ca acel wallet sa securizeze cuvintele secrete din semnatura si de usura munca.

Exemplu: eu in reteaua MultiversX folosesc wallet-ul xPortal. Acesta imi tine in siguranta cele 24 de cuvinte. Dar de exemplu pot avea in calculator cuvintele secrete si sa fac tranzactii si de pe calculator, folosind acelasi cont (cheia publica e aceeasi), deci pot trimite 1 EGLD de pe calculator folosing cuvintele secrete si cand voi deschide mai tarziu aplicatia xPortal voi vedea ca am cu 1 EGLD mai putin. Acest lucru demonstreaza ca nu exista nimic fizic intr-un wallet, orice tip de fonduri sau token-uri sunt pastrate exclusiv pe blockchain.

Cum se poate “hackui” un cont in aceste conditii?

Cel mai eficient mod de hacking in partea asta de crypto/blockchain este social hacking.

Ce inseamna social hacking? In cuvinte super simple: cineva te prosteste ca sa iti dezvlaui partea secreta, cele 24 de cuvinte.

Tot felul de site-uri dubioase care imita wallet-ul oficial, scam-uri de tipul “ai castigat 1000 de dolari, tot ce trebuie sa faci ca sa ii primesti este sa bagi aici cele 24 de cuvinte sa confirmi ca esti tu”.

Ca regula de aur cuvintele secrete nu trebuie bagate niciunde altundeva decat in wallet o singura data la inceput (daca le importi). De multe ori nici macar tu nu ar trebui sa le sti, doar sa le pastrezi intr-un loc sigur ca backup.

De fiecare data cand dai cuvintele tale secrete undeva iti dai accesul deplin si neconditionat asupra contului tau de pe wallet. Este ca si cum ai semna o foaie in alb pe care cineva mai tarziu o poate folosi cum vrea, completand o cerere catre contabil care va arata autentica si va fi procesata.

Un alt mod prin care cheia ta privata (cuvintele tale secrete) pot fi furate este ca le ti undeva pe internet. De exemplu ti-ai notat cuvintele secrete intr-un fisier pe desktop. Exista virusi care stiu sa extraga orice care seamana cu fraze secrete si iti citesc fisierul, iti fura fraza si aia a fost. Poate nici nu actioneaza imediat, asteapta sa ai mai multe fonduri in cont si apoi va actiona, pentru ca acele cuvinte secrete nu expira si sunt valabile pe viata.

Sau de exemplu ti-ai notat cuvintele secrete in Gmail, cu un mail trimis catre tine, dar ai o parola foarte simpla la Gmail si nu ai autentificare in 2 pasi. Cineva se logheaza in contul tau, scaneaza orice care seamana cu “private keys” si le stocheaza undeva pentru a fi folosite ulterior.

Din acest motiv, cel mai sigur loc de a tine cuvintele secrete este un spatiu care nu este conectat la internet si nu va fi conectat niciodata: un device fizic (Ledger, Trezor) sau cuvintele scrise pe o foaie (la care nu trebuie sa ii faci poza cu telefonul altfel ai scris degeaba cuvintele pe foaie, poza poate ajunge pe internet si ai fost compromis).

Imi pot compromite contul daca semnez tranzactii cu WalletConnect?

Raspunsul rapid: nu!

Raspunsul complet este putin mai lung si intram in zona DAPP (aplicatii descentralizate).

DAPP-urile “vorbesc” cu wallet-ul tau in mod constant. Atunci cand te contectezi la o aplicatie cu wallet-ul tau, de cele mai multe ori scanezi un cod QR, wallet-ul iti cere permisiunea sa se conecteze la aplicatia aceea. Atunci cand iti dai acordul, wallet-ul nu trimite nimic privat inapoi la aplicatie, tot ceea ce trimite sunt informatii publice, de exemplu partea publica a wallet-ului tau, adica adresa ta.

De exemplu aici la mine pe blog exista spatii unde poti cumpara “reclama”. Pentru asta, te conectezi prima data cu wallet-ul. Dupa ce exista o conexiune activa, aplicatia (DAPP-ul) va putea trimite catre wallet cereri de semnat. De exemplu, inchiriezi un spatiu de reclama pe blog-ul meu. Apesi un buton si blog-ul va trimite o cerere de semnat catre wallet: Blog-ul lui Filip vrea sa trimita suma X catre aceasta adresa cu detaliile de plata Y. Este decizia ta daca semnezi si trimiti mai departe acea tranzactie.

Cum am mai zis mai sus, wallet-ul nu trimite nimic privat catre aplicatie, dar poate trimite tranzactii semnate inapoi. Este putin mai complicat de inteles cum daca esti incepator sau non-tehnic, dar nu se trimit cele 24 de cuvinte spre aplicatie, ci tranzactia este “amestecata” cu semnatura ta (cu cuvintele secrete), astfel ca DAPP-ul va putea trimite mai departe tranzactia ta catre blockchain ca si cum ar veni direct de la tine.

Exemplu: daca inchiriezi un spatiu de reclama pe blog-ul meu, in blockchain nu va vedea nimeni ca tu ai folosit blog-ul meu ca sa inchiriezi spatiul ci va vedea direct o tranzactie trimisa de tine catre un smart contract. Nimeni nu stie cine te-a ajutat pe cine sa formezi aceasta tranzactie, dar arata autentica si semnata de catre tine.

Din acest motiv, eu in general nu am teama sa ma conectez la niciun DAPP online, pentru ca stiu ca nimic privat nu este trimis catre aceste aplicatii.

Dar este foarte important ca sa te uiti la ce tranzactii semnezi. Dupa ce esti conectat la o aplicatie, aceasta poate trimite orice spre wallet pentru a fi semnat. Wallet-ul este transparent cu tine si vei vedea ce ai de semnat inainte ca sa o faci. Daca tu semnezi “orbeste” tot ce ai de semnat, semnezi ca primarul cum s-ar zice, atunci este doar vina ta pentru orice pierdere. De exemplu, o aplicatie iti poate cere sa semnezi o tranzactie prin care trimiti toate fondurile pe care le ai in cont catre o alta adresa. Daca tu nu esti atent si apesi butonul de semnat in wallet… e doar vina ta si in blockchain se va vedea ca si cum tu de buna voie i-ai trimis la Gigi Hacker toate fondurile tale.

Concluzie: blockchain-ul responsabilizeaza

In acest spatiu tu esti responsabil pentru fondurile tale. Tu esti responsabil ca sa iti pastrezi cuvintele secrete in siguranta pentru ca doar tu sa poti trimite cereri catre blockchain/contabil.

Este aproape imposibil sa fie hack-uit un blockchain si cineva sa iti fure fonduri fara ca tu sa iti fi dat undeva cuvintele secrete sau sa le fi compromis undeva.

Nu conteaza cate straturi de siguranta ai la wallet-ul tau, daca cineva ti-a luat printr-o metoda cuvintele secrete (cu ajutorul tau, ca nimeni nu le poate lua fara ca tu sa le dezvalui) acesta va putea face tranzactii in numele tau fara sa aiba Face ID-ul tau sau Pin-ul tau de la wallet).

Nimic nu este reversibil pe blockchain, deci daca ti-ai compromis partea secreta, ai face bine sa iti muti fondurile in alt wallet inainte ca cineva sa ti le fure. Odata trimise fondurile catre o alta adresa pe blockchain, poti spune adio fondurilor tale.

Ai mare atentie la tranzactiile pe care le semnezi, nu semna ca primarul fara sa te uiti la ce semnezi, nu dezvalui niciunde cuvintele secrete si pastreaza-le undeva sigur, intr-un loc care nu este conectat la internet. Doar in acest mod te asiguri ca nu vei fi “hackuit” niciodata in crypto/blockchain.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Copyright © 2024 toate drepturile
nu sunt
rezervate. Faceti ce vreti, e o tara libera.
Cred ca nu mai are rost sa zic, dar tema e facuta de mine cu TailwindCSS. Gasesti codul sursa aici.
Inca folosesc WordpPess 🧡. Tema e insa custom Laravel 😎.