Rompiendo un hash MD5 desde una entrada numérica

3

Estoy intentando descifrar uno de los múltiples hashes MD5 que se han creado a partir de una entrada numérica.

Tengo una muestra de 1000 hashes MD5 que se generan a partir de una entrada numérica. Sé que la entrada está en algún lugar entre 10^6 y 10^27 .

¿Hay alguna posibilidad de descifrar de manera confiable 1 hash de mi muestra (o concluir de nuevo a un rango más limitado de posibles entradas)?

Traté de calcular cuánto tiempo necesitaría para descifrar un hash de mi muestra manualmente al poder calcular 10^9 hashes por segundo de entrada numérica (con oclHashcat), pero no hay ninguna posibilidad de que obtenga el resultado mientras aún esté vivo.

Entonces, ¿hay alguna tabla arco iris realmente grande por ahí, algún método matemático o debilidad MD5 que no conozca y que me pueda ayudar?

Supongo que no hay forma de calcular ni siquiera una distancia "aproximada" entre dos entradas MD5 de los hashes, por lo que, dado mis muestras, no puedo deducir un rango numérico reducido de entradas posibles, lo que también ayudaría (- pero que obviamente no está muy lejos de agrietarse).

Entonces, dado que se dice que el MD5 es muy débil, ¿hay alguna posibilidad de descifrarlo en la práctica con grandes entradas numéricas?

    
pregunta Michael Helwig 06.04.2017 - 11:20
fuente

2 respuestas

1

Obviamente, es demasiado tarde para ayudarte, pero ¿por qué no responder de todos modos? La respuesta corta es que su comprensión es correcta: no hay mucho que pueda hacer al analizar los hashes para determinar el rango de valores posibles. Tu única opción son las variaciones de la fuerza bruta, pero si los números se reparten por todo el espacio de búsqueda, no hay nada que nadie pueda hacer, incluso con toda la potencia informática del mundo. Sin embargo, aquí están los tipos de cosas que intentaría:

1. Búsqueda de hash previamente calculada

Para un hash MD5 simple (sin sal) este es el punto de inicio más fácil. Una búsqueda rápida en Google le ofrecerá una gran cantidad de servicios que "crackearán" los hashes MD5, ya que ya contienen una gran base de datos de valores MD5 para una amplia variedad de entradas. Desafortunadamente para usted, estas están generalmente destinadas a descifrar contraseñas, por lo que ninguna de las que encontré en línea contiene entradas de solo números, especialmente en el rango que está viendo (la mayoría contiene palabras reales, variaciones de palabras, combinaciones de palabras o todas las combinaciones) de cadenas alfanuméricas hasta ciertas longitudes). Desafortunadamente, esto no funciona para ti.

2. Estimación del rango de valores

Por lo tanto, su primer objetivo debe ser determinar cuál es el rango potencial de valores. Debería poder al menos averiguar si puede resolver esto en un tiempo razonable. Usted hace esto, simplemente, comenzando desde la parte inferior de su rango ( 1000000 ) y trabajando de manera ascendente, un número a la vez, durante un período de tiempo razonable (¿tal vez una hora?). Usted citó una tasa de hash de 1e9 / s (o 1GHs / s). Después de una hora, eso significa que habrá probado los números 3.6e12. ¿Encontraste una coincidencia?

2a. ¡Encontraste un partido en una hora!

Si es así, encontraste una coincidencia, entonces el problema se resolvió. Incluso puede comenzar a estimar el rango de valores que ocupan los números y el tiempo que puede tardar en encontrarlos todos. Hasta cierto punto, esta es una variación del problema del tanque alemán . No voy a pretender saber cómo hacer cálculos matemáticos con precisión desde mi mente, por lo que puede pedir ayuda para estimar el rango total de números de sus datos (y, por lo tanto, cuánto tiempo puede esperar. para encontrarlos a todos), o prueba algo ingenuo como:

hours_to_crack_everything = 1000/number_found_in_first_hour

Obviamente, su estimación será más precisa a medida que encuentre más. Es importante que siempre haya una posibilidad de que tengas mucha suerte. Podría ser que los números cubran el rango completo de valores permitidos ( 1e6 - 1e27 y resultó que había uno en los primeros trillones de valores. Las probabilidades de que esto ocurra son muy pequeñas ( 3.6e-15 ), por lo que Si do encuentra un valor, prácticamente garantiza que los números cubren un rango mucho más pequeño, pero quién sabe, tal vez acaba de ganar la lotería (aunque para ser justos, sus probabilidades de ganar la lotería son mucho, mucho mejores). ).

2b. Una hora, no hay partido

Si no encontraste una coincidencia en una hora, entonces probablemente estés jodido. Usted dijo en un comentario que tiene 11.5 días disponibles ( 10e6 segundos). Después de una hora, ya ha consumido aproximadamente 1/300 de su tiempo disponible. Como resultado, dado que solo ha cubierto una fracción minúscula de su espacio de búsqueda en una fracción mucho mayor de su tiempo disponible, lo más probable es que no sea posible encontrar un solo hash en el período de tiempo asignado. Probablemente solo deje correr mi hash box (porque esa es la única opción disponible para ti en la que puedo pensar), pero lo más probable es que fallarás.

3. Hash más rápido?

Vale la pena mencionar: en estos días puede obtener plataformas de hash (por unos pocos miles de dólares) con tasas de hash mucho más altas. Sin embargo, se aplica la misma matemática básica. Incluso con una tasa de hash un factor de 1000 más alto, con un espacio de búsqueda tan grande, solo hay dos opciones: los números no llenan todo el espacio de búsqueda, en cuyo caso hay esperanza, o llenan todo el espacio. el espacio de búsqueda, que es demasiado grande para poder atacar a la fuerza con la tecnología actual.

Irónicamente, sus probabilidades de éxito hubieran sido mayores si hubieran sido contraseñas en lugar de números.

    
respondido por el Conor Mancone 31.08.2018 - 20:33
fuente
1

Si bien se considera inseguro, el MD5 aún se considera resistente a la preimagen, por lo que su mejor opción aún es la fuerza bruta.

Saber algo de información sobre la entrada te ayudará en el proceso de fuerza bruta, pero no hay ninguna debilidad conocida que pueda ayudarte.

    
respondido por el Benoit Esnard 04.03.2018 - 15:21
fuente

Lea otras preguntas en las etiquetas