¿Qué tan rápido pueden ser superados estos esquemas de contraseña?

21

Si utilizas un algoritmo de hash rápido como MD5 o SHA-1 para las contraseñas de hash y no usas ningún tipo de sal, ¿qué tan rápido se puede esperar que un hacker encuentre mi contraseña?

Si utilizo una sal verdaderamente aleatoria para cada usuario, ¿en qué orden de magnitud afectará la cantidad de tiempo para descifrar mi contraseña?

He oído que los algoritmos de hash como md5 o sha-1 se pueden calcular muy rápidamente y a gran escala, por lo que no debería usarlos para esquemas de contraseñas hoy. Pero sé que hay muchos sistemas por ahí que los usan, y tengo curiosidad por comprender qué tan rápido pueden ser superados estos sistemas, o si es más un problema teórico que no existirá realmente hasta dentro de una década. . Sé que la contraseña elegida por el usuario es muy importante aquí, y si puede incluirla en su respuesta, sería genial.

Como beneficio adicional, ¿qué algoritmos de hash son más seguros de usar?

    
pregunta Michael Berkhart 02.11.2011 - 19:27
fuente

4 respuestas

29

Suponga que no tiene una tabla de arco iris (u otra lista de hashes precomputada), y realmente necesitaría hacer un ataque de fuerza bruta o diccionario.

Este programa IGHASHGPU v0.90 afirma poder hacer aproximadamente 1300 millones de hashes SHA-1 ( es decir, más de 2 ^ 30) en cada segundo en una sola GPU ATI HD5870.

Suponga una contraseña de 40 bits de entropía, esto necesita 2 ^ 10 segundos, lo que equivale a unos 17 minutos.

Una contraseña de 44 bits de entropía ( like el del famoso cómic XKCD ) tarda 68 minutos (en el peor de los casos, el caso promedio es la mitad de esto).

La ejecución en varias GPU en paralelo acelera esto proporcionalmente.

Por lo tanto, la fuerza bruta con hashes rápidos es un peligro real, no teórico. Y muchas contraseñas tienen una entropía mucho menor, lo que hace que la fuerza bruta sea aún más rápida.

  

Si utilizo una sal verdaderamente aleatoria para cada usuario, en qué orden de magnitud   ¿Esto afectará la cantidad de tiempo para descifrar mi contraseña?

Se supone que el atacante conoce la propia sal, y por sí solo no aumenta mucho el tiempo de craqueo para una sola contraseña (podría aumentarla un poco, porque los datos de hash se vuelven un bloque más largos, pero eso como mucho duplica el trabajo).

El beneficio real de un salt (aleatorio independiente) es que un atacante no puede usar el mismo trabajo para atacar las contraseñas de varios usuarios al mismo tiempo. Cuando el atacante desea solo la contraseña de cualquier usuario (o "tantos como sea posible"), y tiene algunos millones de usuarios, no tener un salt podría reducir proporcionalmente el tiempo de ataque, incluso si todos los usuarios tuvieran contraseñas seguras. Y ciertamente no todos lo tendrán.

  

Como beneficio adicional, ¿qué algoritmos de hash son más seguros de usar?

El estándar actual es usar un algoritmo de hashing lento . PBKDF2, bcrypt o scrypt toman una contraseña y un salt como entrada y un factor de trabajo configurable: establezca este factor de trabajo tan alto como sus usuarios simplemente acepten el tiempo de inicio de sesión con el hardware de su servidor.

  • PBKDF2 es simplemente un hash rápido iterado (es decir, aún paralelizable de manera eficiente). (Es un esquema que se puede usar con diferentes algoritmos base. Use el algoritmo que esté utilizando de todos modos en su sistema).
  • Bcrypt necesita algo de memoria de trabajo (4KB) y, por lo tanto, se puede implementar de manera menos eficiente en una GPU con menos de 4KB de procesador por procesador caché.
  • Scrypt utiliza una gran cantidad de memoria (configurable) además del tiempo de procesamiento, lo que hace que sea extremadamente costoso paralelizar en GPU o personalizadas hardware, mientras que las computadoras "normales" usualmente tienen suficiente RAM disponible.

Todas estas funciones tienen una entrada de sal, y debe utilizarla .

    
respondido por el Paŭlo Ebermann 02.11.2011 - 20:03
fuente
7

Si no usa sales, el pirata informático puede simplemente escribirlas en Google y probablemente encontrarlas. MD5 encripta su contraseña, luego Google el resultado, y verá lo que quiero decir.

Si ha elegido una contraseña suficientemente compleja, es probable que no esté en Google, pero aún estará en tablas precalculadas llamadas "tablas arco iris" (las tablas completas ocuparían demasiado espacio, por lo que Se utiliza la técnica del "arco iris" para comprimirlos.

Si no se utilizan tablas, entonces no importa si la contraseña está incluida o no. Por supuesto, las tablas siempre se utilizan, por lo tanto, sí, debe agregar las contraseñas.

Una máquina de escritorio, con una tarjeta de juego (que también se puede usar para acelerar el descifrado de contraseñas) y calcular mil millones de hashes / segundo. ¿Qué tan rápido esto rompe su contraseña depende. Puede calcular todas las combinaciones de contraseñas cortas en unos pocos minutos. Pero el problema es exponencial, por lo que no puede calcular todas las combinaciones posibles para contraseñas largas, incluso si usó mil millones de computadoras durante mil millones de años.

En cambio, lo que hace un pirata informático es un crack de "diccionario mutado". Comienzan con una lista de palabras conocidas. Se llama "diccionario", pero esas listas contienen muchas palabras que no se encuentran en un diccionario real, como "ncc1701", la designación de Star Trek Enterprise. Para cada palabra, realiza una serie de mutaciones, como poner mayúsculas en algunas letras, cambiar algunas letras a números, como "p4ssw0rd", o agregar caracteres, como "password1234". La rapidez con la que funciona esto depende de la habilidad del hacker para elegir el diccionario correcto y las mutaciones correctas. Esto también puede cambiar dependiendo del conocimiento del hacker sobre usted. Por ejemplo, si eres hispano, el hacker agregará palabras y nombres en español al diccionario.

Puede esperar que si le roban su base de datos de contraseñas, el pirata informático podrá descifrar aproximadamente la mitad de las contraseñas con sal con un par de días de trabajo.

    
respondido por el Robert David Graham 02.11.2011 - 22:19
fuente
5

Bueno, si solo estás usando MD5 o SHA-1 sin sal, simplemente descarga una tabla de arco iris y agrégala de inmediato.

Aquí se puede encontrar un tema en las tablas del arco iris y cómo aprovechan una eficiencia un poco mejor que la fuerza bruta forzando una contraseña en el caso de una sal fija.

cuánto tiempo se tarda en realidad generar tablas arcoiris?

Además de los dos primeros, que se aplican a cualquier hash sin sal o con un sal fijo, MD5 tiene muchas vulnerabilidades de seguridad (lo que reduce el tiempo para descifrar la contraseña).

enlace

    
respondido por el StrangeWill 02.11.2011 - 19:42
fuente
3

Esta diapositiva describe la cantidad de inversión en hardware necesaria para descifrar una contraseña en 1 año:

Compara varios KDF, incluidos MD5, PBKDF2, bcrypt, scrypt con un número variable de rondas.

    
respondido por el random65537 03.04.2013 - 17:13
fuente

Lea otras preguntas en las etiquetas