¿Fuerza bruta en orden o al azar?

1

¿Qué es más rápido, en promedio, para encontrar el texto sin formato original de un hash: fuerza bruta en orden, o con textos aleatorios aleatorios?

    
pregunta John 28.10.2013 - 17:44
fuente

3 respuestas

4

Matemáticamente, asumimos que el usuario crea su contraseña utilizando una distribución de probabilidad que el atacante conoce perfectamente . El atacante luego genera las contraseñas para probar en orden de plausibilidad. Cuando varias contraseñas tienen exactamente la misma probabilidad de ser elegidas por el usuario, entonces el orden en el que el atacante las intenta no importa para la tasa de éxito promedio.

La hipótesis del "conocimiento perfecto" por parte del atacante es la única que permite un análisis de riesgo sostenible. Por ejemplo, suponga que comienza en una situación en la que los usuarios eligen sus contraseñas al azar, de manera uniforme, en un conjunto de N posiblemente contraseñas. Los atacantes luego exploran las contraseñas en orden lexicográfico. Al darse cuenta de eso, un usuario puede decirse a sí mismo: "hey, comenzaré mi contraseña con 'zzz' para que los atacantes intenten que duren . ¡Qué astucia!". Sin embargo, esto no durará: los atacantes se adaptarán y comenzarán a probar las contraseñas en orden inverso . Nuestro ingenioso usuario elegirá una contraseña que comience con "mzz" o "naa", para estar en el centro del rango, a una "distancia segura" de ambos tipos de atacantes. Esto solo hará que algunos atacantes comiencen la exploración en la mitad del rango también. Y así sucesivamente ...

Este ejemplo muestra que la ventaja que un usuario puede obtener sobre los atacantes basándose en la asimetría de la información es, en el mejor de los casos, transitoria y no puede cuantificarse de manera confiable, ya que depende de la "inteligencia" y la velocidad de evolución de los atacantes. Así que preferimos suponer que los atacantes intentan contraseñas en el orden "óptimo", es decir, que ya saben cómo generamos las contraseñas.

En estas condiciones, lo mejor que el usuario puede esperar es una selección uniforme: cuando hay N posibles contraseñas, y cada contraseña tiene una probabilidad 1 / N de ser seleccionada , el costo promedio del ataque es N / 2 . Los puntos interesantes son:

  • Con una selección uniforme, el costo promedio del ataque es siempre _N / 2_; no hay una estrategia de selección que lo haga más rápido o más lento.
  • Cuando hay N posibles contraseñas, para cualquier distribución de probabilidad de selección, el costo promedio de ataque del mejor ataque siempre es, como máximo, N / 2 . Esto se ve fácilmente considerando que el atacante puede probar las contraseñas en un orden aleatorio, y que uno tendrá un costo promedio N / 2 independientemente de la estrategia del usuario.

Hasta cierto punto, esto significa que orden aleatorio es la estrategia del atacante que minimiza los riesgos del atacante . Explorar las N posibles contraseñas en un orden aleatorio garantiza un costo promedio de N / 2 , independientemente de la astucia que el usuario pueda haber tenido en su estrategia de selección de contraseña. Desde el punto de vista del atacante, el uso de un orden definido y específico corre el riesgo de ser superado por el usuario. Los atacantes también son seres racionales: asumimos que los atacantes tienen un conocimiento perfecto de nuestra estrategia de generación de contraseñas porque de otra manera no podríamos evaluar nuestros riesgos; de manera similar, los atacantes asumen que los usuarios podrían estar completamente al tanto del orden de la exploración del espacio de las contraseñas y seleccionar las contraseñas basándose en este conocimiento, por lo que los atacantes racionales reaccionan imponiendo un orden aleatorio.

Sin embargo, todo lo anterior es para un espacio limitado y conocido de posibles contraseñas. Esto es lo que se aplicaría, por ejemplo, a las contraseñas antiguas de Unix con la función "crypt" basada en DES : el espacio es el conjunto de todas las secuencias de 8 caracteres ASCII.

En muchos casos prácticos, el espacio de las contraseñas es más abierto, y el atacante tendrá una tasa de éxito bastante baja: descifrará algunas contraseñas, pero no todas. En ese caso, el orden de exploración de la contraseña no importa mucho: para cada contraseña, el atacante intenta un espacio completo de contraseñas N , que funciona (el espacio contiene las contraseñas del usuario) o, más a menudo , no. Para todos los casos en que el ataque no funciona, el costo del atacante será el de N intentos, ni más ni menos, y esto no depende del orden en que lo intente el atacante.

La respuesta práctica es: no importa .

    
respondido por el Thomas Pornin 28.10.2013 - 18:42
fuente
1

Estadísticamente debería hacer una pequeña diferencia, es el cálculo de hash que toma la potencia de cálculo y no la opción de texto sin formato. Supongo que si tuviera que hacer la elección me gustaría ir en orden simplemente porque podría ser un cálculo un poco menos intensivo, lo que con el tiempo podría hacer una pequeña diferencia, ya que puede permitir que el sistema ponga un poco más de memoria. y la CPU en la generación de hash.

Todo se reduce a cómo el desarrollador ha codificado el mecanismo para elegir texto sin formato de forma secuencial y aleatoria. Simplemente probaría ambas bajo condiciones controladas y vería si hay una diferencia significativa en las grietas por segundo.

En cuanto a si hay una razón estadística para elegir uno u otro, entonces no.

    
respondido por el GdD 28.10.2013 - 18:02
fuente
0

En la práctica, lo más rápido será ir en orden con la entrada clasificada de la mayoría a la menos común para las contraseñas comunes antes de pasar a cosas menos comunes. Si es realmente aleatorio, ir en orden vs aleatorio no hace ninguna diferencia estadística ya que sus probabilidades en cada conjetura son exactamente las mismas, pero en la práctica, las personas no son buenas en ser aleatorias, por lo que mejor puede reducir la aleatoriedad en sus conjeturas , más rápido obtendrás un golpe.

Aún no verás una diferencia estadística al elegir la fuerza bruta simple (a, b, c, ... aa, ab, ... etc), aunque la elección sea aleatoria. Tienes que poner algo de inteligencia en las conjeturas para hacerlo mejor que las aleatorias.

    
respondido por el AJ Henderson 28.10.2013 - 18:07
fuente

Lea otras preguntas en las etiquetas