Abbiamo una discussione nella nostra azienda sulla sicurezza delle password per la nostra applicazione.
Oltre al fatto che utilizziamo l'autenticazione a 2 fattori (certificati + login / password), al momento applichiamo password con almeno 12 caratteri di lunghezza.
Attualmente non esiste l'imposizione di utilizzare caratteri non alfanumerici. E dal mio punto di vista c'è poco o nessun guadagno in sicurezza, quando l'utente è costretto a mischiare caratteri (non) -alfanumerici.
Dalla mia comprensione se si ha l'alfabeto di possibili caratteri, l'entropia per 123456789012
e !"§$%&/()=!"
dovrebbe essere la stessa e entrambe le password dovrebbero avere lo "stesso grado" di sicurezza (le scelte fatte dall'alfabeto differiscono, ma l'alfabeto è lo stesso).
L'unica differenza sarebbe l'informazione all'attaccante, che la prima password utilizza solo un sottoinsieme dell'alfabeto, che ridurrebbe l'entropia.
D'altra parte, ciò che rende la prima password "insicura" è il fatto che è davvero prevedibile; le probabilità sono alte per una corrispondenza veloce se si usa un dizionario. Dato un hardware lento e un dizionario, sarebbe davvero importante scegliere uno sopra l'altro.
Ma con la potenza di oggi (GPU / Cloud) per bruteforcing la differenza di sicurezza è dal mio punto di vista trascurabile, quindi è giusto dire: uno è sicuro come l'altro.
tl; dr
La differenza di sicurezza tra 123456789012
e !"§$%&/()=!"
come password al giorno d'oggi trascurabile?
(hashing strong e utilizzo di sali presunti).