Es un hecho que los usuarios elegirán contraseñas malas. ¿Por qué no ayudarlos? Con una elección segura y aleatoria de un diccionario grande, elija una o dos palabras y dígale al usuario que las escriba. Cuando inician sesión, requieren un nombre de usuario, contraseña y las palabras que se generaron. El hash de la contraseña se basa en la concatenación de la contraseña y las palabras secretas.
Esto proporciona un claro impulso de entropía desde la perspectiva de un atacante de hash cracking, y evita que la reutilización de la contraseña sea también un problema. Dado que la entropía proviene de la elección aleatoria de una lista, el servidor podría normalizar el caso y corregir automáticamente la ortografía antes del hash, para facilitar la tarea a los usuarios.
Creo que anotar contraseñas está bien en la mayoría de los casos, porque las personas generalmente son buenas para proteger la información confidencial que escriben. Al indicar al usuario que escriba las palabras secretas, se elimina la carga de memorizarlas. Todavía elegirán una contraseña para cumplir con los requisitos mínimos de complejidad (por ejemplo, un mínimo de 8 caracteres, 2 conjuntos de caracteres, 4 caracteres únicos), por lo que es probable que no escriban la clave de acceso completa (contraseña + palabras secretas).
Esta pregunta es una idea similar, pero en lugar de ofrecer opciones (lo que elimina la entropía, ya que los usuarios elegirán cosas que "tienen sentido"), las palabras se proporcionan directamente. Las palabras serían similares a las contraseñas antiguas de AOL distribuidas en sus CD-ROM .
EDIT : el contexto que imagino es un sitio web u otro sistema con muchos usuarios distribuidos. No estoy necesariamente sugiriendo esto para los sistemas de inicio de sesión corporativos.