"PBKDF2" inizia con "PB" che significa "Basato su password". Questo è per password . Una password non è solo una sequenza di lettere; è una sequenza di lettere che un umano può ricordare e digitare . Una chiave a 256 bit, generata come dovrebbe essere la chiave (con un PRNG crittograficamente strong), non è una password, anche se la si codifica come lettere.
Un altro modo per dire che il nucleo della funzionalità di PBKDF2 è far fronte alla debolezza intrinseca delle password: poiché possono essere gestite da cervelli umani, sono deboli e possono essere forzate brutali. Una chiave crittografica corretta (come quella che generi con RNGCryptoServiceProvider
) non ha questa debolezza e quindi non ha bisogno di PBKDF2.
Ora c'è un uso tangenziale: PBKDF2 non è solo PB, è anche un KDF . Ha una lunghezza di uscita configurabile. Pertanto, se la tua chiave di origine è più breve di quella che ti serve, un KDF, in particolare PBKDF2, può essere utile per ottenere tutto il materiale chiave che desideri. Ad esempio, hai una chiave a 256-bit, ma hai bisogno di crittografare e per verificare l'integrità, e per questo ti piacerebbe avere una chiave AES a 256 bit e una chiave a 256 bit per HMAC. Per trasformare una chiave master a 256 bit in 512 bit di materiale chiave, è necessario un KDF. Tuttavia, PBKDF2, con le sue idiosincrasie specifiche della password (l'input è lettere , non i bit, c'è bisogno di un sale), non è adatto in generale per tali lavori. SSL / TLS utilizza per tali lavori una funzione personalizzata (che è stata analizzata in modo approfondito, poiché SSL è un obiettivo di alto profilo per crittografi) che chiama "il PRF".