Christian Heimes added the comment: Am 15.08.2013 15:14, schrieb Antoine Pitrou: >> Python doesn't have a builtin PRNG. > > Of course it does. It's in the random module, and you can seed() it:
Now you are nit-picking. Although random is a PRNG, it is not a CPRNG. I'm clearly talking about the integrity of a CPRNG here. >> We use the OS's CPRNG such as /dev/urandom or CryptGenRandom(). > > "We"? Python's os.urandom() and _PyOS_URandom(). > Well, are they affected? I haven't understood your previous answer. > ("OpenSSL uses its own PRNG to create (amongst others) session keys for SSL > connections") Yes, they are are affected. A forking HTTPS server does: 1) listen() on a TCP port 2) accept() new TCP connection 3) fork() a child process to handle request 4) do SSL handshake in the child process 5) read/write data in child process When the OpenSSL's CPRNG is already initialized before 3) than all child processes created by 3) will have almost the same PRNG state. According to http://bugs.ruby-lang.org/issues/4579 the PRNG will return the same value when PID numbers are recycled. > Note that it seems debatable whether it's an OpenSSL bug: > http://www.openwall.com/lists/oss-security/2013/04/12/3 It probably is an OpenSSL bug but the declaration doesn't help us. It's not the first time Python has to work around OpenSSL, e.g. #18709. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18747> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com