Un hash cu cheie nu este susceptibil la coliziuni/paradoxul zilei de naștere, deoarece atacatorul nu deține cheia; nu puteți face nici un pre-calcul și nu puteți crea un set de hashe-uri cunoscute din acest motiv (ei bine, ați putea dacă ați avea un Oracle cu cheia, dar în acest caz, Oracolul ar semna date aleatoare livrate acestuia).
Deci subestimezi securitatea oferita de HMAC; în cele mai multe cazuri, oferă securitate care este aproximativ aceeași cu dimensiunea de ieșire / dimensiunea cheii. Vezi si keylength.com / recomandări NIST de exemplu (trebuie să vă uitați la „Hash (B)” pentru HMAC în tabel).
Cu toate acestea, utilizați y = SHA384(w)
. Acum, dacă un atacator poate încerca să creeze o coliziune pentru anumite valori ale w
, ceea ce ar însemna că coliziunea hash este utilizată în cadrul intrării HMAC, ceea ce va duce, desigur, la aceeași valoare HMAC. Deci aici se aplică limita de naștere.
Deci, da, în acest caz, puteți încerca să utilizați SHA-384 sau SHA-512 (deoarece atacurile de extensie de lungime nu vor duce la o coliziune, așa că acestea nu sunt la subiect). SHA-384 ar putea fi folosit dacă bănuiți că este necesar un alt bloc de hashing dacă este folosit SHA-512; SHA-384 poate fi apoi puțin mai eficient - dacă o astfel de eficiență este necesară.
Cu toate acestea, vă rugăm să rețineți că în general presupunem că SHA-256 are deja o putere de 128 de biți chiar și atunci când presupunem atacuri de naștere, deci nu este încă nevoie să folosiți SHA-384 chiar și atunci.