Scontro potenziale con password hash

2

Normalmente, la dimensione della password è fissata dalla funzione di hash in cui viene data la password giusta?

Perché altrimenti, se la dimensione della password è più grande della dimensione del risultato hash, ci dovrebbe essere una potenziale collisione, ho ragione?

Es: si consideri la funzione hash SHA-1, la dimensione del risultato è 160 bit (o 20 byte). Se la dimensione della password è maggiore di 20 byte, ci sono almeno due password possibili per lo stesso hash.

    
posta Kruncho 09.06.2015 - 12:27
fonte

3 risposte

6

Ciò di cui stai parlando è noto come principio del pigeonhole - se hai n possibili password e una funzione di hash con m possibili output, dove n > m , ci saranno sempre alcuni valori di input che producono gli stessi hash di output.

La domanda diventa quindi: importa? Con uno spazio di output hash di 2 160 valori possibili, una collisione accidentale ha una probabilità di circa 6.842 × 10 -49 . Non molto Ciò diventa più interessante quando si esaminano gli attacchi di compleanno , perché le probabilità diventano molto più elevate, ma è ancora generalmente considerata impossibile da trovare Collisioni a 160 bit che utilizzano metodi naive come brute-force.

In realtà, è più probabile che un attaccante intelligente si concentri sulle vulnerabilità all'interno della funzione hash che riducono il calcolo necessario per trovare una collisione. Ma, nell'arena della memorizzazione delle password, questo dovrebbe essere per lo più discutibile - le password sono facili da decifrare se le si esegue solo con SHA1, perché le GPU possono eseguire la forza bruta ad una velocità di miliardi di hash al secondo a causa della loro natura massicciamente parallela.

Se si desidera memorizzare le password in modo sicuro, non utilizzare un hash. Utilizza un algoritmo di derivazione chiave progettato per l'archiviazione di password, come PBKDF2 o bcrypt . Dovresti anche dare un'occhiata a una risposta correlata Ho scritto sugli hash salati, che va nella storia di come siamo passati dagli hash, agli hash salati, ai moderni KDF e alle motivazioni dietro ogni passo di difesa e attacco.

    
risposta data 09.06.2015 - 12:47
fonte
1

la dimensione della password è fissata dalla funzione di hash in cui viene fornita la password

- > No.

L'hash funziona con le password hash di qualsiasi lunghezza su una stringa di lunghezza più piccola. Difficilmente si scontrano.

Ciò che può prometterti una collisione è che hai hash 2 ^ 160 + 1 numero di password diverse, quindi almeno un hash deve scontrarsi. Solo l'hashing di due password di lunghezza superiore a 20 byte non colliderà.

    
risposta data 09.06.2015 - 12:42
fonte
0

Sì, statisticamente hai ragione. Ma considera il numero di password con una lunghezza di 160 bit, il suo 2 ^ 160 = 1461501637330902918203684832716283019655932542976

E la collisione può verificarsi anche tra due password di 3 caratteri:)

    
risposta data 09.06.2015 - 12:41
fonte

Leggi altre domande sui tag