Ho visto come viene utilizzato PBKDF per generare la chiave di crittografia per AES. Una cosa che non riesco a capire è come quei sistemi operativi mantengano al sicuro la chiave di crittografia oltre all'utilizzo di moduli hardware.
Finora ho capito che il sistema operativo come Windows memorizza la password utente con hash dell'utente in un file (file SAM). L'hash della password viene quindi utilizzato per generare la chiave di crittografia per le applicazioni che devono crittografare i dati. Questo viene fatto in DPAPI e le applicazioni possono semplicemente chiamare l'API e la libreria di sistema estrae automaticamente la password utente (hash) dal contesto corrente e ne ricava una chiave (in un modo semplice, forse più complicato di così). Ma come fa Windows a garantire la sicurezza della chiave di crittografia, anche se la chiave viene generata al volo, purché l'hacker ottenga l'hash, non comprometterebbe la chiave di crittografia in quanto potrebbe applicare lo stesso PBKDF2 (fornito se in qualche modo possono provare quelli con possibili casi).
Se un utente malintenzionato prende il file di password di Windows ed estrae l'hash da esso (non dovrebbe essere troppo difficile), è in grado di applicare PBKDF2 (o qualsiasi funzione di derivazione possibile) su di esso per ottenere la chiave di crittografia ? . Si tratta di un valore salato codificato quando il PBKDF2 viene applicato all'hash nella sorgente di Windows?
Grazie