
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: crypto@sikurezza.org Soggetto: Re: questione hash 8 bytes... Mittente: antirez Data: 22 Jan 2001 17:05:16 -0000
On Mon, Jan 22, 2001 at 03:28:03PM +0100, Sorrow The Prince wrote: > ho deciso di optare per un'altra soluzione: una specie di MAC, o, > meglio, una funzione di hash che utilizza un algoritmo di cifratura... > ce ne sono di buoni e meno buoni, spero la mia scelta sia azzeccata :) Se lo fai per la questione della dimensione dell'output della hash function e' solo tempo sprecato AFAIK. > ho una domanda sulla questione "troncaggio": > dati due messaggi M1 e M2, supponiamo la funzione di hash mi dia come > risultato: > H(M1) = 1111aaaa > H(M2) = 1234aaaa > quindi due risultati diversi... > ma se tronco in mezzo, ottengo lo stesso valore aaaa da due messaggi > diversi... Sicuro, ci sono le collisioni, ma se usi un hash differente, o fai l'xor tra le due meta' (sconsigliatissimo) eccetera ci sono sempre le condizioni in cui H(M1) = H(M2) Il fatto di "troncare" ti fa pensare di identificarle mentalmente in maniera semplice. In realta' trovare due messaggi il cui HASH troncato e' uguale equivale a trovare due messaggi il cui hash ottenuto utilizzando una funzione ad una via (con la stessa qualita' di distribuzione) e' uguale. > questo per dirti che non ho afferrato bene il concetto > <<Questo non ha alcun effetto negativo sulle collisioni>> > e > <<questo "taglio" e' utilizzato in crittografia per rendere una funzione ad una via > piu' sicura in un HMAC sotto particolari condizioni>> Il "questo non ha alcun effetto negativo sulle collisioni" penso che ora dovrebbe essere chiaro. Un esempio ancora per chiarire: immagina di prendere solo il primo bit dell'output di SHA1: questo se la distribuzione e' corretta sara' 50% 0 e 50% 1 in media. Se scrivi una funzione ad una via che restituisce un output di un solo bit la distribuzione e' ancora 50% e 50%, poco importa che l'hash intero sia stato qualcosa come 011010011 e 0001011001, le collisioni ci sono sempre ma in ragione della nuova dimensione dell'output. La seconda affermazione "questo taglio e' utilizzato per rendere un HMAC piu' sicuro" si basa sul fatto che negli HMAC l'attacker utilizza l'informazione che questo contiene per tentare un attacco. Se lo tagli l'attacker avra' a disposizione solo meta' di questa informazione. Esempio: Un HMAC potrebbe essere generato accostando al segreto il messaggio, tipo H(secret|message). Questo e' estremamente insicuro perche' forgiare un HMAC corretto che contenga H(secret|message|whatyouwant) e' banale. Se quell'HMAC fosse stato tagliato l'attacker non avrebbe abbastanza informazioni per ripopolare tutti i registri della funzione ad una via e farla ripartire dal punto in cui era rimasta. antirez -- Salvatore Sanfilippo | <antirez@invece.org> http://www.kyuzz.org/antirez | PGP: finger antirez@tella.alicom.com -------------------------------------------------------------------------- informazioni sui comandi supportati da questa ml: http://www.sikurezza.org
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005