Il metodo usuale per siti semplici è quello di memorizzare un hash della password di un utente nel proprio record utente.
Cosa succede se il campo della password viene rimosso dalla tabella utente e viene creata una tabella delle password? La tabella delle password avrebbe lo stesso hash della password, ma al posto dell'id utente, la chiave della tabella è un altro hash, un hash dell'ID utente e una chiave segreta.
L'idea è che se ottieni una copia della tabella utente, non ottieni gli hash delle password. Se si ottiene l'utente e la tabella delle password, non è possibile connettere una password a un particolare account utente.
Suppongo che se potessi rompere l'hash della password, avresti una manciata di password che sai essere in uso sul sistema. Potresti provare ogni password su ciascun account finché non funziona. Quindi forse ho risposto alla mia stessa domanda. Tuttavia c'è qualcosa che mi manca? Mi sembra una buona idea, ma non ho trovato nulla al riguardo.
Suppongo che potrebbe essere facile rilevare un attacco che utilizza un elenco di password esistenti per gli utenti nel sistema e bloccare o altrimenti arrestare l'attacco.