¿Bcrypt como una función de derivación de claves?

9

Leí muchas entradas en el intercambio de pila sobre bcrypt y por qué se supone que es mejor que PBKDF2 en términos de almacenamiento de contraseñas .

Ahora estoy preguntando si bcrypt es mejor que PBKDF2 en términos de derivación de clave? En mi caso, solo tengo que derivar una clave simétrica para el cifrado AES (por ejemplo, longitud de clave de 256 bits). Esta clave no tiene que guardarse, solo se usa sobre la marcha para el cifrado. ¿Qué sugeriría, es mejor bcrypt en este escenario que PBKDF2?

Saludos, Pozos

    
pregunta Pits 24.01.2012 - 16:07
fuente

1 respuesta

8

Bcrypt genera un resultado de 192 bits, ni más, ni menos. Esto es inconveniente si desea una clave de más de 192 bits, por ejemplo. una clave AES de 256 bits. En esa situación, recomiendo tomar la salida de bcrypt y hacer un hash con una función hash segura con una salida suficientemente grande para la longitud de material de la clave requerida (por ejemplo, si necesita una clave de cifrado de 256 bits y a 128 -bit MAC, use SHA-384 o SHA-512). De lo contrario, se considera que bcrypt está bien en lo que respecta a la derivación de claves.

(Generar una clave de cifrado de 256 bits a partir de un valor de 192 bits no tiene mucho sentido; pero usar AES de 256 bits en lugar de AES de 128 bits tampoco tiene mucho sentido, prácticamente hablando. La verdadera debilidad de un El sistema bcrypt-powered, de todos modos, es que las claves provienen de una contraseña recordada por el ser humano; bcrypt hace que tal cosa sea tolerable , pero no tan segura como una clave de 128 bits realmente aleatoria, mucho menos una Clave de 192 bits o 256 bits. Por lo tanto, si necesita una clave de 256 bits por "razones administrativas", generarla a partir de la salida bcrypt y una función hash no crearía ningún problema de seguridad real adicional.)

Bcrypt tiene un pequeño inconveniente: si divide una salida de bcrypt de 192 bits en tres valores de 64 bits, se garantiza matemáticamente que los tres valores de 64 bits serán distintos entre sí. Por lo tanto, la salida de bcrypt se puede distinguir de la de a oráculo aleatorio al observar aproximadamente 2 64 salidas bcrypt distintas (para valores de 192 bits aleatorios, uno puede esperar encontrar una colisión de bloques - dos de los tres valores de 64 bits iguales entre sí, después de un promedio de 2 64 / 3 valores). Este es un sesgo muy leve que no tiene consecuencias prácticas para la seguridad.

    
respondido por el Thomas Pornin 24.01.2012 - 16:30
fuente

Lea otras preguntas en las etiquetas