/ dev / randomはエントロピーの優れたソースであり、通常使用されるものです-少なくともJavaでGCを読んでいるように、ガベージコレクションデーモンが非決定的に実行されることは受け入れられているようです。これが正しい場合、変数/ dev / randomの代わりに、ガベージコレクションのタイミングをエントロピーのソースとして使用しないのはなぜですか?
/ dev / randomはエントロピーの優れたソースであり、通常使用されるものです-少なくともJavaでGCを読んでいるように、ガベージコレクションデーモンが非決定的に実行されることは受け入れられているようです。これが正しい場合、変数/ dev / randomの代わりに、ガベージコレクションのタイミングをエントロピーのソースとして使用しないのはなぜですか?
回答:
「指定なし」と「ランダム」は、まったく異なる2つの概念です。
ガベージコレクタの正確な動作は指定されておらず、ガベージコレクタ次第です(通常は一種のVMによって実装されますが、必ずしもそうではありません)。
したがって、ガベージが収集される指定された(決定的な)時間はありません。
しかしながら、特定の実装はいくつかのルールに従い、同じプログラムを2回実行するとガベージコレクションパターンが非常に似ている可能性が高くなります。
そのため、実際のエントロピーガベージコレクタによって提供さは非常に低い(と見つけるだろうどのあなたが実際にできる部品を使用エントロピーはトリッキーになるように)。
比較として:HashMap
JavaのA は、そのメンバーの取得の順序を保証しません(基本的に、ほとんどの場合、支払う価値のないオーバーヘッドが追加されるためです)。ただし、特定の実装および特定の挿入/削除のセットでは、結果の順序を確実に計算できます。特定の順序が保証されていないからといって、順序がランダムであることを意味するわけではありません。
まず、単なる言葉の操作によって推論のtrapに陥らないように注意する必要があります。たとえば、NFAは「非決定的有限オートマトン」であるため、それを使用して乱数を取得しないのはなぜでしょうか。その場合、それはNFAで「非決定的」が意味するものではないためです。実際、特定の入力でNFAをシミュレートする場合、シミュレーションの動作は完全に決定的です。
「確定的」はロードされたフレーズです。コンピュータープログラマーまたはコンピューターサイエンティストにとって、非決定論的な動作とは、「正確な動作を判断するのは複雑である」ことを意味し、プログラム入力などの多くの要因に依存します。
ただし、だからと言って、暗号システムを攻撃しようとする誰かにとって決定論的ではないというわけではありません。場合によっては、環境要因と入力がピンダウンされることがあり、「非決定的」動作から再現可能なパターンが現れます。