Digamos que en la política de contraseñas el historial de contraseñas se define para recordar las últimas 10 contraseñas.
Entiendo que el historial de contraseñas existe, por lo que si un atacante recupera una contraseña de una base de datos comprometida, es probable que la contraseña no sea la contraseña actual del usuario.
Sin embargo, si al restablecer la contraseña periódicamente, los usuarios simplemente agregan '1' a su contraseña anterior, y en el próximo restablecimiento del período agrega digamos '2', esto disminuye considerablemente la efectividad de los restablecimientos periódicos de contraseñas. Tan pronto como el atacante recupere dos contraseñas antiguas del mismo usuario en texto claro, verá el patrón y podrá adivinar la contraseña actual actual del usuario ...
La mejor práctica es el hash (+ sal) de las contraseñas, sin embargo, por lo que puedo ver, esto hace imposible verificar si el usuario simplemente agregó un solo dígito a su contraseña anterior o no.
Las contraseñas podrían estar cifradas en lugar de con un hash, lo que resolvería mi preocupación, sin embargo, no me gusta la idea de que las contraseñas sean reversibles a texto simple sin ataques de fuerza bruta.
¿Me pregunto cuál sería la mejor solución para evitar que los usuarios realicen cambios menores en su contraseña anterior al restablecerla? ¿Se puede lograr técnicamente de una manera muy segura, o esto definitivamente requiere el conocimiento del usuario?