Stavo leggendo una risposta di Terry Chia a un'altra domanda sui requisiti per un sale, in cui lui / lei (tra gli altri) ha specificato che i sali devono essere globalmente unici, ma non entrare nel dettaglio sul perché. Questo è stato definito come "non solo unico nel contesto del tuo database, ma unico nel contesto di ogni singolo database là fuori". Ad esempio, ho utilizzato un indirizzo email come sale per il mio sito web / database di esperimenti sandbox. Questi potrebbero certamente essere utilizzati come sali su altri siti web.
Non ha senso per me perché, a quanto ho capito, lo scopo del sale è quello di garantire che "spezzare più password compromesse insieme non dovrebbe essere più facile che scoppiarle separatamente" (Ilmari Karonen, più in basso sullo stesso post). A meno che non mi sbagli, questo vincolo è soddisfatto finché i miei sali sono unici nel mio database.
Sono ulteriormente confuso perché generare dei sali globalmente unici mi sembra impossibile da controllare. Come potrei essere in grado di garantire che nessuno dei miei sali sia mai stato usato sul sito di qualcun altro, con milioni di siti là fuori? Per essere onesti, non ho ancora studiato come generare sali casuali; forse l'idea è che sono creati da un pool abbastanza grande che anche considerando il numero di siti là fuori, i duplicati generati per database separati sono molto improbabili?
Sono decisamente prevenuto nell'usare un indirizzo email come mio sale, dal momento che si tratta di un piccolo passo di lavoro, ma dato il numero di persone che sembrano non essere d'accordo con questo approccio, riconosco che probabilmente ho torto. E poi, voglio sapere di più sul perché ho torto perché non ha ancora un senso.