パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

カスペルスキー製パスワードマネージャーに脆弱性。同じ時刻に同じパスワードを生成」記事へのコメント

  • これは仕方がないミス (スコア:3, おもしろおかしい)

    by Anonymous Coward on 2021年07月12日 18時18分 (#4069237)

    例えば、javaの乱数生成のドキュメントでも
    セキュリティ目的では使用できず、安全なSecureRandomの使用を進めているけど [oracle.com]、

    使用する部品の仕様書を逐一確認するのは大変だし、
    ましてやセキュリティ関連になると、ますます難しい。

    セキュリティで食っている会社でもなきゃ、そういったミスは仕方ないんじゃないかな
    ね?カスペルスキーさん トレンドマイクロさん [security.srad.jp]

    • by Anonymous Coward on 2021年07月12日 18時54分 (#4069270)

      いや、この脆弱性の本質は、非暗号論的な疑似乱数(今回のケースではメルセンヌ・ツイスタ)を使ったことではなくて、
      その種がシステム時刻でしかなく、それによって推測しやすくなっていたことでは。

      親コメント
      • php で言えば、ほとんどの人は mt_rand をそのまま使っていると思いますね。

        mt_rand ではランダムの種に現在時刻とプロセスIDを使っているということです(参考資料 [lovepeers.org])ので時刻だけよりかはだいぶマシですが、もっとバレにくくするにはコレ [hatenablog.com]とか参考になると思います。

        いやー、実は私も、この事件を知って始めて openssl_random_pseudo_bytes を知った。
        あぶねー、あぶねー。

        親コメント
        • by Anonymous Coward

          mt_randは暗号論的乱数として使えるように設計されていないから使ってはいけないというのは常識だと思ってた

          • by Anonymous Coward

            常識と言ってもここ数年くらいのことじゃないですかね
            そもそも openssl_random_pseudo_bytes が使えるようになったのがPHP 5.3以降(2009年リリース)なので
            PHPの全盛期に作られたプログラムやその頃に学んだ人は mt_rand しか知らない

            • 2000年頃に作った俺のプログラムが確か独自のセッションIDを生成してMySQLに入れていたなと思ってコード見てみたが、OSコマンドを発行して /dev/urandom を乱数生成器として使用していた。

              • by Anonymous Coward

                2000年頃と書いたけど、コメントに日本語版正式公開前のUS版IE7でのテスト結果が書かれていたので2006年10月頃のコードだった
                # あの頃はgitでバージョン管理とかしていなかったからいつのデータかコードをよく見ないと分からない

            • by Anonymous Coward

              暗号学的乱数が必要な場面をそうと判断できる人は、
              言語組み込みの汎用乱数をそのまま使ったりはしない。
              ライブラリか外部モジュールに投げるかスクラッチする。

              言語組み込みでの実装が提供されるくらいになったのは比較的最近、
              と評すべきだろうなその事例は。

          • by Anonymous Coward

            常識だと思うのは、まずい、暗号には使うなって書いてあっても、動けばいいと思ってる人とか、気にしない人も結構数がいる。
            常識と思ってると他の人も正しく処理してくれていると思ってしまう

        • by Anonymous Coward

          PHP 7以降であれば、random_bytesおよびrandom_intという選択肢もあります。

          https://www.php.net/manual/ja/ref.csprng.php [php.net]

      • by Anonymous Coward

        いやこれ単なる嫌味じゃろ

        • by Anonymous Coward

          その嫌味が間違ってて嫌味になってないって指摘じゃない
          乱数生成アルゴリズムが適切に選択されてないって指摘に、よく見かける seed bit 分の空間しか持ってないってミスじゃないかという指摘
          とっちが正しいのかは流し読みしかしてないから知らん

          • by Anonymous Coward

            この前のスクエニの人?

          • by Anonymous Coward

            間違ってるも何も単によくある誤りの例示であって今回の話じゃないやろ

          • by Anonymous Coward

            いやいや
            そういう技術的な話じゃなくて

            カスペルスキーはセキュリティ関連企業じゃないから
            そんな専門的なこと知らなくても仕方ないよね、って話なのでは

      • by Anonymous Coward

        よくはしらんけど、/dev/randomにあたるものってWindowsにないのか、使いづらいの?

      • by Anonymous Coward

        いや、種にたかだか32ビットの整数1つしか使うことのできないメルセンヌ・ツイスターは根本的に暗号論的な疑似乱数として使うことは不可能

        • 32bitsのseedでは小さい。もっと大きな初期値空間が欲しい。

          2002年版mt19937ar.cの 初期化ルーチンには、符号なし一ワードのseedにより 初期化を行うinit_genrand(seed)のほかに、 符号なしワードの配列init_key[]からkey_length個の 数値を取り出し、変換してMTの状態配列とする初期化ルーチン init_by_arrayがあります。これにより、任意長の配列を 初期値として用いることができます。

          http://www.math.sci.hiroshima-u.ac.jp/m-mat/MT/faq.html [hiroshima-u.ac.jp]

          親コメント
        • by Anonymous Coward

          お前、絶対に分かっててボケ入れてるだろ…
          付き合ってあげるけどさ。

          32ビット版メルセンヌ・ツイスタは(624+1)×32ビットの内部ベクトルを持つ。
          だから20000ビットのシードで初期化できる。
          今回みたいな利用ケースなら、適切に初期化すれば12文字のあらゆる組み合わせが生成できるはずなの。暗号論的疑似乱数でないことはここでは問題にならないの。
          まあ、20000ビットもの予測困難なシードが得られるんなら、メルセンヌ・ツイスタなんか使わずにそのシードをパスワードに変換すればいいのにって話なんだけどね。
          12文字のパスワードなんて100ビットも情報ないんだから

にわかな奴ほど語りたがる -- あるハッカー

処理中...