Ce este hashingul?
Acas─â
Articole
Ce este hashingul?

Ce este hashingul?

Avansat
Publicat Jul 29, 2019Actualizat Jan 31, 2023
7m

Hashingul se refer─â la procesul de generare a unei ie╚Öiri de dimensiune fix─â dintr-o intrare de dimensiune variabil─â. Acest lucru se realizeaz─â prin utilizarea formulelor matematice cunoscute sub numele de func╚Ťii hash (implementate ca algoritmi de hashing).┬á

De╚Öi nu toate func╚Ťiile hash implic─â utilizarea criptografiei, a╚Öa-numitele func╚Ťii hash criptografice stau la baza criptomonedelor. Datorit─â acestora, blockchainurile ╚Öi alte sisteme distribuite sunt capabile s─â ating─â niveluri semnificative de integritate ╚Öi securitate a datelor.

At├ót func╚Ťiile hash conven╚Ťionale, c├ót ╚Öi cele criptografice sunt deterministe. Faptul c─â sunt deterministe ├«nseamn─â c─â at├ót timp c├ót intrarea nu se modific─â, algoritmul de hashing va produce ├«ntotdeauna aceea╚Öi ie╚Öire (cunoscut─â ╚Öi sub numele de digest sau hash).

De obicei, algoritmii de hashing ai criptomonedelor sunt concepu╚Ťi ca func╚Ťii unidirec╚Ťionale, ceea ce ├«nseamn─â c─â nu pot fi inversa╚Ťi cu u╚Öurin╚Ť─â f─âr─â cantit─â╚Ťi mari de timp ╚Öi resurse de calcul. Cu alte cuvinte, este destul de u╚Öor s─â creezi ie╚Öirea din intrare, dar relativ dificil s─â mergi ├«n direc╚Ťia opus─â (pentru a genera intrarea numai din ie╚Öire). ├Än general, cu c├ót este mai dificil s─â g─âse╚Öti intrarea, cu at├ót algoritmul de hashing este considerat a fi mai sigur.


Cum func╚Ťioneaz─â o func╚Ťie hash?

Func╚Ťiile hash diferite vor produce ie╚Öiri de dimensiuni diferite, dar dimensiunile posibile de ie╚Öire pentru fiecare algoritm de hash sunt ├«ntotdeauna constante. De exemplu, algoritmul SHA-256 poate produce numai ie╚Öiri de 256 de bi╚Ťi, ├«n timp ce SHA-1 va genera ├«ntotdeauna un digest de 160 de bi╚Ťi.

Pentru a ilustra, s─â rul─âm cuvintele ÔÇ×BinanceÔÇŁ ╚Öi ÔÇ×binanceÔÇŁ prin algoritmul de hashing SHA-256 (cel folosit ├«n Bitcoin).

SHA-256

Intrare

Ie╚Öire (256 bi╚Ťi)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

Binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Re╚Ťine╚Ťi c─â o modificare minor─â (scrierea cu majuscul─â a primei litere) a dus la o valoare hash total diferit─â. Dar, deoarece folosim SHA-256, ie╚Öirile vor avea ├«ntotdeauna o dimensiune fix─â de 256 de bi╚Ťi (sau 64 de caractere) - indiferent de dimensiunea intr─ârii. De asemenea, nu conteaz─â de c├óte ori rul─âm cele dou─â cuvinte prin algoritm, cele dou─â ie╚Öiri vor r─âm├óne constante.

În schimb, dacă rulăm aceleași intrări prin algoritmul de hashing SHA-1, vom avea următoarele rezultate:

SHA-1

Intrare

Ie╚Öire (160 de bi╚Ťi)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

Binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Acronimul SHA ├«nseamn─â Secure Hash Algorithms. Se refer─â la un set de func╚Ťii hash criptografice care includ algoritmii SHA-0 ╚Öi SHA-1 ├«mpreun─â cu grupurile SHA-2 ╚Öi SHA-3. SHA-256 face parte din grupul SHA-2, ├«mpreun─â cu SHA-512 ╚Öi alte variante. ├Än prezent, doar grupurile SHA-2 ╚Öi SHA-3 sunt considerate sigure.


De ce conteaz─â acestea?

Func╚Ťiile hash conven╚Ťionale au o gam─â larg─â de cazuri de utilizare, inclusiv c─âut─âri ├«n baze de date, analize de fi╚Öiere mari ╚Öi gestionarea datelor. Pe de alt─â parte, func╚Ťiile hash criptografice sunt utilizate pe scar─â larg─â ├«n aplica╚Ťiile de securitate a informa╚Ťiilor, cum ar fi autentificarea mesajelor ╚Öi amprentele digitale. C├ónd vine vorba de Bitcoin, func╚Ťiile hash criptografice sunt o parte esen╚Ťial─â a procesului de minerit ╚Öi joac─â, de asemenea, un rol ├«n generarea de noi adrese ╚Öi chei.

Adev─ârata putere a hashingului vine atunci c├ónd ave╚Ťi de-a face cu cantit─â╚Ťi enorme de informa╚Ťii. De exemplu, se poate rula un fi╚Öier mare sau un set de date printr-o func╚Ťie hash ╚Öi apoi se poate folosi rezultatul acestuia pentru a verifica rapid acurate╚Ťea ╚Öi integritatea datelor. Acest lucru este posibil datorit─â naturii deterministe a func╚Ťiilor hash: intrarea va avea ├«ntotdeauna ca rezultat o ie╚Öire simplificat─â, condensat─â (hash). O astfel de tehnic─â elimin─â nevoia de a stoca ╚Öi ÔÇ×re╚ŤineÔÇŁ cantit─â╚Ťi mari de date.

Hashingul este deosebit de util ├«n contextul tehnologiei blockchain. Blockchainul Bitcoin are mai multe opera╚Ťiuni care implic─â hashing, majoritatea ├«n cadrul procesului de minerit. De fapt, aproape toate protocoalele de criptomonede se bazeaz─â pe hashing pentru a conecta ╚Öi a condensa grupuri de tranzac╚Ťii ├«n blocuri ╚Öi, de asemenea, pentru a produce linkuri criptografice ├«ntre toate blocurile, cre├ónd efectiv un blockchain.


Func╚Ťii hash criptografice

Din nou, o func╚Ťie hash care implementeaz─â tehnici criptografice poate fi definit─â ca o func╚Ťie hash criptografic─â. ├Än general, ├«ntreruperea unei func╚Ťii hash criptografice necesit─â o multitudine de ├«ncerc─âri de for╚Ť─â brut─â. Pentru ca o persoan─â s─â ÔÇ×inversezeÔÇŁ o func╚Ťie hash criptografic─â, ar trebui s─â ghiceasc─â care a fost intrarea prin ├«ncercare ╚Öi eroare, p├ón─â c├ónd este produs rezultatul corespunz─âtor. Cu toate acestea, exist─â ╚Öi posibilitatea ca intr─âri diferite s─â produc─â exact aceea╚Öi ie╚Öire, caz ├«n care are loc o ÔÇ×coliziuneÔÇŁ.

Din punct de vedere tehnic, o func╚Ťie hash criptografic─â trebuie s─â urmeze trei propriet─â╚Ťi pentru a fi considerat─â cu adev─ârat sigur─â. Le putem descrie ca rezisten╚Ť─â la coliziune, rezisten╚Ť─â la preimagine ╚Öi rezisten╚Ť─â la a doua preimagine.

├Änainte de a discuta fiecare proprietate, s─â rezum─âm logica lor ├«n trei propozi╚Ťii scurte.

  • Rezisten╚Ťa la coliziune: imposibil de g─âsit oricare dou─â intr─âri distincte care produc acela╚Öi hash ca ie╚Öire.

  • Rezisten╚Ťa la preimagine: imposibil de ÔÇ×inversatÔÇŁ func╚Ťia hash (g─âsi╚Ťi intrarea de la o ie╚Öire dat─â).

  • Rezisten╚Ťa la a doua preimagine: imposibil de g─âsit orice a doua intrare care se ciocne╚Öte cu o intrare specificat─â.


Rezistenta la coliziune

Dup─â cum s-a men╚Ťionat, o coliziune are loc atunci c├ónd intr─âri diferite produc exact acela╚Öi hash. Astfel, o func╚Ťie hash este considerat─â rezistent─â la coliziune p├ón─â ├«n momentul ├«n care cineva g─âse╚Öte o coliziune. Re╚Ťine╚Ťi, coliziunile vor exista ├«ntotdeauna pentru orice func╚Ťie hash, deoarece intr─ârile posibile sunt infinite, ├«n timp ce ie╚Öirile posibile sunt finite.

Cu alte cuvinte, o func╚Ťie hash este rezistent─â la coliziuni atunci c├ónd posibilitatea de a g─âsi o coliziune este at├ót de mic─â, ├«nc├ót ar necesita milioane de ani de calcule. Deci, ├«n ciuda faptului c─â nu exist─â func╚Ťii hash f─âr─â coliziuni, unele dintre ele sunt suficient de puternice pentru a fi considerate rezistente (de exemplu, SHA-256).

Printre diferi╚Ťii algoritmi SHA, grupurile SHA-0 ╚Öi SHA-1 nu mai sunt sigure deoarece au fost g─âsite coliziuni. ├Än prezent, grupurile SHA-2 ╚Öi SHA-3 sunt considerate rezistente la coliziuni.


Rezisten╚Ťa la preimagine

Proprietatea de rezisten╚Ť─â la preimagine este legat─â de conceptul de func╚Ťii unidirec╚Ťionale. O func╚Ťie hash este considerat─â rezistent─â la preimagine atunci c├ónd exist─â o probabilitate foarte sc─âzut─â ca cineva s─â g─âseasc─â intrarea care a generat o anumit─â ie╚Öire.

Re╚Ťine╚Ťi c─â aceast─â proprietate este diferit─â de cea anterioar─â, deoarece un atacator ar ├«ncerca s─â ghiceasc─â intrarea uit├óndu-se la o anumit─â ie╚Öire. O coliziune, pe de alt─â parte, are loc atunci c├ónd cineva g─âse╚Öte dou─â intr─âri diferite care genereaz─â aceea╚Öi ie╚Öire, dar nu conteaz─â ce intr─âri au fost utilizate.

Proprietatea de rezisten╚Ť─â la preimagine este valoroas─â pentru protejarea datelor, deoarece un simplu hash al unui mesaj poate dovedi autenticitatea acestuia, f─âr─â a fi necesar s─â dezv─âluie informa╚Ťiile. ├Än practic─â, mul╚Ťi furnizori de servicii ╚Öi multe aplica╚Ťii web stocheaz─â ╚Öi folosesc hashuri generate din parole, mai degrab─â dec├ót parolele ├«n text simplu.


Rezisten╚Ť─â la a doua preimagine

Pentru a simplifica, putem spune c─â rezisten╚Ťa la a doua preimagine se afl─â undeva ├«ntre celelalte dou─â propriet─â╚Ťi. Un atac de a doua preimagine are loc atunci c├ónd cineva poate s─â g─âseasc─â o anumit─â intrare care genereaz─â aceea╚Öi ie╚Öire a unei alte intr─âri pe care o cunoa╚Öte deja.

Cu alte cuvinte, un atac de a doua preimagine implică găsirea unei coliziuni, dar în loc să caute două intrări aleatorii care generează același hash, caută o intrare care generează același hash care a fost generat de o altă intrare specifică.

Prin urmare, orice func╚Ťie hash care este rezistent─â la coliziuni este, de asemenea, rezistent─â la atacurile de a doua preimagine, deoarece acestea din urm─â vor implica ├«ntotdeauna o coliziune. Totu╚Öi, se poate efectua un atac de preimagine asupra unei func╚Ťii rezistente la coliziune, deoarece implic─â g─âsirea unei singure intr─âri de la o singur─â ie╚Öire.


Minerit

Exist─â mul╚Ťi pa╚Öi ├«n mineritul Bitcoin care implic─â func╚Ťii hash, cum ar fi verificarea soldurilor, conectarea intr─ârilor ╚Öi ie╚Öirilor tranzac╚Ťiilor ╚Öi tranzac╚Ťii de hashing ├«ntr-un bloc pentru a forma un Arbore Merkle. Dar unul dintre principalele motive pentru care blockchainul Bitcoin este sigur este faptul c─â minerii trebuie s─â efectueze o multitudine de opera╚Ťiuni de hashing pentru a g─âsi ├«n cele din urm─â o solu╚Ťie valid─â pentru urm─âtorul bloc.

Mai exact, un miner trebuie s─â ├«ncerce mai multe intr─âri diferite atunci c├ónd creeaz─â o valoare hash pentru blocul s─âu candidat. ├Än esen╚Ť─â, ace╚Ötia ├«╚Öi vor putea valida blocul numai dac─â genereaz─â un hash de ie╚Öire care ├«ncepe cu un anumit num─âr de zerouri. Num─ârul de zerouri este cel care determin─â dificultatea mineritului ╚Öi variaz─â ├«n func╚Ťie de rata de hash dedicat─â re╚Ťelei.

├Än acest caz, rata de hash reprezint─â c├ót de mult─â putere de calcul este investit─â ├«n mineritul Bitcoin. Dac─â rata de hash a re╚Ťelei cre╚Öte, protocolul Bitcoin va ajusta automat dificultatea de minerit, astfel ├«nc├ót timpul mediu necesar pentru mineritul unui bloc s─â r─âm├ón─â aproape de 10 minute. ├Än schimb, dac─â mai mul╚Ťi mineri decid s─â opreasc─â mineritul, determin├ónd o sc─âdere semnificativ─â a ratei de hash, dificultatea mineritului va fi ajustat─â, simplific├ónd mineritul (p├ón─â c├ónd timpul mediu pentru bloc revine la 10 minute).

Re╚Ťine╚Ťi c─â minerii nu trebuie s─â g─âseasc─â coliziuni, deoarece exist─â mai multe hashuri pe care le pot genera ca rezultat valid (├«ncep├ónd cu un anumit num─âr de zerouri). Deci exist─â mai multe solu╚Ťii posibile pentru un anumit bloc, iar minerii trebuie s─â g─âseasc─â doar una dintre ele - ├«n func╚Ťie de pragul determinat de dificultatea de minerit.┬á

Deoarece mineritul Bitcoin este o sarcin─â costisitoare, minerii nu au niciun motiv s─â ├«n╚Öele sistemul, deoarece acest lucru ar duce la pierderi financiare semnificative. Cu c├ót se al─âtur─â mai mul╚Ťi mineri unui blockchain, cu at├ót acesta devine mai mare ╚Öi mai puternic.


Gânduri de încheiere

Nu exist─â nicio ├«ndoial─â c─â func╚Ťiile hash sunt instrumente esen╚Ťiale ├«n informatic─â, mai ales atunci c├ónd se ocup─â cu cantit─â╚Ťi uria╚Öe de date. Atunci c├ónd sunt combina╚Ťi cu criptografia, algoritmii de hashing pot fi destul de versatili, oferind securitate ╚Öi autentificare ├«n multe moduri diferite. Ca atare, func╚Ťiile hash criptografice sunt vitale pentru aproape toate re╚Ťelele de criptomonede, a╚Öa c─â ├«n╚Ťelegerea propriet─â╚Ťilor ╚Öi mecanismelor de lucru ale acestora este cu siguran╚Ť─â util─â pentru oricine este interesat de tehnologia blockchain.

Distribui╚Ťi post─ârile
├Änregistra╚Ťi un cont
Pune╚Ťi-v─â cuno╚Ötin╚Ťele ├«n practic─â prin deschiderea unui cont Binance ast─âzi.