Il sale per PBKDF2 può essere un hash della password inserita dall'utente?

5

Voglio ricavare una chiave da una password in un'applicazione client che verrà utilizzata come chiave principale che decrittografa una chiave dati. Per quanto ne so, il sale dovrebbe essere una conoscenza privata. Sarebbe sufficiente usare l'hash (ad es. SHA-1) da una password come parametro salt per PBKDF2?

Ancora una volta, per quanto ho capito, quando l'attaccante avrebbe acquisito conoscenza di questo algoritmo, il sale dovrebbe essere privo di valore. Ma non sarebbe più facile per un utente malintenzionato recuperare un sale generato, ma memorizzato? Devo memorizzarlo da qualche parte, perché la chiave non sarà usata una sola volta.

    
posta Rafael Bugajewski 14.05.2012 - 10:08
fonte

3 risposte

14

Un sale non è un segreto, è pensato per rendere il risultato Hash / PBKDF2 unico per ogni istanza usata. Per quanto ne sappia, la definizione stessa di sale richiede che sia casuale per ogni hash calcolato . Se è stato derivato da password, due utenti con la stessa password potrebbero finire con lo stesso verificatore - > Bad.

    
risposta data 14.05.2012 - 11:49
fonte
6

Se il sale è derivato dalla password, allora la funzione di hash completa da password a memoria è deterministica; due utenti che utilizzano la stessa password finiranno con lo stesso hash. @Jacco ha detto questo, ma ha lasciato l'implicazione non detta: se si utilizza un sale derivato da password, quindi non si ha più un sale, solo una funzione hash non salato di fantasia; e si perde la protezione fornita da Salt, vale a dire impedire agli attaccanti di utilizzare tabelle precompilate (tabelle arcobaleno) e di utilizzare attacchi paralleli su un intero database di password con hash (o blob crittografati con chiavi derivate da password).

    
risposta data 16.02.2013 - 23:21
fonte
1

Dici che conserverai il sale. Ciò significa che se un utente malintenzionato accede al database, a cosa preferisce accedere? la password / hash semplice della password o un sale generato inutilmente in modo casuale?

Non sarà più facile per un utente malintenzionato accedere al sale generato (se lo memorizzi dove avresti memorizzato la password con hash). È lo stesso livello di difficoltà.

Ma con la password / hash della password, l'utente malintenzionato può accedere alla chiave principale E trovare la password originale (usando la tabella arcobaleno / forza bruta) che potrebbe essere utilizzata in altri account di questo utente.

Se salvi il sale, ne generi uno casuale.

    
risposta data 14.05.2012 - 10:59
fonte

Leggi altre domande sui tag