Diciamo che nel criterio password la cronologia della password è definita per ricordare le ultime 10 password.
Capisco che la cronologia delle password esista in modo che se una password viene ripristinata da un database compromesso da un utente malintenzionato, è molto probabile che la password sia effettivamente la password corrente dell'utente.
Tuttavia, se dopo la reimpostazione periodica della password, gli utenti aggiungono semplicemente "1" alla sua vecchia password e, al successivo azzeramento del periodo, aggiunge "2", ciò riduce notevolmente l'efficacia delle reimpostazioni periodiche della password. Non appena l'hacker recupera due vecchie password dello stesso utente in testo non crittografato, vedrà il modello e potrà indovinare la password attuale dell'utente dell'utente ...
La migliore pratica è quella delle password hash (+ salt), ma per quanto posso vedere questo rende impossibile verificare se l'utente abbia semplicemente aggiunto una singola cifra alla sua vecchia password o meno.
Le password potrebbero essere crittografate al posto dell'hashed, il che potrebbe risolvere la mia preoccupazione, tuttavia non mi piace l'idea che le password siano reversibili al testo normale senza attacchi bruteforce.
Mi chiedo quale sia la soluzione migliore per impedire agli utenti di apportare queste modifiche minori alla loro vecchia password quando la si ripristina? Può essere tecnicamente raggiunto in maniera molto sicura o richiede sicuramente la consapevolezza dell'utente?