Si su contraseña necesita ser ejecutada a través de un PBKDF depende del caso de uso. Los PBKDF como PBKDF2 tienen múltiples beneficios y propiedades:
- pueden ocultar una contraseña en una base de datos, para cuando la base de datos se roba
- proporcionan una sal para ocultar contraseñas idénticas y protegen contra las tablas del arco iris
- utilizan la cuenta de iteraciones para hacer que los ataques de fuerza bruta sean más difíciles (pero solo por una cantidad lineal)
- pueden extraer la entropía de un valor dado, es decir, devolver una salida de tamaño fijo
- pueden expandir la cantidad de material secreto a un valor mayor (principalmente útil cuando la salida se utiliza como entrada criptográfica como clave o IV)
Ahora digamos que tiene un sistema seguro en el que utiliza la frase de contraseña para la autenticación. Para esta autenticación hay un número limitado de intentos o las contraseñas tienen una gran cantidad de entropía. En ese caso, un PBKDF no tiene mucho sentido.
Si sus contraseñas ya tienen una cantidad verificable de entropía, entonces un KBKDF, como HKDF, tiene más sentido que un PBKDF2, no necesita la cuenta de iteración. Pero como otros han señalado, en general, no puede estimar o garantizar fácilmente la cantidad de entropía de una frase de contraseña.
Si solo usas un hash como pobre KDF de mans, entonces no tienes sal. Esto significa que la salida será idéntica para la misma frase de contraseña; las frases duplicadas pueden convertirse en un problema.
Si desea tener una entrada de tabla de tamaño fijo en su base de datos, entonces puede tener sentido utilizar al menos un KDF, de lo contrario tendrá que usar un límite superior para el tamaño de la frase de contraseña.
Al final, se convierte en la pregunta de por qué no usa un PBKDF como PBKDF2.
Tenga en cuenta que PBKDF2 no es considerado por muchos como una gran opción para realizar una expansión, ya que le da ventaja a un atacante.