quale algoritmo di hashing è meglio usare per memorizzare una password, sha256
o sha512
?
So che sha512
è più sicuro di sha256
, ma mi chiedevo se ha alcuni svantaggi o è del tutto migliore di sha256
.
Per espandere il punto che @cthulhu fa nel suo commento, la risposta corretta a questo è "nether". Gli algoritmi di hashing della famiglia SHA2 non sono progettati per l'archiviazione di password e, a meno che non si abbia altra scelta che utilizzare un algoritmo di hashing di uso generale, non dovrebbero essere utilizzati.
Per citare questa risposta i motivi principali di questo sono
A basic hash function, even if secure as a hash function, is not appropriate for password hashing, because:
it is unsalted, allowing for parallel attacks (rainbow tables for MD5 or SHA-1 can be obtained for free, you do not even need to recompute them yourself);
it is way too fast, and gets faster with technological advances. With a recent GPU (i.e. off-the-shelf consumer product which everybody can buy), hashing rate is counted in billions of passwords per second.
In realtà, sono lo stesso algoritmo di hashing: SHA2 , solo con due diverse dimensioni del digest.
È "più economico" (più veloce) generare SHA256 rispetto a SHA512. Quindi, dal punto di vista della sicurezza, un potenziale aggressore avrà bisogno di più tempo per generare tutti gli hash SHA512 possibili per forzare una password hash dal database.
Pertanto, puoi considerare SHA512 più sicuro , ma non in termini di algoritmo utilizzato, ma in termini di tempo impiegato per calcolare un singolo hash.
Quindi l'ovvio svantaggio di SHA512 è rappresentato dalle prestazioni, ma in circa il 99,9% delle applicazioni non si vedrebbe alcuna differenza, perché solitamente i programmi calcolano solo un hash alla volta.
In questo documento PDF a pagina 3/11 puoi trovare un tabella temporale quanto tempo ci vuole per generare hash per molti algoritmi di hashing, solo per farti capire a fondo le differenze tra loro. Il documento non è nuovo di zecca, quindi il numero al giorno d'oggi è più piccolo (a causa della maggiore potenza del computer). Ma vedrai che SHA512 consuma più tempo rispetto allo SHA256 comunque.
EDIT: proprio come i colleghi hanno detto nei commenti seguenti: SHA non è stato creato per lo scopo di memorizzazione delle password e pertanto non dovrebbe essere utilizzato per questo .