Hash extension (padding) attack

2

Recentemente mi sono imbattuto in questo sito web parlando di attacco di imbottitura sha1.

link

Dopo aver letto qui ci sono alcuni dei miei dubbi:

  1. In che modo il lato server controlla la firma? Anche dopo successo riempimento, l'hash sha1 è ancora diverso dalla firma di convalida non è vero?

Ad esempio:
secretkey = key1
username = shaun
ruolo = 1
sha1 hash: b7de8c16d9f42394b51e0c1c86c36a4b9bca8d49

secretkey = key1
username = shaun
ruolo = 0
sha1 shah: 4e86a40776a282816ee0654cb2ec8a3fb2bd25e5

Qualcuno può spiegarmi quale parte ho capito male? Grazie mille :)

    
posta ysj 27.04.2013 - 16:24
fonte

1 risposta

4

In questo esempio, il codice del server è simile al seguente:

Incoming value is "X|Y" -> split between "X" and "Y"
Compute id = Un-Base64(X)
Compute h = SHA-1(secret_key + id)
If the hexadecimal value of h is not equal to Y, then deny access
id is "user|role" with "role" being either 0 or 1; so, if id ends with "|0",
grant administrator access.

secret_key , ovviamente, è sconosciuto all'attaccante. Ma l'attaccante può tentare di indovinare la lunghezza di quella chiave, se solo provando diverse lunghezze; in questo esempio, secret_key ha una lunghezza di 25 byte.

SHA-1 soffre del attacco di estensione della lunghezza (come tutti Merkle-Damgård funzioni di hash). Vedi questa risposta per spiegazioni dettagliate; la linea di fondo è che conoscendo la lunghezza di secret_key , l'attaccante può calcolare una speciale stringa "id" come questa:

id2 = aaaa|1somebytes|0

dove somebytes include il padding standard SHA-1, e quindi l'attacker può calcolare il valore hash appropriato per quel "id", iniziando con il valore noto SHA-1 (quello per aaaa|1 ) e senza conoscere secret_key (questo è il punto dell '"attacco di estensione della lunghezza": calcolo h (m') dove m ' inizia con uno sconosciuto < em> m , ma con h (m) conosciuto).

Il server crede che la stringa "id" fornita sia autentica e concede i diritti di amministratore a un utente denominato "aaaa | 1somebytes".

    
risposta data 27.04.2013 - 18:12
fonte

Leggi altre domande sui tag