Esiste una soglia di bit di entropia al di sotto della quale l'hashing diventa privo di significato?

8

Ho appena letto una pagina di aiuto di un provider di posta in cui affermano che tutti i numeri di cellulare saranno stored come hash salato. Questo mi sembra interessante, dal momento che i numeri di telefono non contengono molta entropia: circa 31 bit dai miei calcoli.

A seconda della funzione di hashing, la generazione di 2 hash 31 dovrebbe essere abbastanza veloce. Funzioni di hash adattive come bcrypt consentono di aumentare il numero di iterazioni. Craccare un simile hash richiederebbe molto più tempo, ma l'utilizzo di troppe iterazioni rallenterà l'applicazione nel suo complesso.

Per farla breve: esiste una quantità minima di entropia al di sotto della quale l'hashing diventa inutile o dannoso?

    
posta tarleb 03.02.2016 - 22:04
fonte

2 risposte

3

Per una funzione di accesso, dovresti mirare a fare in modo che il processo di hashing richieda circa un secondo.

Se prendi questo post come guida, 1170ms richiede circa 8.192 iterazioni di bcrypt (costo di 13) .

Questo significa che le tue iterazioni aggiungono circa 13 bit di entropia efficace.

Se hai solo 31 bit di entropia in un valore hash segreto, allora questa configurazione di bcrypt ti darà 44 bit di entropia.

Come guida, 47 bit di entropia richiederebbero un massimo di 0,223 ore per rompere per numero di telefono (supponendo 350 miliardi supposizioni / Sec). Anche se l'hacker non aveva questo tipo di risorse e ha indovinato a 2 miliardi di ipotesi / Sec utilizzando un unico PC domestico, ci sarebbero voluti 39 ore per numero di telefono da decifrare.

Quindi, per rispondere alla tua domanda, non ha senso quando hai bisogno di aumentare il tempo di hashing a un livello inaccettabile (un costo di 16 per aggiungere 16 bit sarebbe superiore a 9 secondi, ciò che definiresti come dannoso alla tua applicazione), o che il tempo di cracking per segreto è inferiore al tuo obiettivo per la sensibilità delle informazioni che sta proteggendo e le risorse del tuo presunto aggressore.

Se è accettabile che ogni numero di telefono impieghi 39 ore per attaccare in modo casuale, quindi non c'è alcun problema con bcrypt al costo di 13. Questo presuppone che stiano usando bcrypt con detto costo e non semplicemente memorizzando SHA1 (sale + numero).

    
risposta data 04.02.2016 - 12:32
fonte
0

Non c'è una linea magica oltre la quale l'hashing è inutile. Piuttosto, riducendo l'entropia dell'input, l'output diventa più facile da indovinare.

Nel caso di questo provider di posta, possono aggiungere entropia usando il sale. Più grande è il sale, maggiore sarà l'entropia che aggiungerà.

    
risposta data 03.02.2016 - 23:59
fonte

Leggi altre domande sui tag