2012-05-04 12 views
2

私が理解しているところから、PRNGは本当にランダムではない数列を生成するシードを使用しています。それが使用されるたびに異なる種子でPRNGを何度も繰り返し使用することによって、本当の乱数発生器を作成することは可能でしょうか。シードは、dev/randomまたは現在の時刻またはクロックティックから抽出できます。そうでなければ、本当に乱数生成器がソフトウェアで実装されていますか?本当に乱数生成器

おかげ

答えて

3

あなたがいる場合、再シードPRNGちょうど真ん中の男を切り取り、直接シードとして乱数を使用することができますが、乱数を必要とするたびに。

しかし、あなたが話していることは実際に行われています。これらはいわゆる暗号安全PRNGであり、多くのオペレーティングシステムで暗号アプリケーションの乱数を提供するために使用されています。彼らはエントロピープールから頻繁に再播種され、過去のものを知ることから次の数字を計算することは計算上非常に難しいように設計されています(例えば、LCGの場合は非常に些細なことです)現在の番号からの数字。

このアプローチの利点は、乱数の生成をブロックしないことです。システム内のエントロピーは限られたリソースであり、外部のソースからしか来ないので、CSPRNGを使用することで、安全にストレッチを行い、同時にセキュリティを侵害することはありません。

+0

こんにちはジョーイ、CSPRNGはまだPRNGの近くにあります、本当にランダムなものがありますか?なぜCSPRNGは本当にランダムではありませんか?説明から私には、このエントロピープールに基づいて本当にランダムであるように聞こえます。 –

+0

もちろん、実際のランダム性を使用しますが、シードから少数の数値を生成します。もちろん、決定的なプロセスです。逆転するのは難しいです。このようなRNGを適切に使用するには、1つのシードをあまりにも長く実行することを避けるために、頻繁な再シーディングが必要です。 – Joey

1

クロックはあまりランダムではありませんが、/ dev/randomにはランダム性があります。ランダム性のバケットのように、乱数の生成と消費の割合によって使い尽くすことができます。 dev/randomを使用すると、RNGは使用されません。/dev/randomからRNGをシードすることは冗長です。

2

単純な答えは、私が知る限り、単純に不可能なので、そのような実装は存在しないということです。本当に乱数を生成するには、hardware random number generatorのようなエントロピーの外部ソースが必要です。

0

インテルis working広告されたとおりに動作する場合は、本当に画期的なものになる可能性があります。実際には、ハードウェアPRNGを冗長にするでしょう。