Hubo un par de preguntas sobre la aplicación de contraseñas buenas, así que pensé en agregar las mías:
Además de imponer un mínimo de entropía de Shannon, en general sería una buena práctica prohibir el uso de contraseñas o elementos específicos directamente, según criterios tales como:
- Apareció al menos una vez en la lista "Top 25" de SplashData ("password", "letmein", "qwerty")
- Nombre propio públicamente famoso ("parishilton", "hasselhoff")
- "Interesante" en el campo de la seguridad de TI ("correcthorsebatterystaple", "orpheanbeholderscrydoubt")
- Cualquier contraseña utilizada anteriormente en nuestro sistema y que se sepa que se ha comprometido
- etc.
Obviamente, todas estas opciones son realmente malas para las contraseñas, y sin embargo, al menos la primera categoría es mala porque se usan con tanta frecuencia. La lección es obvia; no permita que sus usuarios usen estas contraseñas malas.
Sería trivial tomar una contraseña enviada, eliminar espacios y convertir todas las letras a minúsculas, y luego ejecutar una comparación "contenida" con los elementos de la lista negra, subvirtiendo los intentos de agregar entropía usando espacios, mayúsculas o agregando letras adicionales números. Sería un poco más difícil, no imposible, detectar sustituciones de letras (quizás una distancia mínima de Levenshtein). También sería fácil almacenar la razón por la que la entrada está prohibida y devolvérsela al usuario, alentándolos a probar algo sustancialmente diferente y, con suerte, más impredecible (aunque esa razón específica de rechazo podría proporcionar demasiada información si el "usuario "es un atacante).
¿Bien en teoría? ¿Qué problemas podrías prever en la práctica?