¿La resistencia de fuerza bruta de bcrypt versus MD5 para el hashing de contraseñas?

6

¿Puede alguien darme una idea? Supongamos que la (s) sal (es) son conocidas (s).

Por ejemplo, si tengo una contraseña larga de $ k $ caracterizada como hash en MD5 en comparación con bcrypt, ¿hay una manera de estimar cuánto más tomaría la fuerza bruta en bcrypt contra MD5? >

Sé que esta es una pregunta vaga que depende de muchos factores, pero siéntete libre de asumir cualquier factor que desees. Solo busco tener una idea intuitiva de las diferencias.

    
pregunta user49572 18.06.2014 - 21:36
fuente

1 respuesta

15

Bcrypt usa un número de iteraciones configurables, por lo que la respuesta a tu pregunta es: lo que quieras ser .

Si el recuento de iteraciones es tal que una invocación de bcrypt es tan costosa como 10 cálculos de MD5, entonces la contraseña de forzado es más 10 veces más cara con bcrypt que con MD5.

Si el recuento de iteraciones es tal que una invocación de bcrypt es tan cara como 10 millones de cómputos de MD5, entonces la contraseña de forzamiento bruto será 10 millones de veces más cara con bcrypt que con MD5.

Ese es el punto de tener lentitud configurable : puede hacer que la función sea tan lenta como desee. O, más exactamente, tan lento como pueda tolerar: de hecho, una función lenta es lenta para todos, atacantes y defensores por igual.

Un factor adicional es que bcrypt es, por naturaleza, bastante hostil para la optimización de GPU; Esto se debe al tipo de operaciones que se utilizan dentro del algoritmo. MD5 es, en comparación, muy fácil de implementar y ejecutar de manera eficiente en una GPU. Esto significa que un atacante puede obtener un impulso sustancial de una GPU al descifrar contraseñas protegidas con MD5; mientras que con bcrypt tendrá que usar el mismo tipo de CPU que el defensor. Consulte esta respuesta para más detalles.

Si queremos algunas cifras realistas: con una buena GPU (disponible en el mercado, unos pocos cientos de dólares), la velocidad del MD5 puede alcanzar, digamos, 10 mil millones de instancias por segundo (consulte los puntos de referencia there ; la máquina que sube a 93 billones por segundo contiene 8 GPU). Sin embargo, con bcrypt, sería habitual aumentar el número de iteraciones para que cada hash tome 0.1s en su servidor. En lugar de comprar una GPU, el atacante comprará (o alquilará) un par de CPU multi-core y podrá probar, por ejemplo, 100 contraseñas por segundo. Con estas cifras, se puede decir que bcrypt hará que las contraseñas 100 millones de veces sean más sólidas que MD5.

    
respondido por el Thomas Pornin 18.06.2014 - 21:53
fuente

Lea otras preguntas en las etiquetas