Ce este o funcție hash criptografică?
O funcție hash criptografică este un algoritm care poate fi rulat pe date, cum ar fi un individ fişier sau o parolă pentru a produce o valoare numită sumă de control.
Principala utilizare a unei funcții hash criptografice este verificarea autenticității unei date. Se poate presupune că două fișiere sunt identice numai dacă sumele de control generate din fiecare fișier, folosind aceeași funcție hash criptografică, sunt identice.
Unele funcții hash criptografice utilizate în mod obișnuit includ MD5 și SHA-1, deși există și multe altele.
Funcțiile hash criptografice sunt adesea denumite „funcții hash”, dar acest lucru nu este corect din punct de vedere tehnic. O funcție hash este un termen generic care cuprinde funcții hash criptografice împreună cu alte tipuri de algoritmi, cum ar fi verificările de redundanță ciclică.
Funcții hash criptografice: un caz de utilizare
Spuneți că descărcați cea mai recentă versiune a browserului Firefox. Din anumite motive, trebuia să îl descărcați de pe un alt site decât cel al Mozilla. Deoarece nu este găzduit pe un site în care ați învățat să aveți încredere, ați dori să vă asigurați că fișierul de instalare pe care tocmai l-ați descărcat este exact același cu cel oferit de Mozilla.
Folosind un calculator de sumă de control, calculați o sumă de control folosind o anumită funcție hash criptografică, cum ar fi SHA-2, și apoi o comparați cu cea publicată pe site-ul Mozilla. Dacă sunt egale, puteți fi sigur că descărcarea pe care o aveți este cea pe care Mozilla și-a propus să o aveți.

Funcțiile hash criptografice pot fi inversate?
Funcțiile hash criptografice sunt concepute pentru a preveni capacitatea de a inversa sumele de control pe care le creează înapoi la textele originale. Cu toate acestea, chiar dacă sunt practic imposibil de inversat, nu sunt garantate 100% pentru a proteja datele.
Hackerii pot folosi un tabel curcubeu pentru a afla textul simplu al unei sume de control. Tabelele curcubeu sunt dicționare care listează mii, milioane sau chiar miliarde de sume de control alături de valoarea lor corespunzătoare text simplu.
Deși acest lucru nu inversează din punct de vedere tehnic algoritmul hash criptografic, ar putea la fel de bine să fie, având în vedere că este atât de simplu de făcut. În realitate, deoarece niciun tabel curcubeu nu poate enumera fiecare sumă de control posibilă existentă, acestea sunt de obicei utile doar pentru expresii simple, cum ar fi parolele slabe.
Iată o versiune simplificată a unui tabel curcubeu pentru a arăta cum ar funcționa atunci când se folosește funcția hash criptografică SHA-1:
Exemplu de masă curcubeu | |
---|---|
Text simplu | Sumă de control SHA-1 |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
parola1 | e38ad214943daad1d64c102faec29de4afe9da3d |
imi iubesc cainele | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Un hacker trebuie să știe ce algoritm criptografic hash a fost folosit pentru a genera sumele de verificare pentru a afla valorile.
Pentru protecție suplimentară, unele site-uri web care stochează parolele utilizatorului efectuează funcții suplimentare pe algoritmul hash criptografic după ce valoarea este generată, dar înainte de a fi stocată. Acest proces produce o nouă valoare pe care doar serverul web o înțelege și care nu se potrivește cu suma de control inițială.
De exemplu, după ce o parolă este introdusă și suma de control generată, aceasta poate fi separată în mai multe părți și rearanjat înainte de a fi stocat în baza de date de parole sau anumite caractere ar putea fi schimbate alții. Când încearcă să se autentifice data viitoare când utilizatorul se conectează, serverul web inversează acest lucru funcție suplimentară, iar suma de control originală este generată din nou pentru a verifica dacă parola unui utilizator este valabil.
Luarea acestor pași limitează utilitatea unui hack în care toate sumele de control sunt furate. Ideea este de a efectua o funcție care este necunoscută, așa că dacă hackerul cunoaște algoritmul hash criptografic, dar nu cel personalizat, atunci cunoașterea sumelor de verificare a parolelor nu este de ajutor.
Parole și funcții de hash criptografic
O bază de date salvează parolele utilizatorului într-un mod similar cu un tabel curcubeu. Când parola dvs. este introdusă, suma de control este generat și comparat cu cel înregistrat cu numele dvs. de utilizator. Apoi vi se acordă acces dacă cele două sunt identice.
Având în vedere că o funcție hash criptografică produce o sumă de control nereversibilă, este sigur să vă faceți parola la fel de simplă ca 12345, in loc de 12@34$5, pur și simplu pentru că sumele de control în sine nu pot fi înțelese? Nu, și iată de ce.
Aceste două parole sunt ambele imposibil de descifrat doar privind doar sumele de verificare:
MD5 pentru 12345:827ccb0eea8a706c4c34a16891f84e7b
MD5 pentru 12@34$5:a4d3cc004f487b18b2ccd4853053818b
La prima vedere, puteți crede că este bine să utilizați oricare dintre aceste parole. Acest lucru este adevărat dacă un atacator a încercat să-ți descopere parola ghicind suma de control MD5, ceea ce nimeni nu o face, dar nu este adevărat dacă se efectuează un atac de forță brută sau de dicționar, care este o tactică comună.
Un atac cu forță brută are loc atunci când sunt luate mai multe lovituri aleatorii la ghicirea unei parole. În acest caz, ar fi ușor de ghicit 12345, dar destul de dificil să-l dai la întâmplare pe celălalt. Un atac de dicționar este similar prin faptul că atacatorul poate încerca fiecare cuvânt, număr sau expresie dintr-o listă de parole comune (și mai puțin obișnuite) și 12345 este una dintre acele parole comune.
Chiar dacă funcțiile hash criptografice produc sume de control dificil până la imposibil de ghicit, ar trebui totuși utilizați o parolă complexă pentru toate conturile dvs. de utilizator online și locale.
Mai multe informații despre funcțiile hash criptografice
Ar putea părea că funcțiile hash criptografice sunt legate de criptare, dar cele două funcționează în moduri diferite.
Criptarea este un proces bidirecțional în care ceva este criptat pentru a deveni ilizibil și apoi decriptat mai târziu pentru a fi utilizat din nou în mod normal. Tu ai putea criptați fișierele pe care le-ați stocat astfel încât oricine le accesează să nu le poată folosi, sau tu le poți folosi criptarea transferului de fișiere pentru a cripta fișierele care se deplasează într-o rețea, cum ar fi cele pe care le încărcați sau le descărcați online.
Funcțiile hash criptografice funcționează diferit, deoarece sumele de control nu sunt menite să fie inversate cu o parolă specială de dehashing. Singurul scop al funcțiilor hash criptografice este de a compara două date, cum ar fi atunci când descărcați fișiere, stocați parolele și extrageți date dintr-o bază de date.
Este posibil ca o funcție hash criptografică să producă aceeași sumă de control pentru diferite bucăți de date. Când se întâmplă acest lucru, se numește coliziune, ceea ce este o problemă uriașă, având în vedere că întregul scop al unei funcții hash criptografice este de a face sume de control unice pentru fiecare intrare de date în ea.
Pot apărea coliziuni deoarece fiecare funcție hash criptografică produce o valoare de lungime fixă, indiferent de datele de intrare. De exemplu, funcția hash criptografică MD5 generează 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 și e10adc3949ba59abbe56e057f20f883e pentru trei total diferite blocuri de date.
Prima sumă de control este de la 12345. Al doilea a fost generat din peste 700 de litere și cifre, iar al treilea este de la 123456. Toate cele trei intrări au lungimi diferite, dar rezultatele sunt întotdeauna de doar 32 de caractere Suma de control MD5 a fost folosit.
Nu există o limită a numărului de sume de control care ar putea fi create, deoarece fiecare modificare mică în intrare ar trebui să producă o sumă de control complet diferită. Deoarece există o limită a numărului de sume de control pe care le poate produce o funcție hash criptografică, există întotdeauna posibilitatea ca să întâmpinați o coliziune.
Acesta este motivul pentru care au fost create alte funcții hash criptografice. În timp ce MD5 generează o valoare de 32 de caractere, SHA-1 generează 40 de caractere și SHA-2 (512) generează 128. Cu cât este mai mare numărul de caractere pe care îl are suma de control, cu atât este mai puțin probabil să apară o coliziune.