Sto imparando Rails, al momento, ma la risposta non deve essere specifica per Rails.In che modo l'utilizzo di sale rende la password più sicura se è archiviata nel database?
Quindi, se ho capito bene, un sistema di password sicura funziona così:
- utente crea una password
- sistema crittografa la password con un algoritmo di cifratura (diciamo SHA2).
- Archivia hash della password crittografata nel database.
Al tentativo di accesso:
- utente tenta di accedere
- sistema crea hash del tentativo con l'algoritmo di cifratura stessa
- sistema confronta hash del tentativo con hash della password nel database.
- Se corrispondono, vengono lasciati entrare. In caso contrario, devono riprovare.
Come ho capito, questo approccio è soggetto ad un attacco arcobaleno - in cui può accadere quanto segue.
Un utente malintenzionato può scrivere uno script che essenzialmente tenta ogni permutazione di caratteri, numeri e simboli, crea un hash con lo stesso algoritmo di crittografia e li confronta con l'hash nel database.
Quindi il modo per aggirare è combinare l'hash con un sale unico. In molti casi, la data e l'ora correnti (fino a millisecondi) registrate dall'utente.
Tuttavia, questo sale viene memorizzato nella colonna del database 'sale'.
Quindi la mia domanda è, come cambia il fatto che se l'attaccante ha avuto accesso al database in primo luogo e ha l'hash creato per la password "reale" e ha anche l'hash per il sale, come è questo non solo come soggetto ad un attacco arcobaleno? Perché, la teoria sarebbe che prova ogni permutazione + l'hash di sale e confronta il risultato con l'hash della password. Potrebbe volerci un po 'di più, ma non vedo come sia infallibile.
Perdona la mia ignoranza, sto solo imparando questa roba e questo non ha mai avuto molto senso per me.
possibile duplicato di [Dove si memorizzano le stringhe di sale?] (Http://stackoverflow.com/questions/1219899/where-do-you-store-your-salt-strings) – blowdart
No. Non sto sostenendo o chiedendo se ha più senso conservare il sale altrove rispetto al db. Sto cercando di esplorare l'idea di come un sale sia effettivamente più sicuro, in un'epoca in cui le risorse di calcolo sono così economiche. – marcamillion
SHA-2 è un algoritmo di hashing. Hashing è un concetto diverso dalla crittografia. – wulfgarpro