Cele trei proprietăți esențiale sunt rezistența la preimagine (un digest nu dezvăluie nimic despre intrarea sa), rezistența la a doua preimagine (nicio intrare diferită cu același digest nu poate fi găsită pentru o intrare dată) și rezistența la coliziuni (nicio pereche de intrări cu același digest nu poate fi găsită deloc). Algoritmi precum MD5 și SHA-1 au eșuat aceste proprietăți și nu trebuie folosiți acolo unde contează.
Hashing-ul apare în toată securitatea: verificări de integritate și dovezi de manipulare, semnături digitale care semnează digesturi în loc de mesaje întregi, adresare de conținut și — cu muncă deliberată suplimentară — stocarea parolelor. Parolele au nevoie de funcții cu sare, costisitoare computațional, precum algoritmii dedicați de hashing a parolelor; un hash rapid de uz general este instrumentul greșit pentru acea sarcină specifică.
Puncte esențiale
Utilizare pentru integritateUn digest care se potrivește confirmă că conținutul nu s-a schimbat de când digestul a fost calculat — cu condiția ca digestul în sine să fi fost obținut printr-un canal de încredere.
Stocarea parolelorStocați digesturi cu sare și hash lent, în loc de hash-uri rapide; sarea învinge căutările precalculate, iar costul încetinește ghicirea brute-force la scară.
Selectarea algoritmuluiFolosiți familii aprobate curente (SHA-2, SHA-3) și tratați MD5 și SHA-1 ca sparte în scopuri de securitate — rămân acceptabile doar pentru checksum-uri neadversariale.
Limitare importantăUn hash dovedește doar că două intrări s-au potrivit sub o funcție la un moment dat. Nu furnizează confidențialitate — digestul unei intrări ghicibile este recuperat trivial prin încercarea candidaților — iar un hash calculat pe un canal nesigur poate fi schimbat împreună cu conținutul pe care îl garantează.