Conversione delle password utente da SHA-1 e crittografia dei dati in chiaro [duplicato]

0

Attualmente sto lavorando alla conversione di un vecchio formato di database in cui le password di accesso utente sono state memorizzate come hash SHA-1. La stessa tabella contiene anche altri dati utente memorizzati in testo semplice.

Il mio obiettivo ora è quello di convertire gli hash SHA-1 della password nell'algoritmo PBKDF2 e quindi anche crittografare i dati in chiaro (non legati alla password) con il codice simmetrico AES-256-GCM utilizzando la chiave derivata dal risultato dell'esecuzione di una password utente attraverso PBKDF2. La parte GCM consentirà anche l'autenticazione delle password utente e amp; per l'integrità dei dati.

Quindi sto cercando di cercare come farlo correttamente. Vale a dire, faccio a convertire questi record mentre gli utenti provano ad accedere? In tal caso, un buon numero di voci rimarranno con gli hash SHA-1 per un po ', se non indefinitamente, il che NON è buono.

Quindi qual è l'approccio consigliato qui?

    
posta c00000fd 12.04.2018 - 23:19
fonte

1 risposta

0

Dovrai attendere gli utenti per accedere per cambiare le password. Non appena si convalida la password, ricodificarla con il nuovo algoritmo e salvarla nel database.

Ma non utilizzare la password utente come chiave per crittografare gli altri dati utente. In questo modo dovrai re-crittografare di nuovo ogni volta che l'utente cambia la password. Invece, generare una chiave casuale sicura e crittografare questa chiave con la password dell'utente. Utilizzare questa chiave per crittografare i dati. Quando l'utente cambia la password, dovrai solo crittografare nuovamente la chiave, tutti gli altri dati non devono essere modificati.

Se non vuoi lasciare SHA1 indugiato sul server per sempre, specifica una scadenza per la modifica (~ 3 mesi) o la soglia degli hash convertiti (75%) e quando il segno viene raggiunto, tutte le password SHA1 scadono e istruire quegli utenti a reimpostare le loro password quando tentano di accedere settimane (o decenni) in seguito. Questa pagina di OWASP ha un bel cheat sheet per questo. In pratica identifica l'utente (chiedi nome utente E email registrata, ad esempio), invia un link univoco con un token in scadenza e lascia che l'utente crei un'altra password usando questo link univoco.

    
risposta data 12.04.2018 - 23:26
fonte

Leggi altre domande sui tag