0
他人との対称暗号化(AES)通信の鍵を生成したいと思います。乱数生成器を使用するのは安全ですか?特に、例えば、Linuxによって提供される/dev/urandom
?対称鍵の生成?
他人との対称暗号化(AES)通信の鍵を生成したいと思います。乱数生成器を使用するのは安全ですか?特に、例えば、Linuxによって提供される/dev/urandom
?対称鍵の生成?
はい、これは通常行われている方法です。システムが正しくシードされていることを確認してください。ほとんどのディストリビューションでこれが自動的に行われますが、わからない場合は2つの選択肢があります。
1)ほんの少しのバイトしか必要としない場合は、/dev/random
を使用できます。
2)プログラムが最初に起動したら、/proc/sys/kernel/random/entropy_avail
と読んでください。 512より大きい場合は、何も心配する必要はありません。あなたは/dev/urandom
からあなたが望むものすべてを読むことができ、結果は安全です。
ありがとうございます! :)。 2)はどうですか?それについてもっと読むことができますか?どこかに私を紹介してください。あなたはちょっと言ったことがありますが、それは魔法の数字「512」に見えました。私はそれについて読んでみたいと思います。 – Gilgamesz
残念ながら、Linuxには本当に必要なことをする方法がありません。必要な場合にのみ、安全な乱数をブロックすることです。 LinuxのPRNGが動作する方法は、シードされている限り永遠に安全です。 512バイトはそれらを永久にシードするのに十分です(256はそうするでしょう)。システムが約256バイト以上のエントロピーを持っていれば、再起動するまで安全です。ほとんどのディストリビューションはこの条件を自動的に保証します。 –
@DavidSchwartzが書いたものに加えて、エントロピー> 256を参照するとPRNGSを信頼して安全なキーバイトを渡すのに十分であることに注意してください。これはほとんどの現実世界のシナリオ(そしておそらくこの質問の範囲)にもかかわらず、OTPのような特殊なケースや、システムが何もしておらず、他の人のために鍵を渡しているなど、それはまだ擬似乱数であり、実際のランダム性ではありません。 – DarkSquirrel42