Perché? SHA-256 da solo è inadatto per la memorizzazione di password
I checksum dei file e l'archiviazione della password lato server risolvono diversi problemi.
In questa guida
Hashing non è crittografia: non c'è alcuna operazione di decrittografia corrispondente. Tuttavia, dopo una perdita di database un aggressore può hash indovina e confrontarli con i record rubati senza superare i limiti di tasso di login della vostra applicazione.
La velocità di SHA diventa uno svantaggio
SHA-256 è utile per i controlli di integrità e molte applicazioni crittografiche. La sua velocità è indesiderabile per l'archiviazione delle password. SHA256(salt + password) non fa ipotesi sufficientemente costose. Il sale e il costo computazionale servono scopi diversi.
Non inventare un formato di credenziali o un loop di hash ordinari.
Scegli una funzione di password dedicata
OWASP preferisce Argon2id per nuovi sistemi, con scrypt come alternativa quando non disponibile. PBKDF2 Bcrypt rimane rilevante per i sistemi legacy, ma ha limitazioni, compresa la lunghezza d'ingresso.
Scegli i parametri di costo dalla guida corrente e dalle misurazioni sul server di destinazione. L'account per i login concomitanti e i limiti delle risorse: l'hashing costoso non deve fare la negazione del servizio banale.
Capire il sale e il pepe
Un sale è casuale e unico per ogni record; non deve essere segreto. Conservare anche i parametri dell'algoritmo e della verifica, spesso all'interno del registro codificato della libreria.
Un pepe è un segreto facoltativo tenuto al di fuori del database delle password. Può aiutare in alcuni scenari di violazione, ma complica la rotazione e la gestione chiave.
Registrati di aggiornamento dopo la verifica di successo
In un login di successo, verificare prima il vecchio record, quindi rihash la password presentata se i parametri sono obsoleti. Non è possibile recuperare le password originali da hash esistenti per migrare l'intero database.
Prima dell'implementazione, prova password errate, migrazione legacy, limiti di lunghezza e carico.