Quando si consente a un utente di cambiare password, dovrei generare un nuovo salt?

8

Nel mio database, ho una colonna per la password hash e il salt. La mia applicazione consente agli utenti di cambiare la loro password. Dovrei usare lo stesso sale per la password, o dovrei generarne uno nuovo? Ha importanza per la sicurezza dell'applicazione?

    
posta Ivan 30.03.2014 - 19:55
fonte

1 risposta

14

Sì. Genera sempre un nuovo salt quando la password è cambiata .

Considera i seguenti due scenari:

Conosciuto non cambiando sale

So che non stai cambiando il sale per le tue password. Vedo che admin ha un sale che è 'xyz', e ora estraggo la tabella arcobaleno per quel sale. Non importa a cosa si modifica la password dell'amministratore, lo so.

Password ripetute

So che l'utente aveva una password con hash di "xyz: abcdef" ( xyz è il sale, abcdef è la password con hash). Poi più tardi vedo che l'informazione su hash è 'xyz: 012345' - ok, hanno cambiato la loro password. Eppure più avanti vedo la password con hash come 'xyz: abcdef' e so che l'hanno cambiato indietro la prima password.

Questi due scenari in cui le informazioni non necessarie vengono fornite all'utente malintenzionato vengono banalmente evitate generando nuovo salt ogni volta che viene generata una password.

Noterai che il corsivo in "quando la password è cambiata" sopra. Questo è stato aggiunto dopo un commento di darkhogg chiedendo se cambiare il sale più spesso è "meglio, peggio o semplicemente inutile" ? "

Su Security.SE la domanda di Con quale frequenza devo ripristinare il mio sale? risponde a questo. Cambiando il sale più di frequente rispetto alle modifiche della password, un possibile attaccante fornisce più informazioni sulla password di un solo hash.

Cambiare il sale più spesso della password non significa che un intruso sarà più ostacolato dalle nuove informazioni perché la stessa password corretta funzionerà comunque indipendentemente dal sale.

    
risposta data 30.03.2014 - 20:34
fonte

Leggi altre domande sui tag