R
Rainer Weikusat
Ben Morrow said:I didn't say 'given the input', I said 'given some properties of the
input'.
Actually 'any properties of the input' and 'any properties of the
output'. And the input itself is surely a property of the input.
Suppose you know (or guess) the input is an English phrase. Does
this make some parts of the output space more likely than others? If it
does you've just weakened your key, by making it less random.
If this was so, someone had inadvertently invented an algorithm
capable of understanding English. This algorithm might be a bad 'key
generation algorithm' but it probably a great, commercial opportunity.
Joking aside, a lossy compression function (like MD5 or any other hash
function) always causes 'loss of information' which implies 'loss of
entropy' if there was more in the input than can remain in the 16
output bytes.
[...]
That and rainbow tables are the only completely-implemented breaks I
know of, yes, but I believe it's considered likely there are ways of
partially predicting the output given limited knowledge of the input
(such as, 'it's probably an English phrase'). I'm not a cryptographer,
and I don't pretend to understand this stuff in detail, but if those who
do are saying 'don't use MD5 for this purpose' ISTM it's a good idea to
listen to them.
Some musings on this:
http://tools.ietf.org/html/rfc6151