Ho le password degli account utente memorizzate in un database utilizzando una funzione hash crittografica non sicura (precedente).
Qual è l'approccio migliore / abituale alla modifica della funzione hash della password? Mi vengono in mente solo due idee:
-
Chiedere a tutti gli utenti di cambiare le loro password al prossimo accesso e cancellare le loro password con una nuova funzione quando lo fanno. Questa non è una buona opzione a causa di molti problemi (utenti non attivi, lunghi periodi di migrazione, implementazione complicata ...)
-
Hash i vecchi valori hash con la nuova funzione hash e riscrivi il metodo per controllare le password rispetto al database: newHash (salt + oldHash (salt + password))
Questo doppio hashing mi sembra una buona idea, sia elegante che semplice da implementare.
Vorrei sapere se ci sono dei avvertimenti che non sto notando qui. È questo il modo in cui di solito viene fatto o esiste un altro metodo? Esiste qualche vulnerabilità crittografica nota nell'uso dell'output della funzione hash debole come input della funzione hash strong.
Se è una buona idea, per quanto riguarda il sale? Andrebbe bene usare lo stesso sale per entrambe le funzioni hash?