È insicuro hash più volte?

5

L'hashing di più volte (round) sembra una pratica standard nell'hash delle password per aumentare il fattore di lavoro.

Sicuramente, tutti saranno d'accordo nell'aumentare il fattore lavoro per calcolare l'hash della password è una buona cosa, ma mi chiedevo se non stessimo riducendo il fattore casuale dell'hash allo stesso tempo.

La mia teoria

Prendiamo un hash con un output a n bit.

È possibile che non si otterranno mai alcuni dei valori possibili di n bit quando si inseriscono tutti i possibili valori possibili di n-bit?

Ciò significherebbe che alcuni valori hash sono più probabili di altri poiché possono essere ottenuti da più valori di immissione. Significa anche che la funzione hash crea sottociclo che può essere molto brutto.

Il mio test

Volevo verificare se la mia teoria avesse dei meriti ma, ovviamente, non avevo la potenza di calcolo necessaria per analizzare una vera funzione di hash, quindi ne ho creato uno semplicistico.

La mia funzione emette i primi 8 bit di SHA512.

Ho quindi inserito tutti i possibili valori di 8 bit in questa funzione e salvato i risultati.

Definizioni

  • Root: un valore a 8 bit che non si ottiene mai
  • Percorso: tutti i possibili valori che puoi ottenere per la singola voce se hai cancellato più volte
  • Ciclo: valori che si ripetono quando si hash più volte

I risultati

  • Numero di radici: 97
  • Percorso più lungo: 36
  • Lunghezza media percorso: 17,21
  • Numero di cicli: 5
  • Ciclo più lungo: 6
  • Numero di valori nei cicli: 13
  • Percorso più lungo senza valori di ciclo: 30
  • Lunghezza del percorso media senza valori del ciclo: 11,72

Conclusione allarmante

Questi risultati significano che se hai un hash una volta hai 159 possibilità, ma se hai hash 30 volte hai solo 13 possibilità.

Altri test

Ho aggiunto un sale che ho anteposto al valore ad ogni round. Ho pensato che potrebbe fare la differenza, ma ottengo risultati quasi simili con diversi valori di sale.

Le mie domande

So che il mio esperimento è troppo semplificato ma:

  • E 'possibile che l'hashing più volte riduca la sicurezza di una funzione di hash se hai cancellato troppe volte?
  • C'è qualche studio su questo argomento?
posta Gudradain 25.02.2015 - 23:08
fonte

1 risposta

2

Vedi questa domanda per i dettagli. In parole povere, quando si itera una funzione di hash in uno spazio di dimensioni N , quindi, dopo una media di passi sqrt (N) , si immette un ciclo la cui lunghezza è dimensione approssimativamente sqrt (N) . Con una, ad esempio, funzione di hash a 160 bit (ad esempio SHA-1), entrambe le dimensioni saranno circa 2 80 , cioè troppo grandi perché si verifichino effettivamente dei problemi.

    
risposta data 25.02.2015 - 23:35
fonte

Leggi altre domande sui tag