Estoy realizando un estudio sobre contraseñas y necesito un método que asigne un valor numérico a la complejidad de una contraseña

8

Actualmente soy estudiante y estoy realizando un proyecto de feria de ciencias para mi escuela secundaria. El estudio consiste en recopilar contraseñas generadas por humanos y probarlas para determinar su complejidad o "capacidad de descifrado", para determinar qué requisitos / criterios de contraseña animan a los usuarios a generar contraseñas seguras.

Necesito algún sistema que evalúe cada contraseña por lo segura que es. Consideré usar la fórmula del NIST para calcular la entropía de los datos, pero luego me di cuenta de lo poco realista que es la entropía para medir la capacidad de crack. También he leído algunos de los estudios de Matthew Weir y me gustaría, si es posible, usar su sistema, PCFG Generator. He encontrado la descarga y las instrucciones aquí , pero como estudiante, Todavía soy incapaz de averiguar cómo usarlo exactamente.

Cualquier sistema confiable para predecir la posibilidad de adivinar una contraseña sería muy útil, siempre y cuando considere herramientas comunes de craqueo (ataques de diccionario, como JtR). Cualquier ayuda sería muy apreciada.

¡Gracias!

    
pregunta EleanordaBeast 06.12.2017 - 16:34
fuente

2 respuestas

9

En resumen, no hay una manera confiable de hacer esto. Tu programa tendría que implementar un conjunto de reglas. Los humanos entonces trabajan alrededor de estos. Es decir. requerir un número hace que el 99% del promedio de las contraseñas de los usuarios no sea más seguro, solo agregan un 1 al final de la contraseña existente. Lo mismo con los símbolos.

"p @ 55w0rd!" obtendría un alto puntaje en muchos intentos previos de calificar contraseñas. Como lo haría "¡Esta es mi contraseña!". Mientras tanto, "lbvgjnwhha" (generado aleatoriamente) obtendría una puntuación baja porque es una cadena bastante corta de todas las letras en minúscula.

En su lugar, consideraría un enfoque diferente. Esta página , por ejemplo, puede verificar una contraseña contra cientos de millones de contraseñas conocidas que se han filtrado. Esto debería derrotar a la mayoría de los ataques no dirigidos (es decir, atributos personales como apellido, fecha de nacimiento, etc.). Podría demostrar esto (o descargar las listas hash de contraseñas completas y escribir una herramienta para calcular el hash para una contraseña ingresada y verificarla en la lista) mientras explica las mejores prácticas de contraseña & Los beneficios de la autenticación de dos factores.

    
respondido por el Hector 06.12.2017 - 16:49
fuente
2

Primero creo que es prudente entender la entropía de las contraseñas matemáticas. La wiki en Seguridad de la contraseña es un buen lugar para comenzar, pero en resumen, la entropía de la contraseña es probable que se pueda adivinar una contraseña dado un conjunto de símbolos.

Esto no es ni complejidad ni "habilidad de crack", la entropía se excluye mutuamente, estos dos conceptos no lo son.

Es importante entender primero la entropía porque tiene dos requisitos:

  • Número de símbolos
  • La longitud de esos símbolos

Número de símbolos

El número de símbolos proporcionado es una línea de base para el número de bits de entropía por símbolo. El alfabeto en mayúsculas solo no tiene los mismos bits de entropía como si incluyera también los símbolos en minúsculas. Si incluyes números, la entropía por símbolo aumenta. Cuantos más símbolos agregue, más bits de entropía obtendrá por símbolo, en otros términos, cuanto mayor sea su conjunto de símbolos, mayor será la entropía para cada símbolo.

Longitud de los símbolos

La longitud de los símbolos es importante porque cada símbolo agregado duplica efectivamente la entropía. Esta es la razón por la cual la longitud sola es un concepto tan importante que se inserta en la seguridad de la contraseña.

¿Qué es la complejidad?

La complejidad de una contraseña son las reglas que implementamos para hacer cumplir la "aleatoriedad" de las contraseñas. Aquí están las reglas básicas:

  • mayúsculas
  • minúsculas
  • número
  • carácter especial

Estos son comunes a la mayoría de las personas. Los sitios web lo utilizan todo el tiempo para intentar forzar a las personas a la aleatoriedad. Nosotros, sin embargo, no somos aleatorios. Esta es la razón por la cual los atacantes pueden usar algo como ataques de diccionario y algoritmos predictivos para adivinar contraseñas.

Sin embargo, va más allá de incluir medidas de seguridad como:

  • Se utiliza cifrado o hash
  • La fuerza de una sal
  • Seguridad de una clave privada

y así sucesivamente.

Crack-ability

Esto es mucho más complicado que un simple post aquí. Sin embargo, es un tema interesante (menos para mí :)). La habilidad de crack es subjetiva, y la parte que debe comprender es que solo puede medir este concepto en base a un conjunto de reglas definidas. (No puedo decir una palabra mejor, no me gusta la "habilidad de crack", pero estoy bastante seguro de que entiendo lo que preguntas).

PCFG Generator

Dependiendo de lo que intentes definir utilizando el PCFG puede ser bastante complejo. Lo básico de un PCFG es que si lo alimenta con algo, palabras comunes, frases, etc., proporciona una probabilidad de lo que podría seleccionarse a continuación. Puede ver esto en la vida cotidiana utilizando teléfonos inteligentes con texto predictivo. (¿Alguna vez notaste que cuando empezaste a usarlo, las conjeturas eran mías y ahora es bastante bueno saber lo que vas a decir?)

Podrías alimentarlo con contraseñas comunes, y luego verificar que probablemente una persona use esa contraseña.

Para su proyecto, a menos que esté tratando de evaluar la probabilidad de que una persona elija una contraseña, sugeriría buscar otra cosa.

    
respondido por el Shane Andrie 06.12.2017 - 18:33
fuente

Lea otras preguntas en las etiquetas