From: "NARUSE, Yui" Date: 2011-08-13T17:31:47+09:00 Subject: [ruby-dev:44383] Re: [Ruby 1.8 - Bug #5105] CGI::Session#session_id の生成方法について (2011/07/29 23:55), Tanaka Akira wrote: > 2011年7月29日20:04 とみたまさひろ : > >> ダメでした…。次のスクリプトで同じ乱数が生成されました。 >> >> % ruby -rsecurerandom -e 'OpenSSL::Random.random_bytes(16); 33000.times{pid=fork{p [$$,SecureRandom.hex(16)]}; Process.waitpid pid}' >> > > なるほど。securerandom.rb 以外で OpenSSL::Random.random_bytes が呼ばれると、 > securerandom.rb は fork したことに気がつけないのですね。 > >> SecureRandom.random_bytes がそのプロセスで最初に呼ばれた時には常に >> OpenSSL::Random.seed を呼ぶようにしてみたらうまくいきました。先のメール >> の ary.to_s も一緒に修正しています。 > > 入れておきます。 ふと思ったのですが、 openssl を使うときでも、/dev/urandom があるならば、 openssl の seed に /dev/urandom を一部使ってもいいんじゃないでしょうか。 -- NARUSE, Yui