21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Noncorrelation<br />

It should also be computationally infeasible to find out anything about the original<br />

plaintext value; the input bits and output bits should not be correlated.<br />

Weak collision resistance<br />

If given a plaintext value and the corresponding hash value, it should be computationally<br />

infeasible to find a second plaintext value that gives the same hash value.<br />

Strong collision resistance<br />

It should be computationally infeasible to find two arbitrary inputs that give the<br />

same hash value.<br />

Partial collision resistance<br />

It should be computationally infeasible to find two arbitrary inputs that give two<br />

hashes that differ only by a few bits. The difficulty of finding partial collisions of<br />

size n should, in the worst case, be about as difficult as brute-forcing a symmetric<br />

key of length n/2.<br />

Unfortunately, there are cryptographic hash functions that have been found to be<br />

broken with regard to one or more of the above properties. MD4 is one example that<br />

is still in use today, despite its insecurity. MD5 is worrisome as well. No full break of<br />

MD5 has been published, but there is a well-known problem with a very significant<br />

component of MD5, resulting in very low trust in the security of MD5. Most cryptographers<br />

recommend against using it in any new applications. In addition, because<br />

MD5 was broken a long time ago, in 1995, it’s a strong possibility that a government<br />

or some other entity has a full break that is not being shared.<br />

For the time being, it’s not unreasonable to use MD5 in legacy applications and in<br />

some applications where the ability to break MD5 buys little to nothing (don’t try to<br />

be the judge of this yourself!), but do realize that you might need to replace MD5<br />

entirely in the short term.<br />

The strength of a good hash function differs depending on the circumstances of its<br />

use. When given a known hash value, finding an input that produces that hash value<br />

should have no attack much better than brute force. In that case, the effective<br />

strength of the hash algorithm will usually be related to the length of the algorithm’s<br />

output. That is, the strength of a strong hash algorithm against such an attack should<br />

be roughly equivalent to the strength of an excellent block cipher with keys of that<br />

length.<br />

However, hash algorithms are much better at protecting against attacks against the<br />

one-wayness of the function than they are at protecting against attacks on the strong<br />

collision resistance. Basically, if the application in question requires the strong collision<br />

resistance property, the algorithm will generally have its effective strength<br />

halved in terms of number of bits. That is, SHA1, which has a 160-bit output, would<br />

have the equivalent of 80 bits of security, when this property is required.<br />

It can be quite difficult to determine whether an application that uses hash functions<br />

really does need the strong collision resistance property. Basically, it is best to<br />

Choosing a Cryptographic Hash Algorithm | 255<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!