Estoy diseñando un servicio que, entre otras cosas, almacenaría información confidencial. Para garantizar que no se obtenga acceso no autorizado a esta información, se cifrará con una clave derivada de su contraseña (PBKDF2). La contraseña se almacenará en un formato de hash BCrypt salted en la base de datos. Nunca se almacena en texto plano.
La naturaleza de la información guardada es tal que se necesita una contraseña segura. Algunos sitios web obligan a sus usuarios a crear contraseñas con una gran entropía mediante el cumplimiento de estrictas pautas de carácter. Estas contraseñas complejas pueden llevar a la reutilización de contraseñas en diferentes sitios web [1]. Esto es una cosa mala ™ [2].
Preferiría que mis usuarios seleccionen una contraseña que sea fuerte y que no sea muy probable que sea reutilizada o que ya esté en uso en otro servicio web menos seguro. Como tal, estaba pensando en usar un esquema de contraseña similar a XKCD [3] para mis usuarios en su idioma nativo.
Al usuario se le presentarán 4-5 palabras diferentes de una gran lista de palabras con más de 6 caracteres (no se incluyen palabras con caracteres especiales, solo ASCII). El diálogo de entrada de contraseña se formatearía con 4-5 campos en lugar del campo único normal, para reforzar el paradigma de frase de contraseña. Al registrarse, la contraseña se puede regenerar a voluntad, para que el usuario pueda seleccionar una frase de contraseña que contenga palabras que puedan recordar fácilmente. El usuario no puede ingresar sus propias palabras.
Sé por experiencia personal que CreeperHost [4] ya utiliza este método, aunque con un único campo de contraseña con cuatro palabras en inglés concatenadas.
Mis preguntas son las siguientes:
- ¿Este método sería más seguro / efectivo que permitir que los usuarios elijan el suyo?
- ¿Alguien tiene alguna experiencia con la implementación de un esquema similar? ¿Fue efectivo?
- ¿Es beneficioso dividir el campo de la contraseña en más de un campo o expone demasiada información?
Estoy buscando específicamente respuestas relacionadas con la aplicación en el mundo real de este método específico, si hay alguno. Estoy familiarizado con las fortalezas y debilidades teóricas de este método de generación de contraseñas.