Funcția de criptare criptografică

Definiția funcției de criptare criptografică

O funcție hash criptografică este un fel de algoritm care poate fi rulat pe o bucată de date, ca un fișier individual sau o parolă, pentru a produce o valoare numită sumă de control.

Utilizarea principală a unei funcții hash criptografice este de a verifica autenticitatea unei anumite date. Două fișiere pot fi asigurate ca fiind identice numai dacă sumele de control generate de fiecare fișier, utilizând aceeași funcție hash criptografică, sunt identice.

Unele funcții de hash criptografice utilizate în mod obișnuit includ MD5 și SHA-1 , deși există și multe altele.

Notă: Funcțiile hash criptografice sunt deseori denumite funcții hash pentru scurtă durată, dar acest lucru nu este punct de vedere tehnic corect. O funcție hash este un termen mai generic care este folosit de obicei pentru a cuprinde funcțiile hash criptografice împreună cu alte tipuri de algoritmi, cum ar fi verificările ciclice de redundanță.

Funcții criptografice de hash: Un caz de utilizare

Să presupunem că descărcați cea mai recentă versiune a browserului Firefox . Din orice motiv, trebuie să îl descărcați de pe un alt site decât Mozilla. Dacă nu sunteți găzduit pe un site pe care l-ați învățat să aveți încredere, doriți să vă asigurați că fișierul de instalare pe care tocmai l-ați descărcat este exact același lucru pe care îl oferă Mozilla.

Folosind un calculator de control de sumă , calculați o sumă de control utilizând o anumită funcție hash criptografică (spune SHA-2) și apoi comparăți aceasta cu cea publicată pe site-ul Mozilla.

Dacă acestea sunt egale, atunci puteți fi în mod rezonabil sigur că descărcarea pe care o aveți este cea pe care Mozilla intenționați să o aveți.

Vedeți ce este un sum de control? pentru mai multe despre aceste calculatoare speciale, plus mai multe exemple de utilizare a sumelor de control pentru a vă asigura că fișierele pe care le descărcați într-adevăr sunt ceea ce ați așteptat să fie.

Pot fi inversate funcțiile de criptare criptografică?

Funcțiile hash criptografice sunt concepute astfel încât să împiedice posibilitatea de a inversa sumele de control pe care le creează în textele originale.

Cu toate acestea, chiar dacă acestea sunt practic imposibil de inversat, nu înseamnă că sunt 100% garantate pentru a proteja datele.

Ceva numit o masă de curcubeu poate fi folosit pentru a descoperi rapid textul unui control de sumă. Tabelele de tablă sunt, în esență, dicționare care afișează mii, milioane sau chiar miliarde din acestea, alături de valoarea lor plaintext corespunzătoare.

În timp ce acest lucru nu este inversarea tehnică a algoritmului hash criptografic, ar putea fi, de asemenea, deoarece este atât de simplu de făcut. În realitate, deoarece nici o masă de curcubeu nu poate enumera orice sumă posibilă de control existente, ele sunt, de obicei, doar "utile" pentru expresii simple ... cum ar fi parolele slabe.

Iată o versiune simplificată a unei tabele de curcubeu pentru a arăta cum s-ar putea lucra atunci când se utilizează funcția hash criptografică SHA-1:

Text simplu Suma de verificare SHA-1
12345 8cb2237d0679ca88db6464eac60da96345513964
parola1 e38ad214943daad1d64c102faec29de4afe9da3d
imi iubesc cainele a25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny400 7d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984 c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Pentru ca aceste valori să fie calculate folosind suma de control, ar fi necesar ca hackerul să înțeleagă algoritmul hash criptografic folosit pentru a le genera.

Pentru o protecție suplimentară, unele site-uri web care stochează parolele utilizator execută funcții suplimentare ale algoritmului hash criptografic după generarea valorii, dar înainte de a fi stocate.

Aceasta produce o nouă valoare pe care numai serverul web o înțelege și care nu se potrivește exact cu suma de control originală.

De exemplu, după ce o parolă este introdusă și suma de control este generată, ea poate fi separată în mai multe părți și rearanjată înainte de a fi stocată în baza de date a parolei sau anumite caractere pot fi schimbate cu altele. Atunci când utilizatorul încearcă să se autentifice data viitoare când se conectează, această funcție suplimentară va fi inversată de serverul web și din suma inițială de control generată din nou, pentru a verifica dacă parola unui utilizator este validă.

Acest lucru ajută la limitarea utilității unui hack unde toate sumele de control sunt furate.

Din nou, ideea aici este de a efectua o funcție care este necunoscută, astfel încât dacă hacker-ul cunoaște algoritmul hash criptografic, dar nu acest personalizat, atunci cunoașterea sumelor de control parolelor este nefolositoare.

Parole și funcții de criptare criptografică

Similar cu o masă de curcubeu este modul în care o bază de date salvează parolele utilizatorilor. Când este introdusă parola, suma de control este generată și comparată cu cea înregistrată cu numele dvs. de utilizator. Apoi, veți primi acces dacă cele două sunt identice.

Dat fiind faptul că o funcție hash criptografică produce o sumă de control nereversibilă, înseamnă că puteți face parola la fel de simplă ca 12345 , în loc de 12 @ 34 $ 5 , doar pentru că sumele de control nu pot fi înțelese? Cu siguranta nu , si de ce ...

După cum puteți vedea, aceste două parole sunt imposibil de descifrat doar dacă privim exact controlul:

MD5 pentru 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 pentru 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

Deci, la prima vedere, vă puteți gândi că este absolut bine să utilizați oricare dintre aceste parole. Acest lucru este cu siguranță adevărat dacă un atacator a încercat să-ți imagineze parola, ghicind suma de control MD5 (pe care nimeni nu o face), dar nu este adevărată dacă se efectuează o forță brute sau atac de dicționar (care este o tactică comună).

Un atac de forță brute este atunci când sunt luate mai multe stări aleatorii la ghicitul unei parole. În acest caz, ar fi foarte ușor să ghicești "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 orice cuvânt, număr sau frază dintr-o listă de parole comune (și mai puțin utilizate frecvent), "12345" fiind cu siguranță una care ar fi încercat.

Deci, chiar dacă funcțiile hash criptografice produc sume de control dificilă până la imposibil de ghicit, ar trebui să utilizați în continuare o parolă complexă pentru toate conturile de utilizator online și locale.

Sfat: consultați Exemple de parole slabe și puternice dacă nu sunteți sigur dacă dvs. este considerată o parolă puternică.

Mai multe informații despre funcțiile de criptare criptografică

S-ar putea să pară că funcțiile hash criptografice sunt legate de criptare, dar cele două funcționează în moduri foarte diferite.

Criptarea este un proces cu două căi în care ceva este criptat pentru a deveni necitit, dar apoi decodificat mai târziu pentru a fi folosit în mod normal din nou. S-ar putea să criptați fișierele pe care le-ați stocat, astfel încât oricine care le accesează să nu le poată utiliza sau puteți utiliza 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.

Așa cum am descris mai sus, funcțiile hash criptografice funcționează diferit, deoarece sumele de control nu sunt menite să fie inversate cu o parolă specială de-hashing cum ar fi modul în care fișierele criptate sunt citite cu o parolă specială de decriptare. Singurul scop al funcțiilor de criptare hash este de a compara două fragmente de date, precum descărcarea fișierelor, stocarea parolelor, tragerea datelor dintr-o bază de date etc.

Este posibil ca o funcție hash criptografică să producă aceeași sumă de control pentru diferite piese de date. Când se întâmplă acest lucru, se numește o coliziune. În mod evident, aceasta este o problemă uriașă, având în vedere că întregul punct al unei funcții hash criptografice este de a realiza totalumuri de control unice pentru fiecare dată introdusă în ea.

Motivele de coliziune pot apărea deoarece fiecare funcție hash criptografică produce o valoare a unei lungimi fixe indiferent de datele de intrare. De exemplu, funcția hash criptografică MD5 generează 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 și e10adc3949ba59abbe56e057f20f883e pentru trei blocuri de date complet diferite.

Prima sumă de control este de la 12345 , cea de-a doua a fost generată de peste 700 de litere și numere, iar a treia este de la 123456 . Toate cele trei intrări au lungimi diferite, dar rezultatele sunt întotdeauna de numai 32 de caractere de când MD5 a fost utilizat.

După cum puteți vedea, nu există practic nici o limită a numărului de sumele de control care ar putea fi create, deoarece fiecare mică modificare a intrării ar trebui să producă o sumă de control complet diferită. Totuși, pentru că există o limită a numărului de sumele de control pe care le poate produce o funcție hash criptografică, există întotdeauna posibilitatea să întâlniți o coliziune.

De aceea, au fost create și alte funcții hash criptografice. În timp ce MD5 generează o valoare de 32 de caractere, SHA-1 generează 40 de caractere, iar SHA-2 (512) generează 128. Cu cât este mai mare numărul de caractere care are controlul, cu atât este mai puțin probabil ca o coliziune să aibă loc, valori unice.