perché non archiviamo le password in un database utilizzando la crittografia anziché l'hashing? [duplicare]

1

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?

    
posta lasan 02.06.2016 - 16:06
fonte

3 risposte

7

Perché se un utente può estrarre la propria password dal database, può farlo anche:

  • L'amministratore di sistema / database.
  • La scuola / datore di lavoro / governo che sta delegando l'accesso a Internet dell'utente.
  • L'hacker che ha fornito il WiFi al bar.
  • L'hacker che ha creato l'account e-mail dell'utente.
  • L'hacker che ha imposto il server.

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.

    
risposta data 02.06.2016 - 16:15
fonte
6

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.

    
risposta data 02.06.2016 - 16:17
fonte
3

Principali vantaggi dell'hashing rispetto alla crittografia:

  • l'amministratore del sito web non conosce la tua password (vedi la risposta di Iszi);
  • se il database viene violato, è più semplice per l'utente malintenzionato interrompere una singola chiave di crittografia piuttosto che ottenere le password da N (10 ^ 4, 10 ^ 6, ...) hash correttamente salati (consultare la risposta di ThoriumBR);
  • in realtà non hai bisogno di ottenere quella password se la dimentichi. È sufficiente disporre di un meccanismo di ripristino della password appropriato. L'unico motivo per cui desideri ottenere la password originale, invece di reimpostarla, è se usi la stessa password per molti siti web (e non vuoi passare attraverso la seccatura di reimpostare la password ovunque), ma questo è veramente cattivo , anche se la password è molto strong.
risposta data 02.06.2016 - 16:22
fonte

Leggi altre domande sui tag