Matemáticamente, ¿cuánto tiempo tomaría descifrar un hash de contraseña bcrypt?

7

Por lo tanto, actualmente estoy usando bcrypt para las contraseñas de hash con un salt generado aleatoriamente (como se ve en el módulo pip bcrypt ), con 12 rondas.

He estado mirando a mi alrededor, pero no puedo encontrar una manera matemática detallada y clara para estimar cuánto tiempo tomaría una GPU fuerte (o incluso otros métodos de craqueo) para descifrar mi hash bcrypt.

Encontré esta esencia que describe 8x Nvidia GTX 1080 Hashcat Benchmarks, pero no puedo usar las cifras proporcionado para que bcrypt se aplique a mi implementación del algoritmo de hash.

    
pregunta madcrazydrumma 22.03.2018 - 23:09
fuente

2 respuestas

12

Bien, por el artículo que vinculaste, aprendemos que la configuración de 8x Nvidia puede calcular aproximadamente 100 000 hash de cifrado por segundo (H / s). El factor de costo utilizado para el punto de referencia es 5, muy bajo, si se deben creer los comentarios. Para bcrypt, el número de rondas es igual a dos a la potencia del factor de costo. Entonces, si el tuyo es 12, tu hash será 2 12 / 2 5 = 2 7 = 128 veces más lento. Entonces, desde 10 5 H / s, has bajado a 10 3 H / s.

Ahora, todo lo que necesita saber es que para romper un hash con n bits de entropía, en promedio debe intentar 2 n-1 veces. Así que tome una contraseña que consiste en 8 letras minúsculas al azar, por ejemplo. Tiene una entropía de n = log 2 (26 8 ) = 38 bits. Para resolverlo, necesitarías 2 38-1 / 1000 segundos = 4 años.

Tenga en cuenta que el punto de referencia es de 2016. A medida que pasa el tiempo, el hardware se vuelve más rápido. Deberá volver a evaluar regularmente su factor de costo para mantenerse actualizado.

    
respondido por el Anders 23.03.2018 - 00:25
fuente
0

Este es un error común acerca de las contraseñas. Depende de su definición de contraseña. Primero debe definir lo que quiere decir con contraseña, como "8 caracteres alfanuméricos". Una vez que defina eso, entonces podemos calcular.

Un "alfanumérico" es 26 mayúsculas, 26 minúsculas y 10 caracteres numéricos, o 62 combinaciones posibles.

Para probar todas las combinaciones de una contraseña de 8 caracteres, eso sería: 62 * 62 * 62 * 62 * 62 * 62 * 62 * 62

Eso es 218,000,000,000,000.

Dividido esto por 13094 (el número de hashes por segundo), obtienes 16674820955 segundos o 528 años.

La impracticabilidad de probar todas las combinaciones lleva a otras estrategias, como elegir palabras del diccionario o "Cadenas de Markov" para probar el tipo de contraseñas que es probable que elijan, en lugar de probar todas las combinaciones aleatorias. No puedes calcular matemáticamente qué tan rápido es esto porque es completamente subjetivo. Depende de la suerte, las contraseñas que hayan elegido los objetivos y las contraseñas que haya elegido probar. A menudo es del orden de un 10% de probabilidad de descifrar una contraseña con unas pocas horas de descifrado, pero nuevamente, esa es una experiencia subjetiva. Dependiendo de la contraseña de la que esté descifrado y de cómo la esté descifrando, su experiencia variará.

De todos modos, el punto es que esta pregunta no tiene respuesta. Es un error de cómo funcionan las cosas. Y es por eso que no puedes buscar la respuesta en google.

    
respondido por el Robert David Graham 23.03.2018 - 12:50
fuente

Lea otras preguntas en las etiquetas