Me he dado la tarea de escribir código que determina la fortaleza de una contraseña, y realmente quiero romper muchas de las formas ya establecidas que hacemos, ya que a menudo faltan, no están diseñadas de la manera correcta , o rápidamente se vuelven irrelevantes.
En general, veremos patrones en los que se ingresa una contraseña y se presenta un booleano "se necesitan 7 caracteres con letras y números". Más tarde, tuvimos un gráfico sin razón que muestra un "fuerte a débil "escala de clasificación (y variaciones donde este es un porcentaje). Hemos mejorado en este patrón, mucho mejor en realidad, donde pensamos en mostrar el tiempo del usuario a la fuerza bruta , explícitamente que muestra los motivos por los que se asignó la puntuación,
Ahora, realmente me gusta la presentación de estas dos últimas ideas, pero esa no es mi principal preocupación aquí, y mi pregunta no tiene nada que ver con la presentación de esta herramienta.
Mi pregunta es: ¿qué debe tener en cuenta un programa que genere un rango estimado de seguridad de contraseña?
Después de consultar la fuente de howsecureismypassword.net, vemos que hace algunas cosas interesantes, como mantener una lista de las 500 contraseñas más comunes, agrupa las contraseñas por clases de caracteres que están involucradas y relaciona un meta-score con un estimado tiempo para romper un montón de valores hash en ese rango. Hay algunos problemas con esto, como las 500 contraseñas principales no reflejan las "500 principales" actuales, sino las que al momento de escribir el código, lo mismo ocurre con las velocidades de descifrado de contraseñas y los ataques que pueden no terminar usando bruta. fuerza.
Veo problemas similares con passwordmeter.com, pero más en el sentido de que se ejecuta en el mejor de los casos en lugar de en los peores escenarios.
Así que mi pregunta es
¿En qué debo pensar para medir el puntaje de seguridad de una contraseña en el momento "ahora"?