2009-05-03 6 views
2

いくつかの目的のために、任意の種類のアルゴリズムで生成された乱数をバイパスすることができればいいと思います。例えば、ダイスロールです。例えば、暗号鍵の生成は、十分なランダムなデータが必要な状況であると私に警告し、データが本当にランダムであるという要件は十分に高いので、これは実行可能で望ましいことである可能性があります。ユーザー入力からエントロピープールを構築するソフトウェアはありますか?

私が知っておきたいことは、私が手を汚す前に知っておきたいことです。ランダムな数字入力から直接エントロピープールを構築するソフトウェアはありますか?単に基数rから基数2に変換するだけでは十分ではないことに注意してください。例えば3と2が比較的素数であるため、基数3(または基数6)の数値を2進数に変換して元の入力で最大のエントロピーを保持するのは完全に単純ではないからです。

答えて

4

デバイス/dev/randomはLinux上で正確にこれを行います - ソースを調べる価値があるのでしょうか?

EDIT:

十分なランダム性が使用できない場合joeytwiddleは、言うように、/dev/randomは、外部デバイス(例えば、マウス、ディスクドライブ)を監視することで、「構築」するためのエントロピーを待って、ブロックされます。これはあなたが望むものかもしれません。待ち時間を省き、おそらく低品質のランダム性に満足したい場合は、代わりに/dev/urandomを使用してください。利用可能な場合はいつでも、ランダム性を/dev/randomから注入する非ブロック化擬似乱数生成器です。 PRNG。 (詳細はman /dev/urandomを参照してください)

+1

/dev/randomは、ユーザーの操作(マウス/キーボード)やディスクアクセス速度から入力の一部を得ると、どちらも自然に現象に影響します。これらの入力がなければ、/ dev/randomはゆっくりと出力します(実際のランダムなデータを待っています)! – joeytwiddle

+0

/dev/randomは、ユーザーの対話(マウス/キーボード)とディスクアクセス速度の両方から、その入力の一部を取得します。どちらも自然に影響を受けます。これらの入力がなければ、/ dev/randomはゆっくりと出力します(実際のランダムなデータを待っています)! – joeytwiddle

+0

@joey:しかし、IIRCルートはエントロピーをプールに寄与させて、独自の見積もりを提供することができます。したがって、適切なsetuidプログラムは、信頼できるユーザからのダイスロールを受け取り、/ dev/randomにフィードして、ユーザーがダイスをロールできるようにすばやく出力します(つまり、非常に遅い...) –

2

このpaperは、UN * XとWindowsの両方の実装のアイデアを持つさまざまなアプローチを示しています。

2

あなたが何を求めているのか分かりません。 「エントロピープール」は「いくつかの乱数」の単なる単語なので、あなたは確かにサイコロを使うことができます。あなたが望む特性を持つ擬似乱数ジェネレータに見えます。

たとえば、LavarndまたはHotbitsから、物理的に生成された乱数をオンラインで取得できます。

+1

私は "エントロピープール"によって、私がエントロピーコレクターと呼ぶものを意味すると思います。したがって、「いくつかの乱数」だけではなく、入力ごとにエントロピー推定値とともに入力を受け取り、要求されたビット数に対して現在の状態で十分なエントロピーが存在する場合には出力を与える。 –

0

プール内のエントロピーの量は、必ずしも整数である必要はありません。これは主に、プライムファクタ以外の2つの問題に対処する必要があります。

整数推定が必要な実装を使用しても、暗号キーを生成するにはかなりの数のダイスロールが必要です。だからあなたは束でそれらを要求することができます。ユーザーが10個のd6ロールの結果を示し、エントロピーを25ビットと見積もった場合、1回のロール当たり0.08ビットしか失われませんでした。

Btw私は、/ dev/randomのようなハードウェアソースからTRNGデータを抽出するのではなく、改善するのではなく楽しいおもちゃになるようにユーザーに尋ねています。専門家が乱数を生成するのは難しいので、一般ユーザーには自分のアマチュアリズムを慈悲に任せたくありません。 「乱数の生成はチャンスにとどまるにはあまりにも重要です」 - Rovet Coveyou。別の方法として、BSDの著者は、PCハードウェア上での実用的なソースのエントロピー推定が、(物理問題であり数学問題ではなく)十分に理解されているわけではないので、PRNGを使用することは実際にはそうではないSchneier/Kelsey/FergusonのYarrowデザインによれば、それがうまく再詰めされていれば、悪い選択肢です。あなたのサイコロのアイデアは、/ dev/randomのエントロピーの典型的なソースよりも利点があります。ユーザーが公正なダイスを見つけて適切にロールすることができる限り、確実にエントロピーの下限を置くことができます。双眼鏡やキーボードの盗聴手段(例えば、E/Mエミッション)を持つオブザーバーがスキーム全体を壊す可能性があるという欠点があります。実際はすべてがあなたの脅威モデルに依存しています。

+0

アルゴリズム的には、解決された問題です。を参照してください。私はむしろ入力を収集するためのインターフェイスを提供する実際のソフトウェアについて話しています。 –

+0

UIを含む完全なパッケージが完成しましたか?個人的には、商品エントロピーコレクターの周りに、私自身の見積も​​りで、自分のUIをラップすることで決まります。 –

+0

"アルゴリズム的に、解決済みの問題です" - RPGストアから入手できる8面のダイスを使用します;-) –

関連する問題