L'hashing di una password e la sua suddivisione in più campi DB aumentano la sicurezza? [duplicare]

0

Ho letto l'hashing delle password e sembra che ci siano molte opinioni su "Cosa è giusto".

Sono curioso di sapere se è possibile memorizzare una divisione di una password Hash in più campi utente. Significato hash la password prima, poi divisa, come sembra dividere una password in testo semplice, rendendo la sua lunghezza più piccola, poi l'hashing, indebolirà la sicurezza.

Diciamo che ho un campo password, quindi un altro campo da qualche altra parte nella tabella che è anche hash. Quando provo a vedere se la password inserita è la stessa, posso prendere i 2 valori hash che sono stati divisi, combinarli e vedere se quello è uguale a quello inserito? Certo, mi piacerebbe avere un sacco di valori nel mio DB, quindi avere un "valore hash" casuale non sembra sospetto in questo caso.

Example

Field Password: SA234j23kljfs

Other field : 23lkj4as89dfADk

User password: SA234j23kljfs23lkj4as89dfADk

Sono anche curioso di poter aggiungere dati ai campi per confondere ancora di più un aggressore. Credo che questa sarebbe una forma di SALE?

Example

Field Password: SA234j23kljfs|dSl92slC3lD29

Other field : 23lkj4as89dfADk|298fskASDlk2sl

then split the extra data behind |

(Note that | is there just as a placeholder for this example and it would be split would some sort of logic to split correctly).

User password: SA234j23kljfs23lkj4as89dfADk

C'è qualcosa di sbagliato in entrambi questi approcci? Sicuramente penso che questo sarebbe un problema per qualsiasi aggressore.

EDIT: ho deciso di modificare alcuni dettagli e spiegare meglio / dare esempi migliori di ciò che sto cercando di fare.

Sembra che molte delle risposte avessero a che fare con la suddivisione del testo in chiaro, e poi l'hashing di ogni pezzo, invece di eseguire l'hashing di tutto, quindi dividere ...

Capisco perché suddividere l'hashing è un rischio, ma perché dividere una password già con hash, essere la stessa?

Da quanto ho letto, gli hash non dovrebbero avere alcuna attinenza l'uno con l'altro quindi gli hash "ciao" e "mondo" messi insieme, non dovrebbero essere un hash "helloworld", o è sbagliato?

Grazie.

    
posta XaolingBao 29.05.2016 - 00:37
fonte

2 risposte

4

Questo renderebbe la password MENO sicura.

Considera una password di 16 caratteri composta da una sequenza di lettere, numeri e simboli scelti a caso. Di per sé, questa password è fondamentalmente "noncrissibile" a tutti gli effetti, anche se il tuo database delle password è trapelato, assumendo che tu abbia cancellato la password. Probabilmente potresti anche usare qualcosa di stupido come MD5 e stare bene contro la maggior parte degli attaccanti. Supponendo che una trilione di password indovina al secondo, ci vorranno ancora milioni di anni per decifrare questa password.

Ma ora applichiamo il metodo di archiviazione. Supponi di prendere i primi 8 caratteri e li hai cancellati in un campo, poi prendi i successivi 8 caratteri e cancellali per il campo successivo.

Ora hai due password di 8 caratteri. Ogni password può essere decifrata individualmente in pochi minuti o in alcune ore, a seconda dell'hash che si usa, se il database delle password viene mai perso, semplicemente provando ogni possibile sequenza di 8 caratteri.

Non supponiamo alcun aiuto dal fatto che la password si "nasconde" in due campi diversi. Nella migliore delle ipotesi, hai sicurezza attraverso l'oscurità; stai facendo affidamento sul fatto che l'attaccante non può sapere quali campi combinare insieme. Nel peggiore dei casi, l'autore dell'attacco che riesce a rubare il tuo database delle password, riuscirà anche a rubare il codice del sito web e saprà immediatamente quali campi afferrare. Un principio fondamentale della sicurezza delle informazioni è di assumere sempre che l'hacker sappia come funziona il tuo sistema e assicurarsi che il sistema rimanga sicuro nonostante tale conoscenza.

    
risposta data 29.05.2016 - 03:44
fonte
2

Field Password and "X" contain a part of the hashed function most likely a split of the first Y characters in the password field, and the rest in the "X" Field. Combine and check if correct.

Is there anything wrong with this approach? I surely feel that this would be a problem for any attacker.

Sì, questo indebolisce gravemente la sicurezza dell'hash. Invece di dover risolvere un problema difficile, ora l'autore dell'attacco deve risolvere due problemi esponenzialmente più semplici.

Supponendo che tu usi solo caratteri minuscoli e l'attaccante cerchi di attaccare questo con la forza bruta, invece di dover provare ogni 26**16 = 4.36087429 × 10**22 di possibilità, l'attaccante ora deve solo provare 26**8+26**8 = 417654129152 possibilità, che è 104413532288 tempi più deboli di un semplice hashing di 16 caratteri interi.

Questo è simile alla vulnerabilità Hash NTLM .

    
risposta data 29.05.2016 - 03:50
fonte