PHPのmt_rand関数が壊れている問題


PHPのmt_rand関数のtwistマクロに一文字タイポがあり、修正されたのですが

http://git.php.net/?p=php-src.git;a=commitdiff;h=a0724d30817600540946b41e40f4cfc2a0c30f80

でリバートされてしまいました。

リバートのパッチはコレです。

 

修正しなくても実用的には問題がない、との判断もあったようです。そこでENTというエントロピーを分析するツールで簡単に確認してみました。

 

修正済の場合

 

未修正の場合

 

恐らく普通の疑似乱数が必要な場合の用途では問題はないと思われます。しかしこのテスト結果をもって、これで万全!とは行かずMT randが持つ非常に長い周期性が保たれているか?などの確認も必要です。

暗号理論的に安全な乱数が必要な場合は、random_bytesrandom_intを使用すべきです。(利用できない場合はopenssl_random_pseudo_bytesか/dev/urandomなどを利用する)

一応、修正すべきでは?と提案していますが、どうなるかは判りません。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です