¿Está bien usar 6 como costo de bcrypt algortihm para la cadena de 64 caracteres? [duplicar]

-1

¿Cuál debería ser el $cost ideal en este caso para evitar un ataque de fuerza bruta incluso con ASIC o un FPGA

$cost = '06';
$secret_key = bin2hex(random_bytes(64));
$store_data = crypt($secret_key, '$2a$.$cost.$'.bin2hex(random_bytes(16)).'$')

Scenerio

La compañía le da al usuario $secret_key generado por el código anterior para permitirle retirar dinero y esta clave secreta nunca debe ser adivinada por un pirata informático.

$store_data es la cadena que almacenamos en nuestra base de datos.

Entonces, si un atacante obtiene acceso a la base de datos y aprende la variable $store_data , no debería poder obtener $secret_key .

He utilizado el algoritmo bcrypt para el hash pero no estoy seguro de que $cost = 6 sea lo suficientemente seguro en este caso.

Nota:

No usé password_hash porque convertiré todo el código a Java en el futuro y en Java no hay un equivalente de password_hash

    
pregunta Alex Robertson 06.02.2018 - 10:39
fuente

1 respuesta

0

Si tiene 64 bytes verdaderamente aleatorios (es decir, criptográficamente aleatorios), puede usar cualquier algoritmo de hashing que proporcione resistencia de preimagen para almacenarlo de forma segura y evitar que un atacante aprenda la entrada.

Algoritmos como scrypt y bcrypt proporcionan factores de trabajo para hacer que sea más difícil realizar ataques de diccionario contra hashes. Esto se debe a que las contraseñas seleccionadas por el usuario tienden a tener mucha menor entropía, por lo que es ideal para su caso de uso.

Con 64 bytes de datos aleatorios, puede usar cualquier algoritmo de hash criptográfico con 256 bits de salida sin preocuparse por los ataques de fuerza bruta, ya que es físicamente imposible forzar con fuerza un valor de 256 bits . La simple iteración de todos los valores posibles de 256 bits requiere más energía de la que el sol puede producir en su vida útil.

Enumerar todas las claves de 128 bits posibles requiere el uso total de energía de España durante 1 año. Calcular los hashes es aún más. Al pasar de 128 a 129 bits se duplica el requerimiento de energía, 256 bits requieren más energía de la que el sol puede producir. Este es un límite mínimo de almacenamiento de energía llamado Landauer Limit. (Consulte ¿Qué tan seguros podemos estar de que nadie romperá una clave de 128 bits y Wikipedia: Fuerza bruta Límites teóricos )

Mi consejo, entonces, es usar SHA-256.

    
respondido por el David 07.02.2018 - 01:19
fuente

Lea otras preguntas en las etiquetas