2016-11-22 2 views
0

他人との対称暗号化(AES)通信の鍵を生成したいと思います。乱数生成器を使用するのは安全ですか?特に、例えば、Linuxによって提供される/dev/urandom対称鍵の生成?

答えて

2

はい、これは通常行われている方法です。システムが正しくシードされていることを確認してください。ほとんどのディストリビューションでこれが自動的に行われますが、わからない場合は2つの選択肢があります。

1)ほんの少しのバイトしか必要としない場合は、/dev/randomを使用できます。

2)プログラムが最初に起動したら、/proc/sys/kernel/random/entropy_availと読んでください。 512より大きい場合は、何も心配する必要はありません。あなたは/dev/urandomからあなたが望むものすべてを読むことができ、結果は安全です。

+0

ありがとうございます! :)。 2)はどうですか?それについてもっと読むことができますか?どこかに私を紹介してください。あなたはちょっと言ったことがありますが、それは魔法の数字「512」に見えました。私はそれについて読んでみたいと思います。 – Gilgamesz

+0

残念ながら、Linuxには本当に必要なことをする方法がありません。必要な場合にのみ、安全な乱数をブロックすることです。 LinuxのPRNGが動作する方法は、シードされている限り永遠に安全です。 512バイトはそれらを永久にシードするのに十分です(256はそうするでしょう)。システムが約256バイト以上のエントロピーを持っていれば、再起動するまで安全です。ほとんどのディストリビューションはこの条件を自動的に保証します。 –

+0

@DavidSchwartzが書いたものに加えて、エントロピー> 256を参照するとPRNGSを信頼して安全なキーバイトを渡すのに十分であることに注意してください。これはほとんどの現実世界のシナリオ(そしておそらくこの質問の範囲)にもかかわらず、OTPのような特殊なケースや、システムが何もしておらず、他の人のために鍵を渡しているなど、それはまだ擬似乱数であり、実際のランダム性ではありません。 – DarkSquirrel42