l'hashing è un metodo a senso unico, se un utente perde la sua password non sarà mai in grado di ottenere quella password dal server, così perché non archiviamo le password in un database utilizzando la crittografia anziché l'hashing?
Perché se un utente può estrarre la propria password dal database, può farlo anche:
In alcuni di questi casi, la facilità di accesso dipende dal fatto che il sistema sia o meno vulnerabile ad altri exploit. In altri, il danno può essere esacerbato o ridotto a seconda dell'igiene della password dell'utente.
Tuttavia, tutti i casi rappresentano scenari in cui l'hashing per lo più - se non del tutto - blocca le persone che non dovrebbero avere accesso alle password di altre persone. La crittografia non può aiutare qui.
Vale anche la pena notare che un utente non ha mai, per gli scopi previsti da qualsiasi sito Web, la necessità di ottenere le credenziali di accesso effettive dal sistema. Nel caso in cui un utente dimentichi la propria password, il sistema dovrebbe fornire un meccanismo con il quale possono essere ripristinati in modo sicuro o modificarlo in un nuovo , valore noto.
Il passaggio all'hash della password e l'implementazione di un processo di reimpostazione (anziché di ripristino) impediranno assolutamente a un utente malintenzionato di accedere all'account di un utente in tutti gli scenari sopra riportati? No. Sicuramente aumenta la barra e garantisce che il danno per l'utente sia isolato solo da quell'account - non tutti gli account su cui l'utente ha usato la stessa password.
Quando il tuo utente effettua il login, dovrai sapere se la password è corretta.
L'hashing di una password significa che non è necessario conoscere la password, solo l'hash. Poiché l'hashing è a senso unico, se qualcuno perde il tuo database, avranno solo gli hash e dovranno applicare bruteforce a tutti per ottenere le password. Usare salts, bcrypt e molti round rende molto, molto difficile da decifrare tutte le password.
La crittografia è reversibile. Il tuo utente invia la password, il tuo sito decrittografa il valore memorizzato e lo confronta. Il problema è che il tuo sito ha la chiave di decodifica. Se qualcuno ha hackerato il tuo sito, riceverà la chiave e decodificherà ogni singola password, senza sforzo. Non bello.
È quasi tanto insicuro quanto mantenere la password su testo non crittografato.
Principali vantaggi dell'hashing rispetto alla crittografia:
Leggi altre domande sui tag authentication encryption hash