Questa è una situazione ipotetica, non quella in cui mi trovo attualmente.
Supponiamo che io stia usando una funzione hash, chiamiamola H1, che è considerata relativamente sicura al momento per memorizzare le password. Sto anche usando un sale. Se domani la funzione di hash verrà considerata compromessa (o qualcosa del genere), come è successo con SHA1 , cosa devo fare per proteggere nuovamente le password?
Ingenuamente, vorrei ricostruire l'hash delle password con H1 e rifilarle con un'altra funzione hash relativamente sicura, H2. Ma, ovviamente, questo è impossibile dal momento che il punto era quello di non essere in grado di ricostruire le password. Stavo pensando a 2 possibili corsi d'azione:
- Hash con H2 gli hash H1. Ora per autenticare l'utente dovrei avere hash con H1 e poi H2 e confrontare. Questo in pratica considera gli hash H1 come password in chiaro, anche se più fastidiosi per l'aggressore. In questo scenario, sarebbe necessario un altro sale per H2 o può essere riutilizzato quello da H1?
- Immediatamente revocare agli utenti una password temporanea che deve essere sostituita con una nuova al successivo accesso, quest'ultima cancellata con H2 e salata con un nuovo salt / li>
Confrontandoli, mi sembra che 1 abbia il vantaggio di non coinvolgere gli umani e di non fare affidamento su un canale di terze parti, anche se la reimpostazione delle password in questo modo sembra abbastanza comune. Ha lo svantaggio del clutter aggiuntivo e del lavoro richiesto per l'autenticazione.
Uno dei due precedenti ha considerato la linea di condotta corretta o qualcos'altro è?