Es estúpidamente simple sortear la mayoría de los conjuntos de reglas de complejidad de contraseñas evaluables de forma independiente; Longitud mínima, requisitos de casos, requisitos de caracteres no alfa. "Password1", a menos que su nombre sea Joe Password, superará la mayoría de los sistemas de reglas porque tiene al menos 8 caracteres, con mayúscula y un número. También es lo primero que intentará un crackbot.
La regla fundamental de cualquier requisito de complejidad de contraseña es, cuanto más difícil sea el uso del sistema, menos personas lo utilizarán . Esto va mucho más allá de las reglas de complejidad de las contraseñas, pero como la pantalla de inicio de sesión (y la pantalla de registro de usuarios a la que suele enlazar desde allí) es la primera interacción real entre el usuario y su sistema, cuanto más desagradable sea, menos querrán sus usuarios. para lidiar con eso, y contigo. Esto es especialmente importante si está intentando "vender" su sistema a los usuarios como un producto que no sabían que necesitaban, o si hay muchas alternativas para usted en el mercado (como un foro en línea). Los usuarios que se encuentren en esa situación dirán muy rápidamente "jódelo, estoy fuera", y es poco probable que todos los recuperen.
Algunas reglas adicionales siguen naturalmente. Una es que usted informe al usuario de manera clara y simple sobre las reglas que tiene implementadas, antes de que escriban algo . No es un problema de seguridad para las reglas de complejidad que usted exige que sean de conocimiento público, a menos que esas reglas disminuyan la posible entropía de contraseñas aceptables (que pueden cumplir las reglas, como la longitud máxima) y su usuario se sentirá mucho menos frustrado con su sistema de lo que lo estaría si tuviera que aprender las reglas mediante ingeniería inversa.
Otra regla es, no se desvíe demasiado de las reglas que los usuarios esperan . La mayoría de los usuarios son lo suficientemente inteligentes como para entender que la complejidad mínima es por su propio bien, y también saben que las barras que la mayoría de los sitios y aplicaciones configuran tienen una altura similar (mínimo de 6-8 caracteres, mayúscula y número, no puede contener ninguna de algunas palabras obvias como "contraseña"). La imposición de contraseñas ridículamente largas y complicadas que superan el estándar implícito (mínimo 20 caracteres, al menos dos grupos de al menos 4 números cada uno y al menos 5 símbolos) solo va a molestar a las personas, incluso si se les dice por adelantado.
La última meta-regla que declararé es, no imponer una regla por su propio bien . Nunca use una regla solo porque vio que otro sitio o aplicación lo hizo, o incluso simplemente porque es la mejor práctica. Hay razones detrás de las mejores prácticas, pero debe conocerlas y comprenderlas, incluso por qué es posible que no se apliquen a su situación, antes de mezclar una política de seguridad.
El conjunto de reglas que normalmente me gusta es:
- Longitud mínima de 8 caracteres.
- Símbolos de mayúsculas y minúsculas, números o .
- No se puede componer solo de una palabra del diccionario.
- No puede contener ninguna parte de su nombre, nombre de usuario o fecha de nacimiento (si sé estas cosas)
- No se puede tener una "contraseña prohibida" que sea el 50% o más de la contraseña. Las contraseñas prohibidas incluyen cualquiera que haya aparecido en la lista de los 25 mejores de SplashData, incluida la mayoría de los grandes como "Password", "letmein", "12345678" etc., así como cualquier cadena que sea "interesante" en la seguridad de TI ("correcthorsebatterystaple" , "orpheanbeholderscrydoubt") y cualquier contraseña previamente utilizada y conocida como comprometida. La lista completa sería relativamente corta y se mostrará fácilmente a los usuarios a través de un enlace de la lista de reglas.