問題はランダム性そのもの (rand があります) ではなく、暗号的に安全な PRNG にあります。Linux、または理想的には POSIX で使用できるものは何ですか? NSSには何か便利なものがありますか?
明確化: /dev/random については知っていますが、エントロピー プールが不足する可能性があります。また、/dev/urandom が暗号学的に安全であることが保証されているかどうかもわかりません。
問題はランダム性そのもの (rand があります) ではなく、暗号的に安全な PRNG にあります。Linux、または理想的には POSIX で使用できるものは何ですか? NSSには何か便利なものがありますか?
明確化: /dev/random については知っていますが、エントロピー プールが不足する可能性があります。また、/dev/urandom が暗号学的に安全であることが保証されているかどうかもわかりません。
ウィキペディアから(私のイタリック体):
/dev/random に対応するのは /dev/urandom (「ロック解除された」ランダム ソース) で、内部プールを再利用してより多くの疑似乱数ビットを生成します。これは、呼び出しがブロックされないことを意味しますが、出力には、対応する /dev/random からの読み取りよりも少ないエントロピーが含まれる場合があります。その意図は、暗号的に安全な疑似乱数ジェネレーターとして機能することです。これは、安全性の低いアプリケーションに使用できます。
/dev/random
(マウスの動きなど、ユーザー入力が必要) またはを使用し/dev/urandom
ます。後者にはエントロピー プールがあり、プールが空でない限りユーザー入力は必要ありません。
次のようにプールから読み取ることができます。
char buf[100];
FILE *fp;
if (fp = fopen("/dev/urandom", "r")) {
fread(&buf, sizeof(char), 100, fp);
fclose(fp);
}
またはそのようなもの。
この/dev/random
デバイスは、暗号的に安全なビットのソースになることを目的としています。