Estensione del dominio

Progettazione di funzioni hash:

Senza perdita di generalità, supponiamo che $(Gen, h)$ sia tale che comprima $2n$ bit $\to$ $n$ bit

$\Rightarrow$ $(Gen, H)$ usando la trasformazione di Merkle-Damgard $x \in \{0,1\}^* \to y \in \{0,1\}^n$

Trasformazione Merkle-Damgard

Il messaggio $x$ è diviso in blocchi di $n$ bit $x_1,..,x_B$

Alla fine del messaggio viene aggiunto un extra blocco $x_{B+1}$ in cui viene codificato, sempre con $n$ bit, la lunghezza del messaggio $x$

Ad ogni passo della trasformata, viene utilizzata la funzione di compressione $h^s$ che prende in input il blocco di $n$ bit e il risultato $z_l$ prodotto dalla funzione di compressione precedente, ad eccezione del primo blocco che prende come secondo input un $IV$

Alla fine della trasformata si ottiene il valore hash per la stringa $x$

image.png

Costruzione

<aside> 💡

Sia $(Gen, h)$ una funzione hash con lunghezza fissa per input di lunghezza $2n$ e output di lunghezza $n$

Costruiamo la funzione hash $(Gen, H)$ come segue:

Teorema

Se $(Gen, h)$ è resistente rispetto a collisioni allora anche $(Gen,H)$ lo è

Dimostrazione

Mostriamo che, per qualsiasi $s$, una collisione in $H^s$ dà una collisione in $h^s$

Siano $x$ ed $x'$ due stringhe differenti di lunghezza $L$ ed $L'$ tali che $H^s(x)=H^s(x')$ → $x= x_1..x_Bx_{B+1}$ e $x'= x'1..x'{B'}x'_{B'+1}$

Ci sono due casi da considerare: