Hashing este procesul de generare a unei ieșiri de dimensiune fixă dintr-o intrare de dimensiune variabilă. Acest proces este realizat printr-o formulă matematică numită „funcție hash” (implementată ca algoritm de hashing).
Nu toate funcțiile hash implică utilizarea criptografiei, dar „funcțiile hash criptografice” se află în centrul criptomonedelor. Datorită funcțiilor hash criptografice, în blockchain și alte sisteme distribuite pot fi atinse niveluri ridicate de integritate și securitate a datelor.
Atât funcțiile hash tradiționale, cât și funcțiile hash criptografice sunt deterministe. Determinismul se referă la faptul că un algoritm de hashing va produce întotdeauna aceeași ieșire (numită și „digest” sau „hash value”) atâta timp cât intrarea nu se modifică.
În mod obișnuit, algoritmii de hashing al criptomonedei sunt proiectați pentru a fi funcții unidirecționale, ceea ce înseamnă că nu pot fi recuperați cu ușurință fără un timp și resurse semnificative de calcul. Cu alte cuvinte, este extrem de ușor să creezi o ieșire dintr-o intrare, dar este relativ dificil să creezi o intrare dintr-o ieșire în sens invers. În general, cu cât intrarea este mai greu de găsit, cu atât algoritmul de hashing este mai sigur.
Cum funcționează o funcție hash?
Funcții hash diferite produc rezultate de dimensiuni diferite, dar dimensiunea de ieșire a fiecărui algoritm de hash este întotdeauna aceeași. De exemplu, algoritmul SHA-256 poate produce numai o ieșire de 256 de biți, în timp ce SHA-1 produce întotdeauna un rezumat de 160 de biți.
Pentru a ilustra acest lucru, am rulat cuvintele „Binance” și „binance” prin algoritmul de hashing SHA-256 (algoritmul folosit în Bitcoin).
Rețineți că o mică modificare în scrierea cu majuscule a primei litere va produce o valoare hash complet diferită. Indiferent de lungimea valorii de intrare, ieșirea folosind SHA-256 este întotdeauna o lungime fixă de 256 de biți (sau 64 de caractere). În plus, indiferent de câte ori algoritmul rulează aceste două cuvinte, rezultatul ambelor rămâne același.
În schimb, dacă rulați aceeași intrare prin algoritmul de hashing SHA-1, obțineți următoarele rezultate:
Vă rugăm să rețineți că „SHA” este acronimul pentru Secure Hash Algorithms. Algoritmul se referă la un set de funcții hash criptografice, care include algoritmii SHA-0 și SHA-1, precum și seturile SHA-2 și SHA-3. SHA-256, împreună cu SHA-512 și alte variante, fac parte din grupul SHA-2. În prezent, doar grupurile SHA-2 și SHA-3 sunt considerate sigure.
Care este importanța funcțiilor hash?
Funcțiile hash tradiționale au o varietate de cazuri de utilizare, inclusiv căutări în baze de date, analiza fișierelor mari și gestionarea datelor. Funcțiile hash criptografice sunt utilizate pe scară largă în aplicațiile de securitate a informațiilor, cum ar fi autentificarea mesajelor și amprentarea digitală. În cazul Bitcoin, funcțiile hash criptografice sunt o parte integrantă a procesului de extragere, afectând atât noua adresă, cât și generarea de chei.
Operațiunile hash sunt cu adevărat puternice atunci când procesează cantități mari de informații. De exemplu, rulați un fișier mare sau un set de date printr-o funcție hash și apoi utilizați rezultatul acestuia pentru a verifica rapid acuratețea și caracterul complet al datelor. Funcțiile hash funcționează pentru că sunt deterministe: o intrare produce întotdeauna o ieșire comprimată, simplificată (adică, o valoare hash). Această tehnologie elimină nevoia de a stoca și „reține” cantități mari de date.
Operațiunile hash sunt deosebit de utile în domeniul tehnologiei blockchain. Blockchain-ul Bitcoin are multe operațiuni care implică operațiuni hash, dintre care majoritatea fac parte din procesul de minerit. De fapt, aproape toate protocoalele criptomonede se bazează pe hashing pentru a conecta grupuri de tranzacții și a le comprima în blocuri, generând în același timp legături criptografice între blocuri individuale, creând efectiv un blockchain.
funcția hash criptografică
De asemenea, funcțiile hash care implementează tehnici criptografice pot fi definite ca funcții hash criptografice. În general, întreruperea unei funcții hash criptografice necesită nenumărate încercări de forță brută. Pentru a „restaura” o funcție hash criptografică, ghiciți intrarea prin încercare și eroare până când este generată ieșirea corespunzătoare. Cu toate acestea, este, de asemenea, posibil ca intrări diferite să producă exact aceeași ieșire, astfel încât apare un „conflict”.
Din punct de vedere tehnic, o funcție hash criptografică trebuie să posede trei proprietăți pentru a fi considerată eficientă în asigurarea securității. Cele trei atribute majore sunt anti-coliziune, anti-pre-imagine și anti-secundă pre-imagine.
Înainte de a discuta fiecare atribut individual, să rezumăm pe scurt logica fiecărui atribut.
Rezistența la coliziune: este imposibil ca oricare două intrări diferite să genereze aceeași ieșire de valoare hash.
Anti-imaginabilitate: este imposibil să „restaurăm” o funcție hash (adică intrarea nu poate fi găsită dintr-o ieșire dată).
A doua rezistență preimagine: este imposibil să găsiți o altă intrare care să intre în conflict cu o anumită intrare.
rezistență la conflict
După cum sa menționat anterior, coliziunile apar atunci când intrări diferite generează exact aceeași valoare hash. Prin urmare, o funcție hash este considerată rezistentă la coliziuni atâta timp cât nimeni nu detectează o coliziune. Rețineți că, deoarece intrările posibile sunt infinite și ieșirile posibile sunt finite, există întotdeauna coliziuni cu funcțiile hash.
Presupunând că probabilitatea de a găsi o coliziune este la fel de mică ca milioane de ani, se poate spune că o funcție hash este rezistentă la coliziune. Prin urmare, deși în realitate nu există funcții hash fără coliziuni, unele dintre ele (cum ar fi SHA-256) sunt considerate rezistente la coliziuni atâta timp cât sunt suficient de puternice.
Printre diverși algoritmi SHA, grupurile SHA-0 și SHA-1 au conflicte, deci nu mai sunt sigure. În prezent, seturile SHA-2 și SHA-3 sunt considerate rezistente la coliziuni.
Anti-imagini
Proprietatea anti-iconic este legată de conceptul de funcții unidirecționale. Se spune că o funcție hash este anti-imagini, presupunând că probabilitatea de a găsi o intrare care produce o ieșire specifică este extrem de scăzută.
Rețineți că un atacator se uită la o ieșire dată pentru a ghici intrarea, astfel încât această proprietate este diferită de rezistența la coliziune. În plus, două intrări diferite care produc aceeași ieșire vor intra în conflict, dar nu contează cu adevărat ce intrare este utilizată.
Proprietățile anti-imagine sunt valoroase pentru protejarea datelor, deoarece un simplu hash al unui mesaj poate dovedi autenticitatea acestuia fără a dezvălui informațiile. În practică, mulți furnizori de servicii și aplicații web stochează și folosesc hashuri generate din parole, mai degrabă decât parola în text clar.
Rezistență la a doua preimagine
Pe scurt, rezistența la a doua preimagini se află undeva între cele două proprietăți menționate mai sus. Un al doilea atac preimagine are loc dacă cineva poate găsi o intrare specifică care produce o ieșire care este aceeași cu o altă intrare cunoscută.
Cu alte cuvinte, al doilea atac preimagine este legat de găsirea conflictelor, dar în loc să cauți două intrări aleatorii care generează aceeași valoare hash, cauți o altă intrare care generează aceeași valoare hash, având în vedere intrarea specifică.
Un al doilea atac preimagine înseamnă de obicei că există un conflict. Prin urmare, orice funcție hash rezistentă la coliziuni este, de asemenea, rezistentă la atacurile secundare preimagine. Cu toate acestea, a fi rezistent la coliziune înseamnă că o singură intrare poate fi găsită dintr-o singură ieșire, astfel încât un atacator poate lansa în continuare un atac preimagine împotriva unei funcții rezistente la coliziune.
Exploatarea criptomonedei
Funcțiile hash sunt utilizate în mai mulți pași în mineritul Bitcoin, cum ar fi verificarea soldurilor, concatenarea intrărilor și ieșirilor tranzacțiilor și hashingul tranzacțiilor în cadrul aceluiași bloc pentru a forma un arbore Merkle. Cu toate acestea, unul dintre principalele motive pentru care blockchain-ul Bitcoin este sigur este că minerii trebuie să efectueze nenumărate operațiuni de hashing înainte de a putea găsi în sfârșit o soluție validă pentru următorul bloc.
Mai exact, minerii trebuie să încerce mai multe intrări diferite atunci când creează hash-uri de bloc candidat. În esență, minerii pot valida un bloc numai dacă hash-ul de ieșire generat începe cu un anumit număr de zerouri. Numărul de zerouri determină dificultatea minării și se modifică odată cu rata de hash dedicată rețelei.
În acest caz, rata hash reprezintă cantitatea de putere de calcul pusă în minarea Bitcoin. Dacă rata de hash a rețelei crește, protocolul Bitcoin va ajusta automat dificultatea minării, astfel încât timpul mediu necesar pentru a genera un bloc să rămână aproape de 10 minute. Dimpotrivă, dacă mulți mineri decid să oprească mineritul, determinând o scădere semnificativă a ratei de hash, dificultatea de minerit va fi redusă până când timpul mediu de blocare va reveni la 10 minute.
Rețineți că minerii pot genera mai multe hashuri ca rezultat valid (începând cu un anumit număr de zerouri), astfel încât nu trebuie să caute coliziuni. Există mai multe soluții posibile pentru un bloc, dar, în funcție de pragul de dificultate în minerit, minerii trebuie să găsească doar una dintre soluții.
Exploatarea Bitcoin este o sarcină cu costuri ridicate și nu este nevoie ca minerii să înșele sistemul, ceea ce ar provoca în schimb pierderi financiare semnificative. Cu cât mai mulți mineri se alătură blockchain-ului, cu atât blockchain-ul devine mai mare și mai puternic.
Rezuma
Nu există nicio îndoială că funcțiile hash sunt un instrument esențial în informatică, iar capacitatea lor de a procesa cantități masive de date este deosebit de remarcabilă. Combinați cu criptografie, algoritmii de hashing pot fi utilizați într-o varietate de moduri pentru a oferi securitate și autentificare într-o varietate de moduri. Pentru aproape toate rețelele de criptomonede, funcțiile hash criptografice sunt cruciale. Prin urmare, dacă sunteți interesat de tehnologia blockchain, va fi de mare beneficiu să înțelegeți proprietățile și mecanismul de funcționare al funcțiilor hash criptografice.

