1

SecureRandom は、 の場合のように、他のアルゴリズムを内部的に使用LinuxNativePRNGます/dev/urandom。しかし/dev/urandom、実際には割り込みイベントなどを使用して、True Random Number Generator (TRNG) に似たエントロピーを生成しています。では、使用しているアルゴリズムの実装に依存しているにもかかわらず、なぜ Number Generator とSecureRandom呼ばれるのでしょうか?PseudoRandom

ありがとう

4

2 に答える 2

3

保証の関係だと思います。の保証は/dev/urandom、利用可能な場合はランダム データを使用し、必要に応じてブロックを回避するために疑似ランダム データを入力することです。したがって、 を使用している場合/dev/urandom、真のランダム性を主張することはできません。

ドキュメントにSecureRandomは次のように書かれています。

多くのSecureRandom実装は、疑似乱数ジェネレーター (PRNG) の形式になっています。つまり、決定論的アルゴリズムを使用して、真の乱数シードから疑似乱数シーケンスを生成します。他の実装では真の乱数が生成される場合がありますが、他の実装では両方の手法を組み合わせて使用​​する場合があります。

したがって、 の保証は、SecureRandom実装が許可されている場合に限り、疑似ランダムに動作することだけです。もっとうまくやれるかもしれませんが、それは契約ではありません。

于 2011-11-24T15:21:45.263 に答える
1

すべてのオペレーティング システムが /dev/random に対して同じ機能を実装しているわけではなく、アルゴリズム以外のものになるという保証はありません (ただし、最新のシステムのほとんどは割り込みなどを使用しています)。そのため、Java はこれを PRNG と呼んでいます。

Linux の /dev/random は TRNG です。

于 2011-11-24T15:29:10.350 に答える