- From: Giuseppe Bianchi <
>
- To:
,
- Subject: Re: [ISS] Domanda: Merkle tree
- Date: Wed, 02 Sep 2015 18:52:26 +0200
Occhio: la sicurezza non sta nell'hash ma nella firma digitale del root
hash. Ed il vantaggio e' che l'operazione "pesante" (ovvero la verifoica
della firma digitale) e' fatta solo sul root, al prezzo di log n hash
che comunque sono decisamente piu' leggere.
Nel caso da te descritto, l'attaccante potrebbe facilmente farti
accettare un chunk falso, mandandoti (ovviamente a "nome" di una qualche
autorita') oltre al chunk forgiato, ANCHE l'hash dello stesso, che
ovviamente l'attaccante puo' calcolarsi banalmente non essendoci dentro
alcun segreto (non e' un HMAC).
Per correggere questo problema, invece dell'hash del chunk dovresti
mandare una firma digitale dello stesso, ma questo richiederebbe una
verifica di una firma per chunk, che era il problema che volevamo
risolvere in origine.
Spero di essermi spiegato, se non e' chiaro dimmelo che riformulo.
Saluti, GB
PS: l'altro aspetto interessante dei Merkle trees e' che i sibling
(essendo a loro volta hash) non devono necessariamente essere mandati o
gestiti da una autorita' trusted (come invece assumi nella tua email).
Ovvero se qualcuno ti manda un sibling farlocco o altera un sibling, te
ne accorgi subito.
On 02/09/2015 17:32,
wrote:
>
Buonasera a tutti :)
>
>
come ho specificato nell'oggetto avrei una domanda riguardante gli alberi di
>
Merkle applicati alla verifica di chunk. Per quanto ho capito c'è
>
un'autorità (
>
o comunque l'albero è "certificato" e noto al ricevitore ) che in qualche
>
modo
>
rende noti al ricevitore i "siblings" del chunk di cui si vuole conoscere la
>
validità.
>
A questo punto il ricevitore può "ripercorrere l'albero" eseguendo vari hash
>
(sui vari livelli dell'albero) e verificare infine se si ottiene la radice
>
del
>
Merkle tree. Questo significa che il chunk è corretto.
>
>
La mia domanda è:
>
Assumendo comunque un'autorità fidata che può comunicare hash validi
>
dell'albero di Merkle, non si avrebbe convenienza nell'inviare al ricevitore
>
l'hash del chunk stesso invece che dei suoi siblings? In questo modo a fine
>
trasferimento il ricevitore è sicuro di aver ricevuto tutti i chunk
>
corretti,
>
ed è quindi sicuro della correttezza del file completo. In questo modo
>
calcolerei O(log(n)) meno volte le funzioni hash. (Infatti con la soluzione
>
attuale per ogni chunk devo effettuare log(n) controlli e verificare la
>
correttezza della root del merkle tree, come dico io si esegue 1 controllo
>
per
>
chunk) :)
>
>
Sono sicuro che mi sto perdendo qualcosa, ringrazio chiunque mi voglia
>
illuminare :)
>
>
A presto
>
>
Mirko
>
Archivio con motore MhonArc 2.6.16.