2011-08-18 12 views
9

Ho appena appreso il concetto di hashing ("Ehi, non dimenticarti il ​​sale!") E usa il sale per rendere sicura la password.Qual è il punto di sale e hashing se il database è accessibile?

Hashing è una crittografia unidirezionale (in realtà non crittografia ma hashing) quindi non può essere invertita progettata. La salatura è il prefisso o l'accodamento di valori creati a caso alla password prima che l'hashing abbia il problema nell'hash (solo l'hashing), qualche genio ha fornito una tabella hash di parole dal dizionario in modo che possano semplicemente confrontare l'hash da quel dizionario a la tabella dell'utente dal database per accedere - W-wait? ho detto tabella dal database? Quindi significa che qualcuno può accedere al database, quindi dobbiamo usare salt? Se è così, allora perché l'hacker dovrebbe recuperare la password se ha già accesso al database? Se fossi in lui, otterrò tutti i dettagli che voglio dal database, perché dovrei usare la chiave che ho rubato da una casa per aprire la porta se posso accedere alla casa già attraverso la finestra?

Quindi, perché hash? perché sale? Non capisco. Per favore, qualcuno mi aiuti.

Grazie in anticipo.

Nota importante: non sono contro l'hashing o la salatura, voglio solo chiarire le cose.

+0

Non un * esatto * duplicato, ma si potrebbe anche voler guardare: http://stackoverflow.com/questions/6552554/salting-hashes-why-is-the-salt-treat-by-the-literature -as-being-known-to-eve/6608045 # 6608045 –

risposta

11

Se è così, allora perché l'hacker recuperare la password se si ha già accesso alla banca dati?

Le ragioni sono molte. Qui ci sono alcuni:

  1. persone riutilizzare le proprie password, in modo che non perda everybodys reali password limita l'impatto di tale attacco.

  2. Senza le password reali, l'hacker non sarà ancora in grado di accedere e, ad esempio, di inserire nuove voci nel sistema compromesso.

  3. Chi dice tutte le informazioni sono archiviate nel database? Cosa accadrebbe se il database consistesse unicamente del nome utente e delle password hash/salate? Quindi, conoscere il contenuto non aiuta molto.

3

sale viene utilizzato in modo che password identiche hanno diverse hash, fare un tentativo di capire le password più difficile.

Hashing fa in modo che la generazione della password tramite metodi di forza bruta richieda molto tempo (specialmente con SHA2) in modo da rendere "impossibile" la ricerca della password.

Un hash non funzionerà se non si conosce la password poiché digitare l'hash in un campo password non funzionerà (ovviamente).

Di solito gli hacker trovano solo tabelle degli utenti e forse alcune informazioni di base ma se vogliono essere in grado di accedere effettivamente alle informazioni degli utenti e modificare qualcosa allora hanno bisogno della password effettiva (dato che non conoscono l'intero schema del DB che cambia qualcosa potrebbe sembrare molto sospetto ed è facilmente rintracciabile a meno che tu non abbia legittimamente accesso come persona)

Un'ultima cosa che ho dimenticato è che le persone riutilizzano le password.Quindi forse hai violato un sito a caso che non ha informazioni utili su di esso, ma la persona ha utilizzato la stessa combinazione utente/password sul proprio sistema bancario online. Questo potrebbe essere molto brutto come puoi vedere quindi non essere in grado di discernere facilmente la password è la chiave.

4

Se si dispone delle password in chiaro e degli indirizzi e-mail dal database, è possibile creare scompiglio! Non si tratta di ottenere credenziali per il sito che è già compromesso, si tratta di ottenere informazioni di accesso ad altri siti.

La maggior parte delle persone non utilizza una sola password per un sito, quindi se si dispone della password per il proprio indirizzo di posta elettronica principale, probabilmente si avrà accesso a TUTTI i loro account su ogni sito (mediante ripristino della password).

4

Per essere in possesso dei record utente dal database non significa necessariamente che si ha accesso al database. Attraverso alcune perdite nel sito web (ciao, SQL injection) potresti essere in grado di accedere a dati a cui non dovresti avere accesso senza necessariamente compromettere l'intero server. I backup mal gestiti, i server condivisi, i dipendenti incompetenti o malintenzionati possono rendere tutto ciò possibile.

Inoltre, e forse ancora più importante, è necessario proteggere le password dei propri clienti su altri siti. Le persone sfortunatamente riutilizzano le loro password dappertutto. Se il tuo minuscolo database di chat room viene compromesso, le password delle persone sui loro siti bancari possono essere compromesse con esso.

+0

+1 per l'iniezione SQL, sì è vero, l'hacker può accedere a una sola tabella ma non all'intero database ... Grazie. – dpp

+0

@domanokz E non è solo l'iniezione SQL. Qualche istruzione di debug che hai dimenticato da qualche parte, un errore logico che scarica più dati di quanto dovrebbe ... ci sono mille possibilità diverse. – deceze

1

Supponiamo che un utente malintenzionato ottenga in qualche modo l'accesso a un backup del database, contenente password hash irrecuperabili. Poi hanno tutti i dati che erano lì ieri, il che è abbastanza brutto. Ma almeno non hanno accesso ai dati che saranno lì domani, e non possono cancellare nulla dal sito reale, sfigurare, servire malware tramite il CMS, ecc.

Supponiamo che un utente malintenzionato le password in chiaro di tutti, specialmente se include l'amministratore. Ops.