Per molto tempo le funzioni hash hanno richiesto un fattore di lavoro per mantenere l'operazione "lenta" quanto basta per proteggere le singole password in caso di perdita di un database. Bcrypt e PBKDF2 sono esempi notevoli.
Sono anche a conoscenza del fatto che "Non rotolare le tue" quando si tratta di sicurezza, ma è facile immaginare una situazione che nel tempo il fattore di lavoro del tuo schema di hashing delle password diventa troppo veloce a causa dell'aumento dell'hardware. Si potrebbe anche immaginare una situazione in cui i proprietari del database aggiornano il proprio hardware e quindi un fattore di lavoro più elevato è adatto rispetto a quello che veniva utilizzato prima dell'aggiornamento dell'hardware per garantire una maggiore sicurezza per password.
Il problema si presenta con la necessità di "re-hash" una password, perché non si desidera archiviare un testo in chiaro o addirittura una password crittografata in un database, in modo che il sistema non abbia modo di accedere nuovamente alla password affinché il cambio di bozze cambi il fattore lavoro. Per risolvere questo problema, è sufficiente eseguire questa operazione di reinghing quando un utente esegue l'accesso. Ogni volta che l'utente accede alla password in chiaro è già disponibile per il sistema, in una verifica hash riuscita della password il sistema può controllare il precedente fattore di lavoro associato l'hash della password (facile da fare in bcrypt) e se è inferiore al fattore di lavoro standard selezionato dagli operatori di sistema, la password in chiaro viene rehashed e archiviata con il nuovo fattore di lavoro e il nuovo salt. Le sessioni non devono essere reimpostate poiché viene utilizzata la stessa password di prima, solo un fattore di lavoro e sale diversi.
Oltre alla password in chiaro in memoria per un tempo leggermente più lungo durante la verifica della password e un tempo maggiore nella verifica della password ogni volta che viene emesso un aumento del fattore di lavoro, non riesco a trovare alcun errore di questo modello. Ci sono dei difetti di sicurezza che mi sono persi?