Armin Rigo added the comment:

Just to make it extra clear: Vlado showed that the "-R" switch of Python can 
easily be made fully pointless, with only a bit of extra work.  Here is how:

* Assume you have an algo that gives you as many strings with colliding hashes 
as you want, provided you know the last 8 bits of the secret prefix.

* Say you want to attack a web server.  You send it 256 requests, each with 100 
strings that have identical hash for one of the 256 possible values.  You 
measure which one is significantly slower than the others.

* From there you are back in the original situation: you know which of the 256 
values to pick, so you can make the web server crawl by sending it a large 
number of strings that have identical hashes for this particular value.

It's interesting to note how this whole -R discussion made very long threads on 
python-dev, and python-dev has subsequently ignored (for the past 6 months!) 
the fact that their "fix" can be worked around in a matter of minutes.

(For information, I'm sure that if the algorithm is improved to depend on all 
32 or 64 bits of the prefix, it would still be easy to crack it.  You don't 
actually need to send 2**32 or 2**64 requests to the web server: with careful 
design you can send only 32 or 64 requests that each leak one bit of 
information.  Doing that requires a bit more research, but once the recipe is 
known, it can be freely reused, which seems to defeat the original point.)

----------
nosy: +arigo

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14621>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to