> On Nov 12, 2014, at 2:34 PM, Alex Gaynor <[email protected]> wrote:
> 
> Hi everybody!
> 
> Right now, PyPI provides MD5 hashes for packages, which is used by pip to 
> check
> for corruption in transit. I'd like to propose we replace MD5 with SHA256 for
> PyPi, and move to deprecate MD5 support in pip and setuptools.
> 
> Why should we do this? MD5 is broken. Collision resistance is totally 100%
> uselessly busted, and pre-image resistance is mathematically broken; practical
> attacks aren't known publicly, but it's reasonable to assume private attacks
> are strong because (sing it with me): "Attacks only get better".
> 
> So MD5 doesn't provide the guarantees one might expect; SHA256 is not 
> broken in
> these ways. But it's not just not providing value, it's actively causing
> problems: some machines, such as those with packages compiled to meet
> FIPS-140-2 do not have MD5 available at all, and so pip's verification raises
> an exception.
> 
> While one might be inclined to find a way to silently support both machine
> configurations, I'd like to instead say we should abhor any additional
> configuration (whether user supplied or auto-detected) and instead simply
> upgrade the hashes offered by PyPI, and begin the deprecation process for 
> MD5
> in pip.
> 
> There are currently 60 packages on PyPI which are *not* hosted on PyPI, but 
> do
> have MD5 hashes there. For these packages we could download the package, 
> verify
> the MD5 hash, and then upgrade what PyPI stores to be SHA256.


+1 from me.

Security wise pip supported sha256 before it supported TLS so for pip anything
that has the ability to securely fetch the sums from the /simple/ pages has
the ability to use sha256. For setuptools there was a small window where
setuptools implemented TLS verification (0.7) and implemented the support for
things other than MD5 (0.9). However I don’t think this small window represents
a large (or any?) number of users.

IOW the impact should be non-existent other than having better digests.

---
Donald Stufft
PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA

_______________________________________________
Distutils-SIG maillist  -  [email protected]
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to