Perché memorizzare un salato a fianco della password con hash? [duplicare]

10

Comprendere la necessità di credenziali di protezione con hash che sono costosi e utilizzare i sali casuali crittografici.

Quello che vorrei capire è il motivo per cui dovresti conservare il sale accanto all'hash nel database, non è questo il punto di averne uno?

Prendi una vulnerabilità di SQL injection in cui posso scaricare i dati nella tabella User. Se ho accesso all'Hash e al sale, non rende più facile il mio tentativo di forza bruta (come si fa a non sapere il sale?).

Se immagazzini il sale con l'hash - questo non sconfigge il punto di protezione dagli attacchi arcobaleno? (se un utente malintenzionato ha accesso al database).

    
posta whoami 22.09.2015 - 18:36
fonte

1 risposta

25

Posso vedere da dove vieni, ma la risposta è fondamentalmente "non è quello che è il sale". Se sto cercando di scoprire la password di un utente particolare , il sale non aiuta molto se è proprio accanto all'hash. Tuttavia, non è atteso essere utile in quella situazione: è già abbastanza difficile decifrare la password di un singolo utente.

Il punto del sale è che è qualcosa da aggiungere a ciascuna password prima dell'hashing in modo che ogni password sia unica - se due utenti hanno entrambi hunter2 come password, gli hash devono essere diversi.

Supponiamo che un utente malintenzionato stia esplorando un database (o un'intera gamma di database) per trovare tutti coloro la cui password è letmein123 . Senza sale, possono fare l'hash una volta e cercare l'hash.

Senza sale se un attaccante individua due o più hash identici nel database, indica che si tratta di una password debole (dal momento che più utenti hanno scelto lo stesso) e può concentrarsi sul cracking per primo.

Ma salt è un prefisso / suffisso specifico dell'utente che viene aggiunto alla password prima dell'hashing, quindi (anche con un "pubblico" salt) un utente malintenzionato deve ricalcolare l'hash per ogni utente, quindi controlla una password contro 10000 utenti non è più efficiente di controllare 10000 password contro un utente, che è il punto.

    
risposta data 22.09.2015 - 19:16
fonte

Leggi altre domande sui tag