2009-08-05 14 views
4

私はデスクトップアプリケーションで作業していますが、利用可能なハードウェア乱数ジェネレータを使用したいと思っていますが、使用するために混乱する必要はありません。そのJava/Clojureに基づいていますので、私は何かについてはうまく動作しますが、Javaの世界では何か素晴らしいものです。これをうまくやっているプログラムを知っていますか?彼らはクロスプラットフォームですか?プログラムでハードウェアを使用する乱数生成器

+1

どのオペレーティングシステムですか? GNU/Linuxには '/ dev/random'デバイスが組み込まれています。 –

+0

'/ dev/random'はソフトウェアジェネレータです。ハードウェア関連のノイズをソースとして使用するだけです。この質問は、物理的にランダムなプロセスから生成されたランダムなデータを出力する実際のハードウェアデバイスに関するものです。 – Cascabel

+0

@Jefromi:どうやってそれを知っていますか? –

答えて

6

Java SecureRandomクラスを使用する必要があります。ユーザーは、preference orderを設定することにより、デフォルトのアルゴリズム選択をハードウェアRNGでオーバーライドできます。これは、あなたを含むすべてのJavaアプリケーションに適用されます。

+0

当然のことながら、アプリケーションは、「使用可能になる」可能性のある各デバイス用のSecureRandomエンジンクラスが必要になります。誰かが既に共通のデバイス用のクラスのライブラリを維持していない限り、これは難しい注文です! –

+0

または、ハードウェアRNGとのやりとりにOS機能を使用するSecureRandomエンジンが1台ある可能性があります。 – bdonlan

+0

@bdolan:動作しないと思います。 AFAIKには、RNGハードウェアとのインタフェースとOSレベルの標準的なサービスのための特別な標準はありません。 –

2

生成する必要がある乱数の品質によって異なります。具体的には、どれくらいのentropyが必要ですか?

予測可能な時計に依存しないハードコア乱数が本当に必要な場合は、利用可能なサードパーティの発電機をチェックしてください。

http://en.wikipedia.org/wiki/Hardware_random_number_generator

これらのいくつかは、各ビットのエントロピーを増大させるために、熱熱、など...使用。

+0

OPは利用可能なものとどのようにインターフェースするかを尋ねています。エントロピーの量はここでどのような要因を必要としますか? – bdonlan

+1

バニラマシンには非常に多くのオプションがあります。私は、すべての乱数が等しく作られていないことを知らせていて、いくつかの選択肢を彼に知らせることを試みました。私の答えは彼が探しているものではないかもしれませんが、私は彼の問題に関係していると思います。 –

+0

短い回答は、「すべての攻撃から自分のユーザーのデータを安全に保つのに十分で、拷問は含まない」 –