ランダム データ (キー、IV など) を生成する必要がありますが、それを行う正しい方法が見つからないようです。
背景は次のとおりです。Visual Studio を使用して Windows 上の c/c++ でサーバーを開発しており、openssl1.0.1c ライブラリを使用しています。
http://www.openssl.org/docs/crypto/RAND_add.html#でopensslを使用したランダムデータ生成のドキュメントを読んでいて、次のことに出くわしました-
"
OpenSSL は、PRNG 状態がスレッドごとに一意であることを確認します。/dev/urandom を提供するシステムでは、乱数デバイスを使用して PRNG を透過的にシードします。ただし、他のすべてのシステムでは、アプリケーションは RAND_add()、RAND_egd(3)、または RAND_load_file(3) を呼び出して PRNG をシードする必要があります。
num == entropy の場合、RAND_seed() は RAND_add() と同等です。
RAND_event() は、マウスの動きやその他のユーザー操作などの Windows イベントからエントロピーを収集します。ウィンドウ プロシージャに送信されるすべてのメッセージの iMsg、wParam、および lParam 引数を指定して呼び出す必要があります。イベント メッセージ (存在する場合) に含まれるエントロピーを推定し、PRNG に追加します。その後、プログラムは通常どおりメッセージを処理できます。
RAND_screen() 関数は、Windows プログラマの便宜のために利用できます。画面の現在のコンテンツを PRNG に追加します。Windows イベントをキャッチできるアプリケーションの場合、RAND_event() を呼び出して PRNG をシードすると、ランダム性が大幅に向上します。ユーザーの操作なしで実行されるサーバーでは、両方の方法を使用できないことに注意してください。 "
現在、私のサーバーは無人モードで実行されているため、Rand_event() および Rand_screen() メソッドを使用できないと思います。Windows で Rand_bytes() メソッドを安全に使用するにはどうすればよいですか? エントロピーを含むファイルをまだ持っていないため、RAND_load_file() は問題外であり、EGD のドキュメント ページのリンクには、Windows でサポートされている EGD がないようです。Rand_bytes() を使用してキー/ivs/ソルトなどを生成できるように、openssl ランダム データ ジェネレーターに十分なエントロピーがシードされていることを確認するにはどうすればよいですか?