How to give an example for collision in modified Mekle-Damgard construction that does not include input length, with two message that ARE multiple of the block length? (Assume the resulting hash function is only defined for inputs whose length is an integer multiple of the block length.)
It is easy to consider a counter-example in the case where two messages have lengths that are not an integer multiple of the block length. Like: if block length be n and x be a string of mn+n-2 bits, then H(x|00)=H(x0|0), i.e., x and x0 have the same hash value.
1 Answer
Maybe this be an answer for this question:
When messages are an integer multiple of the block length, counter-examples are possible, though they rely on a contrived compression function h, as Katz-Lindell said.
If $$h:\{0,1\}^{2n} \rightarrow \{0, 1\}^{n} \\ h(x_{1}\|x_{2})=h'(x_{1})$$ for some collision resistant hash function $h':\{0,1\}^{*} \rightarrow \{0,1\}^{n} $, then for two given messages $X=x_{1}\|x_{2}$ and $X'=x_{1}\|x_{2}\|x_{3}$ with lengths $|X|=2\ell$ and $|X'|=3\ell$, where $\ell$ is the block length, we have:
$$H(X)=h(x_{2}\|z_{1})=h'(x_{2}) \\ H(X')=h(x_{3}\|z_{2})=h'(x_{3})$$
Now, if we choose $x_{3}=x_{2}$, i.e., $X'=x_{1}\|x_{2}\|x_{2}$, then $H(X)=H(X')=h'(x_{2})$. So we found a collision.
BUT is this a good counter-example?
Because with using this particular hash function, h, we do not use previous hash blocks and kind of making the Merkle-Damgard construction vain!
-
$\begingroup$ Answers go in the answer box, guesses may be included with the question. $\endgroup$– Maarten Bodewes ♦Mar 4 at 2:07