Sistema de contraseñas, posibles soluciones

1

Estoy intentando resolver un problema con un sistema de contraseñas. Necesito averiguar la probabilidad de que la contraseña sea adivinada.

Si tengo una contraseña alfanumérica de 8 caracteres.

no puede ser todo # 's, lo que significa que debe tener una letra no puede tener caracteres en secuencia (ej. abcdefgh o a1234567) no puede tener la palabra "johnbook"

    
pregunta Greg 25.10.2011 - 23:03
fuente

2 respuestas

4

Escribo las reglas: ocho caracteres, no todos los dígitos, ninguna secuencia incrustada (donde una secuencia es al menos dos letras o dígitos sucesivos donde uno es "uno más" o "uno menos" que el anterior), y no "johnbook".

Si consideramos los caracteres de izquierda a derecha, entonces tenemos 36 opciones para el primer carácter y luego 34 para cada carácter subsiguiente (debido a la regla de "no secuencia": después de una 'm' no puedes tener un ' l 'o una' n '). Esto significa 36 * 34 7 = 1890840605184 posibles contraseñas, pero tenemos que ajustar eso para tener en cuenta las otras reglas: debemos eliminar las contraseñas de todos los dígitos (10 * 9 7 = 47829690 contraseñas) y también "johnbook" (1 contraseña). El total general es entonces: 1890792775493 contraseñas. Si elige la contraseña con perfecta uniformidad, entonces el atacante tiene exactamente 1 posibilidad de adivinar la contraseña en su primer intento. En promedio, el atacante intentará 945396387747 contraseñas antes de golpear la correcta.

Tenga en cuenta que asumí lo siguiente:

  • solo letras minúsculas (para tener en cuenta las mayúsculas, cambie de 34 a 60 y de 36 a 52);
  • la prohibición de secuencias comienza en secuencias de dos caracteres (prohibimos 'ef', no solo 'efg') e incluye secuencias decrecientes ('gfe' también es malo);
  • las secuencias "envuelven" el final del alfabeto ('za' es una secuencia, y también lo es '90').

Tales reglas pueden hacer que tus usuarios se sientan malhumorados.

    
respondido por el Thomas Pornin 25.10.2011 - 23:37
fuente
4

En general, la probabilidad se reduce al tamaño del rango. Por lo tanto, para, digamos, una contraseña de 4 caracteres, el espacio de la contraseña es el número de caracteres disponibles elevado a la potencia del número de lugares en la contraseña.

Por ejemplo, un pin de banco - 4 dígitos, 10 caracteres (0-9) - 1000 contraseñas posibles, lo que hace que la probabilidad sea 1/10000.

Ahora su problema es más difícil, ya que su rango no es todas las contraseñas disponibles, ha eliminado algunas de las contraseñas altamente adivinables. Lo que tendrá que hacer es averiguar cuántas contraseñas potenciales se eliminan con cada regla, y asegúrese de tener en cuenta la superposición de reglas ... por ejemplo, 12345678 es una secuencia Y todos los caracteres. Luego tome el espacio total de la contraseña, reste las contraseñas que están prohibidas por cada regla, asegurándose de no contar un tipo de contraseña determinado dos veces.

No estoy seguro de lo que quieres decir con "no puede tener la palabra" johnbook "" quizás estoy siendo demasiado literal, obviamente "johnbook" es solo una contraseña. ¿Quiere decir que no puede tener esa palabra en particular, o que no puede tener ningún nombre común conocido o combinación de palabras cortas? Por ejemplo, ¿está prohibido "bethdesk"? ¿Cuál es el tamaño del diccionario que se está verificando y todas las combinaciones de palabras son largas y cortas prohibidas? Debería poder usar la combinatoria para resolver esto, pero necesita el algoritmo o las reglas de verificación de la contraseña para saber cuánto limita el tamaño del espacio de la contraseña.

Además, prácticamente cualquier combinación de palabras también será una secuencia de "todos los caracteres", ¿así que básicamente lo eliminó o el sistema está comprobando sustituciones obvias, como "passw0rd"?

    
respondido por el bethlakshmi 25.10.2011 - 23:36
fuente

Lea otras preguntas en las etiquetas