Il punto di un sale unico è questo: il lavoro che l'attaccante esegue per decifrare la password salata di un utente non può essere riutilizzato contro un altro utente. Quindi affronta questo punto della tua domanda:
Even if you had to recalculate the hash for every user, that is still only one calculation for each user. And if applying a salt is O(1), shouldn't undoing every user cost O(n)?
Pensaci in questo modo. Supponiamo che tu abbia n utenti e che l'autore dell'attacco esegua tentativi di password m . Se non si dispone di sali, l'utente malintenzionato può verificare ciascuna delle sue m parole d'ordine per tutti gli utenti n , il che significa che possono eseguire m × n ipotesi utente / password.
Con i sali unici, d'altra parte, ognuna delle ipotesi della password m dell'attaccante è applicabile solo a un utente. In questo modo possono solo eseguire tentativi di coppie di utenti / password m . Questa è una grande vittoria per il difensore.
E questa analisi presuppone che l'attaccante conosca tutti i sali. Quindi la risposta alla tua domanda, in senso stretto, è che i sali possono essere pubblici perché offrono un grande miglioramento della sicurezza anche se l'hacker li conosce. (In contrasto con le chiavi, ad esempio, le crittografie offrono la sicurezza no contro un utente malintenzionato che conosce la chiave.)
Possiamo modificare un po 'la tua domanda e chiedere: perché non mantenere segreti i sali? Bene, questo è in realtà una cosa; il nome popolare di "sali segreti" è pepe , e ci sono persone che li usano, offrono ulteriore sicurezza oltre a ciò che fanno i sali pubblici. Ma molte persone semplicemente non pensano che la sicurezza extra valga il tempo e il fastidio di mantenere segreti aggiuntivi. Altri sono effettivamente scettici sul fatto che aggiungano maggiore sicurezza nella pratica:
Tuttavia, altri sono più positivi riguardo ai peperoni. In particolare, la richiesta del concorso per l'hash delle password ha permesso specificamente agli algoritmi di accettare una "chiave segreta" (pepe) oltre a un sale
Ma una cosa è certa: l'uso dei peperoni è molto più complesso rispetto all'utilizzo di sali pubblici, a causa delle ulteriori misure necessarie per garantire che un compromesso del database delle password non comprometta anche i peperoni.