¿Cuánto tiempo tomará descifrar las contraseñas robadas en el hack de Yahoo anunciado el 14 de diciembre de 2016?

78

Aparentemente, Yahoo fue hackeado nuevamente con hasta mil millones de cuentas de usuario estar comprometido. El artículo dice que Yahoo usa MD5 para el hashing de contraseñas.

¿Es probable que los hackers también puedan descifrar las contraseñas? ¿Cuánto tiempo tomará para descifrar 1 contraseña? ¿Es el momento de romper 1 billón, solo 1B * t?

    
pregunta soadyp 15.12.2016 - 08:09
fuente

4 respuestas

69

Sí, probablemente pudieron descifrar muchas de las contraseñas en poco tiempo.

De la declaración oficial de Yahoo :

  

Para las cuentas potencialmente afectadas, la información de la cuenta de usuario robada puede haber incluido nombres, direcciones de correo electrónico, números de teléfono, fechas de nacimiento, contraseñas con hash (con MD5) y, en algunos casos, cifradas o no cifradas preguntas y respuestas de seguridad.

MD5 es un disputable elección para el hashing de contraseñas porque su velocidad hace que las contraseñas con hash MD5 realmente rápidas . Además, es probable que no estén salados, ya que Yahoo ciertamente nos lo habría hecho saber. (Una sal hubiera ayudado a prevenir el uso de tablas arco iris mientras se agrieta).

Puede ver los inconvenientes del hash MD5 simple cuando lo compara con el incumplimiento de Ashley Madison en 2015, que filtró 36 millones de cuentas. En ese caso, utilizaron bcrypt con 2 12 expansión de teclas rondas a diferencia de la simple MD5 de Yahoo, que es la razón por la que en ese entonces los investigadores solo pudieron descifrar 4,000 contraseñas en un primer intento.

Del artículo:

  

En el caso de Pierce, bcrypt limitó la velocidad de su plataforma de craqueo de cuatro GPU a 156 suposiciones por segundo.   [...]   A diferencia del extremadamente lento y computacionalmente exigente bcrypt, MD5, SHA1, y una serie de otros algoritmos de hash fueron diseñados para poner un mínimo de tensión en los accesorios ligeros. Eso es bueno para los fabricantes de enrutadores, por ejemplo, y es aún mejor para los crackers. Si Ashley Madison hubiera usado MD5, por ejemplo, el servidor de Pierce podría haber completado 11 millones de 1 suposiciones por segundo , una velocidad que le habría permitido probar los 36 millones de hashes de contraseñas en 3.7 años si estaban salados y solo tres segundos si no estaban salados (muchos sitios aún no contienen sal).

Por lo tanto, descifrar una gran parte de las contraseñas de Yahoo es cuestión de segundos (mientras que algunas contraseñas más sólidas permanecerán intactas). Una respuesta exacta dependería de la potencia de cómputo disponible y del conocimiento de seguridad de la contraseña de los clientes de Yahoo.

1 Como @grc ha observado, 11 millones de hashes por segundo parecen bastante lentos. El enlace 8x Nvidia GTX 1080 Hashcat benchmark (200.3 GH / s para un total de MD5) es un buen recurso para obtener más información. medidas hasta la fecha.

    
respondido por el Arminius 15.12.2016 - 08:15
fuente
22

(El resumen está en el último párrafo.)

  

¿Cuánto tiempo tomará para descifrar 1 contraseña? ¿Es el momento de romper 1 mil millones, solo 1e9 * t ?

Imagina que tengo este algoritmo de hash:

function hash(password):
    hash = 0
    foreach character in password:
        hash = hash + toNumber(character)
    return hash

Si llama a hash("ab") , puede devolver 3, ya que el valor numérico del primer carácter podría ser 1 y el segundo podría ser 2, y los suma, lo que da como resultado 3.

Ahora, si tiene una base de datos llena de números, como 583, 140, 8582, etc., ¿cuánto tiempo tomará para descifrarlo?

En este ejemplo, hash("ab") resultaría en 3 así como en hash("ba") , lo que se denomina colisión (dos entradas que se asignan a la misma salida). En md5 esto no sucede tan fácilmente. El orden importa y no puede obtener ninguna información sobre la entrada dada la salida. Ni siquiera la longitud.

Así que tienes que recurrir a probar todas las posibilidades hasta que encuentres una que te ofrezca la salida correcta. Si alguien tiene una contraseña fuerte, aleatoria, de 20 caracteres, podría llevar siglos. Pero la mayoría de la gente usa contraseñas como "horselover49", "letmein" o "pene" (aunque este último podría ser demasiado corto), que son mucho más fáciles de descifrar.

La razón por la que todos se quejan del uso de md5 es porque es rápido. Pero los algoritmos de hash están hechos para ser rápidos . MD5 puede romperse para otros propósitos, pero no es para el hashing de contraseñas. Simplemente no debes usar una sola pasada de cualquier algoritmo de hashing, ya sea md5 o sha1 o sha512.

Mejores algoritmos, como bcrypt / scrypt / pbkdf2 / etc. use un algoritmo de hashing un millón de veces (entre otras cosas). Ahora, en lugar de poder ejecutar el algoritmo una vez por cada conjetura, debe ejecutarlo un millón de veces por cada conjetura. Eso lleva mucho más tiempo, lo que le permite probar menos contraseñas, lo que protege mejor las contraseñas débiles.

Entonces, sí, ocurrirá lo mismo que con otras infracciones que utilizaron MD5: se descifrarán muchas contraseñas. Pero no todos serán rajados y definitivamente no en tiempo lineal. Los más fuertes tomarán exponencialmente más tiempo.

    
respondido por el Luc 15.12.2016 - 09:03
fuente
5

Recuerde que el tiempo para comenzar a obtener contraseñas utilizables fuera del sistema es mucho menos que el tiempo para encontrar la contraseña de cualquier usuario en particular. Elija una contraseña, haga un hash, encuentre a todos los usuarios cuya contraseña tenga un hash de ese valor (extremadamente rápido si previamente ha almacenado a los usuarios en una tabla de hash codificada por el hash de la contraseña), repita. En esta gran cantidad de usuarios, es probable que casi cualquier contraseña tenga a alguien que la use, y las contraseñas comunes / descuidadas tendrán mucha gente que las use.

    
respondido por el keshlam 17.12.2016 - 02:01
fuente
3

No sabemos sin información adicional.

Primero, se ha dicho "usaron MD5". Tomar una contraseña y codificarla con MD5 es muy, muy rápido. Como se ha dicho, hay máquinas que pueden hacer 28 mil millones de conjeturas de contraseña y calcular códigos hash MD5 por segundo. Eso sería malo. Sin embargo, podrían haber usado múltiples rondas de hash con MD5. Es posible que hayan pirateado la contraseña y luego hash el resultado de millones de veces más. Ahora el número de contraseñas que se pueden adivinar y el hash calculado es "solo" 28,000 por segundo.

En segundo lugar, necesitamos saber si las contraseñas fueron "salted". La contraseña "salada" significa que para cada usuario, se agrega una "sal" diferente a la contraseña. Por ejemplo, si usé estúpidamente la contraseña 1234 y usted usó estúpidamente la misma contraseña, entonces nuestras contraseñas "reales" podrían ser k39fja0eflaei-1234 y oe0vnda9afnlad-1234. Entonces, incluso si mi contraseña está descifrada, esto no ayuda a descifrar su contraseña. Cada contraseña tiene que ser crackeada individualmente.

Con contraseñas sin sal, cada una de las 28,000 adivinanzas de contraseña tendrá éxito si cualquiera de los mil millones de usuarios usaron esa contraseña. Así que con unos pocos miles de millones de conjeturas, todas las contraseñas más fáciles se descifran. Con las contraseñas con sal, se necesitan unos cuantos miles de millones de conjeturas que solo le proporcionarán algunas contraseñas fáciles. Pero si usaron MD5 simple, entonces 28 mil millones de conjeturas de contraseña por segundo resolverán las cosas bastante rápido, incluso con la salazón.

    
respondido por el gnasher729 18.12.2016 - 18:56
fuente

Lea otras preguntas en las etiquetas