2

今後取り組む予定のプロジェクトで OpenID を使用することを検討していました。Janrain の OpenID の PHP 実装に関するいくつかのチュートリアルを読み、ソース コードを調べた後、サーバーにアップロードし、Google ID に含まれているサンプル スクリプトをテストしました。CryptUtil.php の Auth_OpenID_RAND_SOURCE が設定されていないというエラーが発生しました。ちゃんと。Google を通じて、デフォルトの /dev/urandom ではなく null として定義するという回答を見つけました。私の質問は、これは明らかに安全ではありませんよね? /dev/urandom は Linux の乱数ジェネレーターですか? 実装をいじるために、自宅の Windows マシンで /dev/urandom を使用する代わりに、どのような良い方法がありますか?

4

1 に答える 1

1

さて、CryptUtil.php は、クラスが

     * 暗号学的に安全な (予測不可能な) 暗号化を使用しようとする試み
     * ランダム性のソース (利用可能な場合)。高エントロピーがない場合
     *乱数ソースが利用可能で、失敗します。最後の手段として、
     * 重要でないシステムについては、定義する
     *Auth_OpenID_RAND_SOURCEとしてnull、および
     * コードは疑似乱数ジェネレーターにフォールバックします。

したがって、この定数を NULL に定義し、かつエントロピーの他のソースを見つけることができない場合、これはエントロピーのソースがまったくないことを意味します - 基本的に、暗号化はありません。/dev/urandom についてのウィキペディアのコメントは次のとおりです

/dev/random に対応するのは /dev/urandom (「ロック解除」/ノンブロッキング ランダム ソース[4]) で、内部プールを再利用してより多くの疑似ランダム ビットを生成します。これは、呼び出しがブロックされないことを意味しますが、出力には、対応する /dev/random からの読み取りよりも少ないエントロピーが含まれる場合があります。その意図は、暗号的に安全な疑似乱数ジェネレーターとして機能することです。これは、安全性の低いアプリケーションに使用できます。

Win32 のエントロピー ソースに関しては、PHP ユーザーランドで利用できる適切なオプションはあまりないようです。

于 2010-11-10T10:27:04.157 に答える