Diciamo che ho una tabella di utenti definiti in questo modo:I sali sono inutili per sicurezza se l'attaccante li conosce?
CREATE TABLE `users` (
`id` INTEGER PRIMARY KEY,
`name` TEXT,
`hashed_password` TEXT,
`salt` TEXT
)
Quando viene creato un utente, un sale generata a caso è prodotto e memorizzato nel database insieme ai risultati di qualcosa come get_hash(salt + plaintext_password)
.
Mi chiedo se un utente malintenzionato possa mettere le mani su questi dati, sarebbe in grado di utilizzarlo per decifrare le password degli utenti? In tal caso, qual è il modo in cui potrebbe essere prevenuto?
la domanda chiede se l'attaccante conosce il sale –
La risposta di Luke è che l'attaccante conosce il sale. Il punto è che senza un sale, l'attaccante potrebbe semplicemente cercare la password con hash in una tabella arcobaleno trovata in rete. Con l'aggiunta del sale, l'attaccante deve fare da solo la forza bruta. –
Punto cruciale: la dimensione del sale deve essere scelta abbastanza grande che l'attaccante non possa possedere un tavolo arcobaleno abbastanza grande.Ovviamente 8 bit di sale non impedirebbero assolutamente un attacco da tavolo arcobaleno, aumentando solo la dimensione della tabella richiesta al massimo un fattore di 256. 128 bit di sale casuale, otoh, escludono le tavole arcobaleno ora e per sempre. –