アカウント名:
パスワード:
例えば、javaの乱数生成のドキュメントでもセキュリティ目的では使用できず、安全なSecureRandomの使用を進めているけど [oracle.com]、
使用する部品の仕様書を逐一確認するのは大変だし、ましてやセキュリティ関連になると、ますます難しい。
セキュリティで食っている会社でもなきゃ、そういったミスは仕方ないんじゃないかなね?カスペルスキーさん トレンドマイクロさん [security.srad.jp]
いや、この脆弱性の本質は、非暗号論的な疑似乱数(今回のケースではメルセンヌ・ツイスタ)を使ったことではなくて、その種がシステム時刻でしかなく、それによって推測しやすくなっていたことでは。
php で言えば、ほとんどの人は mt_rand をそのまま使っていると思いますね。
mt_rand ではランダムの種に現在時刻とプロセスIDを使っているということです(参考資料 [lovepeers.org])ので時刻だけよりかはだいぶマシですが、もっとバレにくくするにはコレ [hatenablog.com]とか参考になると思います。
いやー、実は私も、この事件を知って始めて openssl_random_pseudo_bytes を知った。あぶねー、あぶねー。
mt_randは暗号論的乱数として使えるように設計されていないから使ってはいけないというのは常識だと思ってた
常識と言ってもここ数年くらいのことじゃないですかねそもそも openssl_random_pseudo_bytes が使えるようになったのがPHP 5.3以降(2009年リリース)なのでPHPの全盛期に作られたプログラムやその頃に学んだ人は mt_rand しか知らない
2000年頃に作った俺のプログラムが確か独自のセッションIDを生成してMySQLに入れていたなと思ってコード見てみたが、OSコマンドを発行して /dev/urandom を乱数生成器として使用していた。
2000年頃と書いたけど、コメントに日本語版正式公開前のUS版IE7でのテスト結果が書かれていたので2006年10月頃のコードだった# あの頃はgitでバージョン管理とかしていなかったからいつのデータかコードをよく見ないと分からない
暗号学的乱数が必要な場面をそうと判断できる人は、言語組み込みの汎用乱数をそのまま使ったりはしない。ライブラリか外部モジュールに投げるかスクラッチする。
言語組み込みでの実装が提供されるくらいになったのは比較的最近、と評すべきだろうなその事例は。
常識だと思うのは、まずい、暗号には使うなって書いてあっても、動けばいいと思ってる人とか、気にしない人も結構数がいる。常識と思ってると他の人も正しく処理してくれていると思ってしまう
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
最初のバージョンは常に打ち捨てられる。
これは仕方がないミス (スコア:3, おもしろおかしい)
例えば、javaの乱数生成のドキュメントでも
セキュリティ目的では使用できず、安全なSecureRandomの使用を進めているけど [oracle.com]、
使用する部品の仕様書を逐一確認するのは大変だし、
ましてやセキュリティ関連になると、ますます難しい。
セキュリティで食っている会社でもなきゃ、そういったミスは仕方ないんじゃないかな
ね?カスペルスキーさん トレンドマイクロさん [security.srad.jp]
Re: (スコア:2, すばらしい洞察)
いや、この脆弱性の本質は、非暗号論的な疑似乱数(今回のケースではメルセンヌ・ツイスタ)を使ったことではなくて、
その種がシステム時刻でしかなく、それによって推測しやすくなっていたことでは。
Re: (スコア:2)
php で言えば、ほとんどの人は mt_rand をそのまま使っていると思いますね。
mt_rand ではランダムの種に現在時刻とプロセスIDを使っているということです(参考資料 [lovepeers.org])ので時刻だけよりかはだいぶマシですが、もっとバレにくくするにはコレ [hatenablog.com]とか参考になると思います。
いやー、実は私も、この事件を知って始めて openssl_random_pseudo_bytes を知った。
あぶねー、あぶねー。
Re:これは仕方がないミス (スコア:0)
mt_randは暗号論的乱数として使えるように設計されていないから使ってはいけないというのは常識だと思ってた
Re: (スコア:0)
常識と言ってもここ数年くらいのことじゃないですかね
そもそも openssl_random_pseudo_bytes が使えるようになったのがPHP 5.3以降(2009年リリース)なので
PHPの全盛期に作られたプログラムやその頃に学んだ人は mt_rand しか知らない
それはレベルが低いだけ (スコア:0)
2000年頃に作った俺のプログラムが確か独自のセッションIDを生成してMySQLに入れていたなと思ってコード見てみたが、OSコマンドを発行して /dev/urandom を乱数生成器として使用していた。
2006年だった (スコア:0)
2000年頃と書いたけど、コメントに日本語版正式公開前のUS版IE7でのテスト結果が書かれていたので2006年10月頃のコードだった
# あの頃はgitでバージョン管理とかしていなかったからいつのデータかコードをよく見ないと分からない
Re: (スコア:0)
暗号学的乱数が必要な場面をそうと判断できる人は、
言語組み込みの汎用乱数をそのまま使ったりはしない。
ライブラリか外部モジュールに投げるかスクラッチする。
言語組み込みでの実装が提供されるくらいになったのは比較的最近、
と評すべきだろうなその事例は。
Re: (スコア:0)
常識だと思うのは、まずい、暗号には使うなって書いてあっても、動けばいいと思ってる人とか、気にしない人も結構数がいる。
常識と思ってると他の人も正しく処理してくれていると思ってしまう