¿Cómo podemos medir con precisión el rango de entropía de una contraseña?

25

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"?

    
pregunta Incognito 18.06.2011 - 20:37
fuente

3 respuestas

16

El mejor trabajo en esta área que he visto es el de Matt Weir en Reusable Security: Nuevo documento sobre las métricas de seguridad de contraseña (2010) . Describe la diferencia entre "entropía de Shannon" y "entropía de adivinación". También tiene un método interesante para tomar una contraseña para un usuario, analizarla y ofrecer sugerencias para mejorarla:

  

.... otros métodos para políticas de creación de contraseñas, incluido nuestro   Método propuesto para evaluar la probabilidad de un humano generado.   contraseña al analizarla con una gramática entrenada en previamente divulgada   listas de contraseñas Esto nos permite construir una función de rechazo más robusta.   en comparación con una lista negra simple, mientras intenta proporcionar la mayor   La libertad del usuario es posible, dadas las restricciones de seguridad del sistema,   al seleccionar sus contraseñas.

Actualización : como lo señala el usuario 185, el Apéndice A de Pauta de autenticación electrónica NIST de 2006, revisada en 2013, también es muy útil. Entra en detalles sobre el cálculo de estos dos términos:

  

"como   aplicada a una distribución de contraseñas, la adivinación de adivinación es, en términos generales, una   estimación de la cantidad promedio de trabajo requerido para adivinar la contraseña de un usuario seleccionado,   y min-entropy es una medida de la dificultad de adivinar la contraseña única más fácil   Adivinar en la población.

Tenga en cuenta que esta pregunta está estrechamente relacionada:

respondido por el nealmcb 19.06.2011 - 00:03
fuente
6

El Apéndice A de Pauta de autenticación electrónica NIST detalla el método que utilizan para construir la entropía frente a la tabla de longitud de contraseña A.1, incluidas algunas referencias para lecturas adicionales.

    
respondido por el user185 20.06.2011 - 11:32
fuente
1

Creo que deberías tener en cuenta las diversas formas en que una contraseña es realmente atacada, lo que requerirá cierta investigación. Obviamente, una contraseña que esté completamente compuesta de una coincidencia exacta con una contraseña común debe tener una fuerza "muy débil" (o debe ser rechazada de manera absoluta). Probablemente debería expandir esto buscando listas de palabras "predeterminadas" o de uso común que el script kiddies definitivamente intentará al descifrar una contraseña; hay listas disponibles de decenas de miles de contraseñas (o más) que definitivamente se probarán contra sus usuarios si alguna vez se filtra su base de datos. Así que incluya esos en su "contraseña común".

Pero los crackers ciertamente no se limitan a una simple búsqueda de "coincidencia exacta", por lo que su medidor de fuerza tampoco debería hacerlo. Investigue los patrones comunes utilizados por los crackers, como combinar dos palabras del diccionario de contraseñas, o sustituir letras por números u otros tipos de sustituciones "1337 habla" (por ejemplo, "p @ ssw0rd $ 4r3 4w3 $ 0m3! 1 "). El sitio howsecureismypassword.net que usted menciona falla aquí: califica a "passwordpassword" como "345 mil años" a crack, lo cual es absurdamente incorrecto. Supongo que eso caerá en menos de un segundo. Estas no son las únicas reglas a considerar; muchas contraseñas siguen patrones muy simples como {capital letter}{6 lowercase letters}{number}! , que son mucho menos seguros que 9 caracteres aleatorios (pero aún así ligeramente mejores que una simple coincidencia de diccionario). También se intentará una variedad de tales patrones comunes antes de recurrir a la fuerza bruta.

La forma en que maneje estas transformaciones o coincidencias de palabras depende de usted; pero independientemente de que se deben tener en cuenta de alguna manera. Una cosa a tener en cuenta es cómo las herramientas de código abierto han manejado esto.

Como ejemplo, la función de estimación de calidad para el administrador de contraseñas de KeePass maneja esto calculando una entropía basada en cuántos patrones se usan para crear la contraseña, y la fuerza de ese patrón, en lugar de usar conteos de caracteres, si se detectan patrones. En versiones anteriores del software, una entropía basada en el conteo ingenuo simplemente se penalizaba en base a patrones reconocidos. Probablemente podrías hacerlo bien con cualquiera de los dos métodos. El truco será mantener los patrones actualizados con los avances en el descifrado, pero al menos dar cuenta de las cosas realmente básicas podría tener mejoras drásticas en la fortaleza de las contraseñas de sus usuarios, especialmente si explica en la interfaz qué patrones comunes por los que se adivinarán sus contraseñas.

    
respondido por el Ben 13.01.2016 - 18:10
fuente

Lea otras preguntas en las etiquetas