From: "NAKAMURA, Hiroshi" Date: 2007-06-09T22:13:05+09:00 Subject: [ruby-dev:30944] Re: secrand.rb -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 本筋に関しては別の人のコメントを待ちます(なければないでOK)。脇道だけ。 Tanaka Akira wrote: >>> 種が1つじゃ困る、というのはよくわかりません。シミュレーショ >>> ン用の疑似乱数ならそうでしょうが、cookie に使う secure >>> random number ならひとつあればいいような。 >> cookieに使うsecure RNGについては、ひとつあればよいと思います(*)。それ以 >> 外に、randとsrandに依存しているライブラリが複数あって、それを混ぜて使う >> アプリケーションの場合、あるライブラリが呼んだsrandが他のライブラリの前 >> 提を壊すことはないか、と。例えば私がsoap4rの中でこっそりsrand呼ぶと、一 >> 緒に使われて発狂するライブラリとか、ないかな。 > > rand を自分で占有するのはあからさまに無理っぽいので、そうし > たければ自前でやるのではないかという気がします。 > > そういう pseudo random number generator のクラスを最初から > ruby が提供するのはありうると思いますが、 提供したほうがいいと思ってます。お前がやれって? もちろんわかってる人は自前で作るでしょうが、例えば現状のcgi/session.rbで もやってなかったわけで。Railsのどこぞのプラグインがsrandしたおかげで、認 証機構が役立たなくなってたとか、いつか起こるんじゃないですかね。 簡単に使える代替案があれば、「ライブラリ作者はrandは危険だから使うな」と 主張し易くなる。 > # nonce って secure random でないとよろしくないですよね? 厳密に言えば、onceであることがその存在意義なので、secure randomである必 要性はありません。例えば0からincrementalでもOKです。で、Rubyでは、randで 生成しちゃ駄目です。先の話のように、誰かが意図的に、srand(1)とか埋め込む かもしれない(毎回同じ値になる可能性があり、onceじゃなくなる)。 まぁ、開発者の誰もが厳密に考えるわけじゃないので、「nonceには SecureRandom使っとけ」というのはいいかもしれません。 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) iQEVAwUBRmqnOh9L2jg5EEGlAQKyFgf+PH47+MipY9oTmMc1RwQr/c7QnzG5I8Bo 6EtZCY/H25Err8uLbS9xosqaCuIwt1D/BFkyE57sjJP9q+5gqZUFe6+H4xS6htLA +TMkP3bMDXmG5mKj/6j4f3HKbQFQ6bGAFs53qFX+ZQW6rWZ0okrs0LVurzUiJpZC moBWKUon44bBeO62zAGssUoW6s1N0+ZzKMnMFY56f9Xrlh17fejE3UG9vMYHRR/o 58xgMRTesonIsftk04FpLbR3POzuBxR0bigJy5x7rhMAQwzPv82oYE7viwhs/+FB xwktIkm0ZAdl4BGlZ017USVFrApfe1BoJVUUGhtTRrMbBPS6Pgcsig== =o4LL -----END PGP SIGNATURE-----