Le collisioni della funzione hash non sono rilevanti per l'hashing della password. Tutti gli hashing delle password funzionano sulla resistenza di preimage, non sulle collisioni. Puoi dimenticare tutto ciò che riguarda le collisioni quando parli di hashing della password.
Salt "collisioni" possono avere importanza ma sono meglio chiamate "riutilizzo del sale". Si evita il riutilizzo del sale utilizzando sali casuali di dimensioni sufficienti (bastano 16 byte; GUID sono buoni sali).
Non puoi cambiare il sale senza avere accesso alla password. Se potessi farlo, allora l'attaccante potrebbe farlo anche tu e annullare i benefici dei sali. Questa sarebbe una grave debolezza della funzione di hashing.
Non ha senso cambiare il sale. Il valore aggiunto salt unico è il modo in cui è diverso dagli altri valori di sale. Non c'è alcun guadagno nel sostituire un valore di sale con un altro valore; può esserci una perdita netta se il nuovo valore è uguale ad un altro valore salino, che porta al riutilizzo del sale.
Vale a dire, quando usi sali casuali, stai assicurando l'assenza di sale in modo euristico: se mai generi s sali, in uno spazio di dimensioni n (ad esempio < em> n = 2 128 per i sali a 16 byte casuali), quindi il rischio di un riutilizzo di sale rimane basso finché s 2 è piccolo per quanto riguarda n . Fondamentalmente, con i sali da 16 byte, scelti casualmente da un buon PRNG , hai spazio per circa 2 64 istanze di generazione di sale. Se cambi i sali regolarmente, più spesso di quanto strettamente richiesto, allora stai aumentando s , cioè diminuendo il tuo respiro. Fortunatamente, 2 64 è un numero enorme, quindi supponendo che tu faccia tutto il resto correttamente, quindi sostituisci i sali ogni settimana (quando l'utente accede, perché non puoi farlo senza la password stessa) non implicano un rischio aggiuntivo significativo. Sarà inutile, ma innocuo.
Se, da più valori hash con vari sali e la stessa password, l'utente malintenzionato può elaborare la password stessa o ridurne lo spazio chiave (con maggiore successo rispetto al semplice rischio di riutilizzo del sale spiegato sopra), quindi questa è una crittografia debolezza della funzione di hashing della password. Nessuna debolezza di questo tipo è nota per le normali funzioni di hashing della password (bcrypt, PBKDF2 ...).