Improving mt_rand() seed

From: Date: Mon, 16 Jan 2017 07:04:21 +0000
Subject: Improving mt_rand() seed
Groups: php.internals 
Request: Send a blank email to internals+get-97774@lists.php.net to get a copy of this message
Hi all, Since I was about to improve uniqid()'s entropy by replacing php_combined_lcg() to php_random_int(), I spent time to check other places that could be a problem. mt_rand()'s is seeded as follows by default. ext/standard/php_rand.h #ifdef PHP_WIN32 #define GENERATE_SEED() (((zend_long) (time(0) * GetCurrentProcessId())) ^ ((zend_long) (1000000.0 * php_combined_lcg()))) #else #define GENERATE_SEED() (((zend_long) (time(0) * getpid())) ^ ((zend_long) (1000000.0 * php_combined_lcg()))) #endif We know this kind of seed is guessable. i.e. Our session id is compromised by this kind of code. Although it would be rare that raw mt_rand() value is exposed, but guessable value is guessable. I'm going to replace the seeding code by simple php_random_int() call. Any comments? Regards, -- Yasuo Ohgaki yohgaki@ohgaki.net

« previous php.internals (#97774) next »