Otterrà l'hash della password compromettere la chiave di crittografia derivata?

0

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

    
posta grumpynerd 03.08.2014 - 09:27
fonte

1 risposta

0

Se la chiave di crittografia può essere derivata utilizzando solo i dati persistenti nel database utente (come l'hash del nome utente e della password per esempio) che costituirebbe un'importante difetto di progettazione per i motivi descritti sopra: il segreto originale (password utente) non è necessario per derivare la chiave e accedere ai dati crittografati.

Il modo in cui Windows impedisce che ciò accada (o almeno come dovrebbe, vedi questo per maggiori dettagli) utilizza diversi algoritmi di hash per l'hashing della password e la derivazione delle chiavi: le password vengono sottoposte a hash utilizzando l'hash NTLM (che è MD4) e le chiavi sono derivate dalla password dell'utente utilizzando PBKDF2-SHA1. In questo modo l'ottenimento dell'hash della password non abiliterà immediatamente l'attaccante a calcolare le chiavi di crittografia perché è necessaria la password originale per calcolare la chiave.

I nuovi sistemi normalmente non dovrebbero usare hash semplici non salati per l'hashing della password; invece qualcosa come bcrypt o scrypt è un'alternativa più valida.

Se il sistema è vincolato ed è vantaggioso utilizzare PBKDF2 sia per l'hash della password che per la derivazione della chiave, è possibile utilizzare diversi sali per scopi diversi: uno per l'hashing della password e la verifica, un altro per la derivazione della chiave; in questo caso compromettere l'hash della password non abilita immediatamente l'attacker a calcolare la chiave derivata in quanto il sale è diverso e la password originale è ancora necessaria per calcolare PBKDF2 con un altro valore salt.

    
risposta data 03.08.2014 - 11:56
fonte

Leggi altre domande sui tag