PasswordDeriveBytes
implementa la función de derivación de claves PBKDF1. Un KDF es una función que transforma una parte de datos secretos (aquí, una "contraseña", es decir, el tipo de datos que encaja en un cerebro humano y se puede escribir con dedos humanos) en una secuencia de bits adecuada para algoritmos que necesitan una clave simétrica (por ejemplo, cifrado simétrico). Un KDF no está destinado a nada más, en particular al almacenamiento de contraseñas.
Se puede usar una función hash como KDF, siempre que la clave simétrica que necesita no sea mayor que el tamaño de salida de la función hash. Sin embargo, tal KDF sería muy crudo. Una característica que debería proporcionar un buen KDF es ser adecuadamente lenta . Esto se debe a que las "contraseñas" son, por naturaleza, vulnerables a una búsqueda exhaustiva (también conocida como "ataque de diccionario": los usuarios tienden a elegir como contraseñas palabras o combinaciones más bien simples que pueden adivinarse con solo unos pocos millones o miles de millones de intentos). En un sistema dado, generalmente se puede tolerar un KDF relativamente lento: un usuario que intenta autenticarse no verá la diferencia entre un retraso de 1µs y 1ms para la función de derivación de clave; pero una ralentización de 1000x es mortal para el atacante: convierte un esfuerzo de ruptura de un día en un esfuerzo de ruptura de tres años .
PBKDF1 incluye un "recuento de iteraciones", que es un parámetro diseñado exactamente para eso: hacer que la derivación de la clave sea lo suficientemente lenta, de manera configurable. Una simple función hash es demasiado rápida para eso. El uso como KDF es precisamente donde preferiría PBKDF1 sobre una función hash. En realidad, PBKDF1 no se recomienda; Se supone que PBKDF2, del mismo estándar , es más sólido.
Las funciones hash son objetos mucho más genéricos que KDF, y tienen muchos otros usos, que KDF no cumple.
Lo que quiere hacer no está claro: utiliza el término "firma", que normalmente significa "firma digital asimétrica" como con RSA o ECDSA; hay algunas personas que tienden a usar el término "firma" para designar una verificación de integridad simétrica, como un MAC (llamada es una "firma" impropia, pero extendida). Sin embargo, esto conlleva algún secreto en algún momento, una clave y una función de hash no tienen claves.