Perché l'hashing di una password con più funzioni hash è inutile?

13

Ho letto online che è inutile e praticamente impraticabile hash una password con più algoritmi di hashing (e non solo uno) prima di memorizzarli in un database. Non capisco davvero perché sia così. Se qualcuno mette le mani su un elenco di hash e non sa quali sono le funzioni hash, come possono essere violate le password? Sembrerebbe che l'uso di una combinazione di più funzioni hash renderebbe le password più sicure ... ma apparentemente non lo sono. Perché no?

Mi riferisco specificamente alla sezione intitolata "Funzioni di hash doppio e strabico" in questo post del blog .

    
posta ninesalt 31.07.2016 - 10:12
fonte

3 risposte

11

L'assunto è sempre che qualsiasi hacker conoscerà il software utilizzato, inclusa la configurazione come viene usato l'hash. Esiste sempre il rischio che la conoscenza svanisca, quindi i sistemi robusti devono essere sicuri anche se la loro fonte è nota. (Forse l'hacker ha acquistato lo stesso software) Inoltre, se l'hacker ottiene in qualche modo solo una password e l'hash corrispondente, è relativamente facile scoprire quale di una serie di funzioni di hash plausibili produce quell'hash.

Per quanto riguarda l'utilizzo di più hash per una password allo stesso tempo, il problema è che di solito rende possibile eseguire la forza bruta sugli hash concentrandosi solo sul più debole o più facile da calcolare (scelto dall'attaccante).

Non c'era alcun collegamento, quindi non so esattamente a quale situazione ti riferisci, naturalmente.

    
risposta data 31.07.2016 - 10:59
fonte
7

Vedi questa domanda correlata sul perché è una cattiva idea combina più funzioni hash .

If someone gets their hands on a list of hashes and he doesn't know what the hash function is, how can the passwords be cracked?

Sembra che tu voglia difendersi dal caso in cui un aggressore abbia avuto accesso al tuo database, ma non al tuo codice sorgente. Tuttavia, impilare più funzioni hash conosciute non è un buon approccio.

Se un utente malintenzionato può registrare un account da sé, avrà una combinazione di password e hash, rendendo piuttosto facile indovinare le funzioni hash utilizzate. Anche se non hanno questo, la funzione bruteforcing della combinazione di funzioni hash utilizzate sarà probabilmente semplice.

Quindi non guadagni nulla semplicemente combinando alcune ben note funzioni di hash, e scrivere da zero da zero è ovviamente una cattiva idea.

Se si desidera un ulteriore segreto dalla propria base di codice anziché dal database, si può prendere in considerazione l'aggiunta di un pepper , che non è solo più sicuro rispetto alla combinazione delle funzioni hash, ma è anche più facile mantenere alcune funzioni (combinazione) personalizzate di hash.

    
risposta data 31.07.2016 - 12:32
fonte
3

Potrebbe non essere completamente inutile, ma forse è un po 'troppo vicino a due pessime idee - vale a dire, sicurezza attraverso l'oscurità e arrotolando la tua crittografia.

Ilkkachu ha detto sopra che assumiamo che l'attaccante conosca l'implementazione specifica (principio di Kerckhoff). Se questo non è il caso, allora siamo tentati di fare affidamento sulle specifiche della nostra implementazione per la sicurezza, e questo crea un ulteriore punto debole. In secondo luogo, tutto ciò che va oltre gli standard progettati dagli esperti è rischioso, perché è molto, molto difficile essere sicuri di non aver aggiunto alcuna vulnerabilità.

    
risposta data 31.07.2016 - 12:30
fonte

Leggi altre domande sui tag