Forse mi manca qualcosa di ovvio ...
Tutte le password sono memorizzate in comuni algoritmi hash non salati in grado di essere attaccati tramite le tabelle arcobaleno?
Non tutte le password. Quando la password è sufficientemente lunga e casuale da non apparire in una tabella arcobaleno di dimensioni ragionevoli, la salatura è davvero superflua.
Lo scopo di un sale è di aumentare la lunghezza della password ad un livello in cui le tabelle arcobaleno non sono fattibili. Quando la password ha già abbastanza entropia, il sale diventa ridondante.
Quando i tuoi sali sono a 32 bit, richiedere circa 5 caratteri in più di lettere maiuscole e minuscole, lettere e caratteri speciali senza una relazione con una parola del dizionario sarebbe equivalente.
Tuttavia, le password utilizzate dall'utente medio non hanno abbastanza entropia da essere a prova di arcobaleno. Quindi, a meno che tu non abbia la capacità e l'autorità di imporre un criterio rigoroso per le password e che capiscano che non devono cercare di trovare scappatoie (hey, Password123!
è di 12 caratteri caso misto con lettere e caratteri speciali! ), dovresti comunque usare la salatura.
Sì, anche se alcuni hash non salati, come l'hash Windows LM obsoleto , sono ancora peggiori a causa di carenze crittografiche.
Chiedere di salare o meno significa che il richiedente è interessato a conservare e proteggere le password, non a proteggere il proprio account. Anche con password a 128 caratteri completamente casuali, un amministratore con accesso a due siti sarà in grado di vedere se la password di 128 caratteri è stata riutilizzata, a meno che non ci sia un salt. Quindi sì, tutti gli hash non salati hanno un'insicurezza intrinseca, anche se una determinata password è al riparo da un attacco con una tavola arcobaleno.
Un altro problema con hash non salati è che due utenti con la stessa password avranno la stessa password con hash. Ciò significa che se gli hash delle password sono accessibili, sia da un compromesso o da un membro malintenzionato, le password duplicate sono ovvie. Anche se non riescono a rompere l'hash, un attacco di ingegneria sociale su uno concede l'accesso a tutti. (O uno degli utenti vede che possono accedere agli altri)
La salatura è estremamente economica e non c'è motivo di implementare un sistema di memorizzazione delle password senza di essa.
Ancora meglio, chiediti se hai davvero bisogno di memorizzare le password
Se si fa riferimento a algoritmi di hashing della password "comuni" come SHA1 e MD5 che vengono utilizzati senza sale, non è nemmeno necessaria una tabella arcobaleno, un database di ricerca hash inverso è sufficiente per la maggior parte delle password dell'utente finale scarsamente selezionate.
Ad esempio: md5("password")
risulterà sempre in 5f4dcc3b5aa765d61d8327deb882cf99
, quindi quando trovi il hash 5f4dcc3b5aa765d61d8327deb882cf99
sai che sarà la password. Prova a cercare google per 5f4dcc3b5aa765d61d8327deb882cf99
o qualsiasi altro hash che ti è successo.
Come sempre, per prima cosa leggi la risposta di Thomas Pornin su Come fare in modo sicuro le password di hash?
Il sommario per salting, supponendo che tu abbia più di una password nel tuo database e che il database sia trapelato (vedi Sony, Adobe, Forbes, ecc.) quindi un aggressore (cracker, criminale, ricercatore di sicurezza, high school annoiato studente, squadra di cracking della concorrenza, ecc.)
Con un singolo salt per tutti gli utenti, solitamente chiamato "epic fail"
Senza sale, o un singolo sale che è stato usato prima da quell'attaccante (come "sale")
Un sale è fondamentalmente un valore casuale che viene aggiunto a una password prima di essere sottoposto a hash e memorizzato. Il risultato è che una password di "patata" di una persona apparirà diversa dalla password di "patata" di un'altra persona.
Le tabelle di Ranbow sono un enorme elenco di hash per un lungo elenco di termini e frasi diversi, più comunemente per l'uso di password. Se la tua password patata è in una tavola arcobaleno un sale impedirà che si rompa. Se la tua password di patate non è salata E esiste nella tabella arcobaleno, probabilmente sei sfortunato.
Il grado di risparmio principale che hai contro una password non salda è la speranza che non sia contenuto nella tabella arcobaleno che ti attacca. Ad esempio, le persone possono creare tabelle arcobaleno per tutte le parole nel dizionario, ma se la tua password non è nel dizionario e non è salata, quella tabella arcobaleno non ti prenderà.