"PBKDF2" comienza por "PB" que significa "Basado en contraseña". Esto es para contraseñas . Una contraseña no es solo una secuencia de letras; es una secuencia de letras que un humano puede recordar y escribir . Una clave de 256 bits, generada como las claves debe ser (con un PRNG criptográficamente fuerte), no es una contraseña, incluso si la codifica como letras.
Otra forma de decirlo es que el núcleo de la funcionalidad de PBKDF2 es hacer frente a la debilidad inherente de las contraseñas: ya que pueden ser manejadas por cerebros humanos, son débiles y pueden ser forzadas brutalmente. Una clave criptográfica adecuada (como la que genera con RNGCryptoServiceProvider
) no tiene esta debilidad y, por lo tanto, no necesita PBKDF2.
Ahora hay un uso tangencial: PBKDF2 no es solo PB, también es un KDF . Tiene una longitud de salida configurable. Como tal, si su clave de origen es más corta de lo que necesita, entonces un KDF, en particular PBKDF2, puede ser útil para obtener todo el material clave que desee. Por ejemplo, tiene una clave de 256 bits, pero necesita cifrar y para verificar la integridad, y para eso le gustaría tener una clave AES de 256 bits y una clave de 256 bits para HMAC. Para convertir una clave maestra de 256 bits en 512 bits de material clave, necesita un KDF. Sin embargo, PBKDF2, con sus idiosincrasias específicas de contraseña (entrada es letras , no bits; hay una necesidad de una sal), en general no es adecuado para tales trabajos. SSL / TLS utiliza para tales trabajos una función personalizada (que se ha investigado a fondo, ya que SSL es un destino de alto perfil para criptógrafos) al que llama "el PRF".