Questo è davvero più di un addendum alla risposta intelligente di @ Brian. Tanto di cappello anche a @Martijn Pieters per l'aggiunta di dettagli su come forzare la forzatura delle vecchie password in base a quella corrente e al maniaco di @ratchet per "distanza di lancio". Non sto eliminando la mia risposta perché penso che fornisca uno sfondo interessante per il backup.
La memorizzazione di password all'avanguardia richiede l'utilizzo di più round di un forte hash crittografico unidirezionale (SHA-512 +) con sale univoco (128 bit +) per ciascun utente. Ma non essere tentato di memorizzare ulteriori informazioni su ciascuna password. Più informazioni memorizzerai su ciascuna password, più minerai la sicurezza del tuo algoritmo di hashing.
Esempio
Considera quanto diventa facile forzare una password se sai che:
- È composto da 7 caratteri
- I caratteri 3-5 sono maiuscoli (4 è inferiore)
- 1 e 7 sono numeri
- 6 è un simbolo
Una tastiera americana ha 95 caratteri stampabili, quindi sapere che la password è lunga 7 caratteri produce 95 ^ 7 = 69.833.729.610.000 = 7x10 ^ 13 permutazioni. Se fosse davvero casuale, potrebbe volerci un anno per decifrarlo su un singolo processore 3Ghz. Ma:
- Ci sono solo 26 caratteri maiuscoli e 26 caratteri minuscoli
- Ci sono solo 10 cifre che danno 100 possibilità per quei due numeri
- Ci sono solo 32 simboli
Quindi (corretto grazie a @Hellion):
26^4 (charcters 2-5 are known upper or lower-case)
x 100 (characters 1 & 7 are digits)
x 32 (character 6 is a symbol)
====
1,462,323,200 possible passwords.
È 50.000 volte più facile da decifrare! La memorizzazione di informazioni valide per prevenire password simili in questo caso ha richiesto del tempo di crack per una password di 7 caratteri da un anno a un paio d'ore. Decodificare tutte le tue password con un potente desktop multi-processore con una buona scheda video e un po 'di pazienza è ora molto fattibile. Spero che questo semplice esempio dimostri che più significativamente puoi confrontare password simili, meno sicuro sarà il tuo hashing.
Importanza dell'hashing forte
I database con password vengono rubati regolarmente, con immense violazioni nelle notizie ogni mese. Diamine, proprio il mese scorso lo stato di SC ha perso i numeri di previdenza sociale di tutti - oops! Quante altre di queste violazioni sono coperte?
Pensiero di chiusura
La cosa più spaventosa per me è quando le persone scelgono la stessa password o una password simile per più siti in modo che la violazione in uno dia accesso all'attaccante a tutti. Mi piacerebbe vedere un metodo collaudato per prevenire quella situazione, anche se penso che prevenire le password sbagliate più comuni sarebbe di aiuto più che impedire a un singolo utente di riutilizzare la propria password errata all'interno dello stesso sito. Il meglio che posso suggerire è una politica a livello aziendale per utilizzare un gestore di password sicuro che genera password altamente casuali per ciascuno dei tuoi utenti e le memorizza in modo sicuro.