L'idea di un "sale" crittografico è che la stessa password (o altro valore segreto) crittografata in due punti non abbia lo stesso valore crittografato. Ciò rende più difficile la creazione di un "dizionario" contenente gli hash per molte delle password possibili e lo si confronta rapidamente con un elenco rubato di hash delle password per recuperare la password.
In senso stretto, dovrebbe essere generato un valore di sale per ogni valore e memorizzato con tale valore, quindi un dizionario o un attacco "forza bruta" potrebbe riuscire a recuperare quella singola password, ma non sarebbe di nessun beneficio per altre password nel sistema.
Tuttavia, un sale esteso a livello di applicazione può anche fornire alcuni vantaggi, rendendo gli hash generati da un'applicazione non corrispondenti a quelli di un altro. È anche possibile che qualcuno possa rubare i dati crittografati (ad es. Una tabella di database degli utenti) senza avere accesso a questo livello a livello di applicazione, rendendo più complicato l'attacco di forza bruta.
Questi vantaggi andrebbero completamente persi se tutti coloro che hanno installato CakePHP usassero lo stesso sale, perché chiunque può scaricare il codice sorgente e trovare il sale predefinito.
Risposta breve: perché deve essere univoco per il codice. Se tutti usano lo stesso sale, usare un sale sarebbe inutile. –
Grazie per la risposta breve. Apprezzo molto – Hardrik