On 7/4/12 2:50 AM, PJ Eby wrote:
On Tue, Jul 3, 2012 at 7:33 PM, Jennings, Jared L CTR USAF AFMC 46
SK/CCI <jared.jennings....@eglin.af.mil
<mailto:jared.jennings....@eglin.af.mil>> wrote:
On hosts configured for compliance with U.S. Federal Information
Processing Standard (FIPS) 140-2
<http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf>, like
those in some banks and, yes, the U.S. Department of Defense,
cryptographic modules (such as OpenSSL, which underlies hashlib)
are not
allowed to calculate MD5 digests, because MD5 is no longer a FIPS
Approved digest algorithm.
So if it's not a cryptographic module, it's okay? ;-)
I know no one is trying here to lean on MD5 for security, but the
standard says nothing about the reason why you're using MD5: just that
you can't.
No one expects a digest algorithm to fail, and Python 2.x may not have
been fixed to check for that before being frozen
<https://bugzilla.redhat.com/show_bug.cgi?id=746118#c3>, so if you run
an MD5 checksum on a FIPS-compliant system with an unpatched
Python 2.x,
the Python interpreter will segfault. (Ruby, too, had this problem and
was itself only recently fixed,
<http://bugs.ruby-lang.org/issues/4944>.)
I have to configure hosts in accordance with FIPS 140-2, so the more
places I can get rid of MD5, the less headaches I have.
If we replace it with something else, then I suggest we replace it
with something that'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 "secure" hash is disabled
by a newer version of FIPS.
The other option is simply to forego a checksum altogether and assume
same size = same file. Honestly, I don't remember why we cared about
detecting such modifications in the first place: neither PEP 376 nor
262 explain why, and 376 doesn't explain why it went with md5 instead
of sha1 (as in PEP 262).
I wanted to be able to offer a way for installers to detect that a file
was changed to avoid deleting it for instance, and issue a warning to
the user -- or maybe give a chance to the installer to save a copy of
the file somewhere.
I picked md5 because I wanted it brain dead and could not imagine that
would be an issue somehow. Maybe zlib.crc32 would be a better choice.
If we remove the hash, oh well. no big deal I guess. If an installer
wants to add this feature it can maintain hashes itself.
_______________________________________________
Distutils-SIG maillist - Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig
_______________________________________________
Distutils-SIG maillist - Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig