¿Tendría sentido usar Bcrypt y PBKDF2 juntos?

9

He leído varias opiniones sobre si Bcrypt o PDBKF2 es un mejor método de hashing de derivación de claves. La respuesta parece depender de muchos factores complicados que no son fáciles de analizar. ¿El uso de ambos (presumiblemente de manera serial uno antes del otro) acumulará los beneficios de ambos y, por lo tanto, logrará una solución de seguridad óptima?

    
pregunta Dan 09.02.2012 - 20:20
fuente

1 respuesta

12

La mezcla de las dos funciones realmente no ayudaría. Bcrypt y PBKDF2 tienen un costo configurable: se supone que debe establecer el número de iteraciones en el valor máximo que aún es tolerable en su situación, dado el hardware disponible y las restricciones ambientales (por ejemplo, la paciencia promedio del usuario). Si desea utilizar ambas funciones juntas, entonces deben compartir el mismo presupuesto de CPU; en otras palabras, tendría que disminuir el número de iteraciones en comparación con lo que usaría en cualquiera de las dos funciones.

Así que no obtienes algo más fuerte de esa manera; en su lugar, obtiene un nivel de seguridad que es un promedio de lo que habría obtenido solo con Bcrypt, o solo con PBKDF2.

Combinar dos funciones hash o funciones similares es bueno para evitar un fallo catastrófico, si resulta que uno está roto; pero, suponiendo que tanto Bcrypt como PBKDF2 sean fuertes, y la pregunta es principalmente sobre el rendimiento (tanto bcrypt como PBKDF2 son sobre cómo hacer más lenta la búsqueda exhaustiva, por lo que todo se trata de rendimiento). Para una lentitud óptima, combinar bcrypt y PBKDF2 es no una buena idea.

Para la elección entre bcrypt y PBKDF2, consulte esta respuesta anterior . Para resumir las cosas:

  • Bcrypt es mejor si su hardware es similar a una PC (es decir, tiene varios kilobytes de RAM con acceso rápido). Es más difícil para el atacante optimizar la búsqueda exhaustiva con una GPU, si se usa bcrypt, en comparación con PBKDF2.

  • PBKDF2 tiene la bendición de NIST (está aprobada, con una gran 'A'). NIST no dice nada sobre bcrypt.

  • Bcrypt genera 192 bits, lo que está bien para un token de verificación de contraseña, o si solo necesita 192 bits (o menos) de material clave derivado de la contraseña. Por otro lado, PBKDF2 es una función de derivación de claves y puede producir tantos bits como desee, lo que es bueno si necesita más de 192 bits de material clave.

respondido por el Thomas Pornin 09.02.2012 - 21:52
fuente

Lea otras preguntas en las etiquetas