Validación de contraseña para variaciones del nombre de usuario

No está directamente relacionado, pero fue motivado por Pwned Passwords Validator, ya que hemos estado investigando una validación de contraseñas más sólida recientemente.

Discourse no parece bloquear una contraseña como myusername123 o 4myusername para el nombre de usuario myusername.

No encontré ninguna discusión previa sobre este tipo específico de contraseña débil. ¿Se ha considerado esto antes?

5 Me gusta

Estoy de acuerdo en añadir una comprobación cuando los usuarios eligen una contraseña: ‘la contraseña no debe contener el nombre de usuario en minúsculas’. Me parece razonable.

Ya verificamos que password = username, pero no me gustan mucho las pruebas de subcadenas, especialmente para nombres de usuario cortos. ¿Qué pasa si tu nombre de usuario es “Ed” y tu contraseña es una cadena aleatoria que, por casualidad, contiene “ed”..?

3 Me gusta

¿Usar una puntuación de similitud como la distancia de Levenshtein y fallar si levenshtein(username, password) < 6? ¿O incluso algo para detectar también permutaciones, como esto:

levenshtein(sort_by_chars(username), sort_by_chars(password)) < 6

Parece que cubriría los peores abusos, sin prohibir que “Ed” se registre con una contraseña larga y agradable, y es fácil de explicar con precisión: “tu nombre de usuario y contraseña son demasiado similares”. No he buscado casos límite no deseados, pero en este momento no se me ocurre ninguno.

3 Me gusta

Tuit relacionado de hoy:

5 Me gusta

La otra cara de las reglas de ‘más y más’ es que se vuelve más fácil realizar ataques de fuerza bruta contra las contraseñas.

Claramente, ninguna contraseña debería tener la letra z repetida 10 veces si tiene 15 caracteres o menos.

Claramente, ninguna contraseña debería contener la palabra “password” si es más corta de 12 caracteres.

Dos palabras de diccionario seguidas, claramente incorrecto…

Y así sucesivamente. Por lo tanto, el espacio de búsqueda de contraseñas se reduce.

Este es un callejón sin salida; he cambiado de opinión desde ayer tras reflexionar sobre esto. Estoy de acuerdo con @codinghorror: creo que no necesitamos hacer nada al respecto.

3 Me gusta

“¿Es difícil crear buenas reglas, por lo que no deberíamos crear reglas”?

Esta es la segunda vez en dos días que veo a miembros de alto nivel del equipo de Discourse difundiendo conceptos erróneos graves sobre seguridad. Creo que hay aspectos generales que necesitan ser reconsiderados y espero que tomen esto como una retroalimentación constructiva.

Además, esta sugerencia específica no surge de la nada: recientemente tuvimos una cuenta de usuario comprometida porque el nombre de usuario era myusername y la contraseña tenía la forma myusername46.

Ciertamente, esto fue en un sitio de ClassicPress (la misma estructura de inicio de sesión que WordPress), por lo que es mucho más “fruta al alcance de la mano” en términos de bots, etc. Sin embargo, esto es algo que los bots buscan.

Las reglas de contraseña no pueden prevenir todo tipo de contraseñas deficientes, pero pueden ayudar en gran medida.

Técnicamente, estamos siguiendo las directrices de NIST 800-63-B:

Al procesar solicitudes para establecer y cambiar secretos memorizados, los verificadores DEBERÁN comparar los secretos prospectivos con una lista que contenga valores conocidos por ser de uso común, esperados o comprometidos. Por ejemplo, la lista PODRÍA incluir, pero no se limita a:

  • Contraseñas obtenidas de conjuntos de datos de brechas anteriores.
  • Palabras de diccionario.
  • Caracteres repetitivos o secuenciales (por ejemplo, ‘aaaaaa’, ‘1234abcd’).
  • Palabras específicas del contexto, como el nombre del servicio, el nombre de usuario y sus derivados.

Utilizan explícitamente la palabra PODRÍA en lugar de DEBERÁN. Por lo tanto, esto queda a nuestro criterio. No hay ninguna recomendación sobre Levenshtein aquí. Quizás si el nombre de usuario tiene más de 6 caracteres, no debería incluirse en la contraseña; quizás podríamos agregar una verificación de entropía además de la lista de 1 millón de contraseñas. No lo sé.

Supongo que si estás muy interesado en tener tus propias reglas aquí, puedes ejecutar SSO y establecer las reglas que desees en tu propio sistema. O bien, escribir un plugin.

3 Me gusta

Probablemente eso es lo que vamos a hacer. Aquí hay más cosas que faltan, pero las respuestas hasta ahora no me hacen pensar que valga especialmente la pena mencionarlo.

Por favor, comparte el plugin que has creado con la comunidad aquí en la categoría #plugin. No todos están de acuerdo con cada decisión que tomamos; respeto totalmente la diversidad y las opciones. Quizás a otros les interesen reglas de contraseñas más estrictas.

1 me gusta