<div class="gmail_quote">On Tue, Jul 3, 2012 at 7:33 PM, Jennings,  Jared L CTR USAF AFMC 46 SK/CCI <span dir="ltr">&lt;<a href="mailto:jared.jennings.ctr@eglin.af.mil" target="_blank">jared.jennings.ctr@eglin.af.mil</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On hosts configured for compliance with U.S. Federal Information<br>
Processing Standard (FIPS) 140-2<br>
&lt;<a href="http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf" target="_blank">http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf</a>&gt;, like<br>
those in some banks and, yes, the U.S. Department of Defense,<br>
cryptographic modules (such as OpenSSL, which underlies hashlib) are not<br>
allowed to calculate MD5 digests, because MD5 is no longer a FIPS<br>
Approved digest algorithm.<br></blockquote><div><br>So if it&#39;s not a cryptographic module, it&#39;s okay?  ;-) <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


I know no one is trying here to lean on MD5 for security, but the<br>
standard says nothing about the reason why you&#39;re using MD5: just that<br>
you can&#39;t.<br>
<br>
No one expects a digest algorithm to fail, and Python 2.x may not have<br>
been fixed to check for that before being frozen<br>
&lt;<a href="https://bugzilla.redhat.com/show_bug.cgi?id=746118#c3" target="_blank">https://bugzilla.redhat.com/show_bug.cgi?id=746118#c3</a>&gt;, so if you run<br>
an MD5 checksum on a FIPS-compliant system with an unpatched Python 2.x,<br>
the Python interpreter will segfault. (Ruby, too, had this problem and<br>
was itself only recently fixed,<br>
&lt;<a href="http://bugs.ruby-lang.org/issues/4944" target="_blank">http://bugs.ruby-lang.org/issues/4944</a>&gt;.)<br>
<br>
I have to configure hosts in accordance with FIPS 140-2, so the more<br>
places I can get rid of MD5, the less headaches I have.<br></blockquote></div><br>If we replace it with something else, then I suggest we replace it with something that&#39;s even MORE braindead than md5 so that nobody will mistake it for a secure hash.  Otherwise, we will have this exact same problem all over again when the replacement &quot;secure&quot; hash is disabled by a newer version of FIPS.<br>
<br>The other option is simply to forego a checksum altogether and assume same size = same file.  Honestly, I don&#39;t remember why we cared about detecting such modifications in the first place: neither PEP 376 nor 262 explain why, and 376 doesn&#39;t explain why it went with md5 instead of sha1 (as in PEP 262).<br>
<br>