質問

エントロピー源を無効にするにはどうすればよいですか?

これが私がやろうとしていることの少しの背景です。 USBを介してPCに話しかける小さなRNGデバイスを構築しています。私はそれが使用されているエントロピーの唯一の源であることを望んでいます。使用します rngd エントロピーのソースとしてデバイスを追加する。

役に立ちましたか?

解決

簡単な答えは「あなたはしない」です。

エントロピーのソースを削除しないでください。乱数ジェネレーターの設計者はそれをリグしたため、新しいランダムビットは現在の状態と混合されます。

複数のエントロピー源を持つことは、乱数ジェネレーターの出力を弱めることはなく、それを強化するだけです。

エントロピーの原因を除去するために私が考えることができる唯一の理由は、それがあなたが余裕がないCPUまたは壁2時間の時間を吸うことです。私はこれが非常にありそうもないと思いますが、もしそうなら、あなたの唯一の選択肢はカーネルハッキングです。カーネルのハッキングに関する限り、これはかなり簡単なはずです。カーネルソースコード全体のadd _*_ randomness()関数へのすべての呼び出しをコメントしてください(関数自体は、ドライバー/char/random.cにあります)。関数の内容をコメントするだけですが、この場合は時間を節約しようとしています。

他のヒント

1つの解決策は、仮想マシンで個別のLinuxインスタンスを実行することです。

高速のランダムジェネレーターが必要かもしれないと思います。

編集 私は質問をもっとよく読むべきだった

いずれかの方法、 frandom 完全なターボールが付属しています カーネルモジュールの場合、USBデバイスの周りに独自のモジュールを構築する方法を学ぶことができる場合があります。おそらく、/dev/urandomの代わりに任意のアプリケーションを使用することで、任意のアプリケーションを使用することもできます(もちろん、十分な権限を考えると、ほとんどのアプリケーションをデバイスノードと「愚か者」に変更することができます)。


あなたは見ることができます http://billauer.co.il/frandom.html, 、それを実装します。

  • /dev /urandomは十分ではありませんか?
    • 1996年以降、より速いカーネル乱数ジェネレーターの上昇と下降の必要性についての議論(私が知っていること)。私の意見では、 /dev /frandomは /dev /zeroと同じくらい必要であり、ゼロの流れを作成するだけです。一般的な反対の意見は通常、ユーザー空間でそれを行う。
  • /dev /frandomと /dev /erandomの違いは何ですか?
    • 最初は /dev /frandomを書きました。その後、このスイートの利点の1つは、カーネルエントロピーを保存することであることが判明しました。ただし、 /dev /frandomは、ランダムジェネレーターをシードするために、デバイスファイルが開くたびに256バイトのカーネルランダムデータ(順番にエントロピーを食べる可能性があります)を消費します。そこで、播種に内部ランダムジェネレーターを使用する /dev /erandomを作成しました。 Frandomの「F」は「高速」と「E」の「E」を表しています。
  • どれくらい速いですか?
    • コンピューターとカーネルバージョンに依存します。テストでは、 /dev /urandomよりも10〜50倍高速で示されています。
  • それは私のカーネルで動作しますか?
    • > 2.6であれば、おそらくそれはおそらくそうなるでしょう
  • 安定していますか?
    • 2003年秋に初期バージョンをリリースして以来、I686とX86_64システムで少なくとも100人がそれを試しました(おそらくそれ以上)。成功したテストレポートが到着し、苦情はゼロです。そうです、それは非常に安定しています。ランダム性に関しては、苦情もありませんでした。
  • ランダムデータはどのように生成されますか?
    • FrandomはRC4暗号化アルゴリズムに基づいており、安全であると見なされ、SSLを含むいくつかのアプリケーションで使用されています。 RC4の仕組みから始めましょう。キーを取り、擬似ランダムバイトのストリームを生成します。実際の暗号化は、このバイトストリームとクリアテキストデータストリームの間のXOR操作です。
    • Frandomに:Time /Dev /Frandomが開くたびに、2048ビットキーを使用して明確な擬似ランダムストリームが初期化されます。擬似ランダムストリームは、 /dev /frandomから読んだものです。
    • Frandomは、最終的にXORがないだけで、ランダムキーを備えたRC4にすぎません。
  • フランダムは良い乱数を生成しますか?
    • その起源により、乱数はそれほど悪くなることはありません。もしそうなら、RC4は何の価値もありません。テストに関しては、 /dev /frandomから直接「コピー」されたデータは、George Marsagliaによって開発された「頑固な」一連のテストでテストされました。すべてのテストが合格しましたが、これは適切な兆候であると考えられています。
  • Frandomを使用して1回限りのパッド(暗号学)を作成できますか?
    • Frandomは、暗号の目的を目的としたものではなく、攻撃に対して特別な考えも与えられませんでした。しかし、モジュールを攻撃する余地はほとんどありません。モジュールはRC4に基づいているため、次の事実があります。 /DEV /Frandomからのデータを1回限りのパッドとして使用することは、2048でRC4アルゴリズムを使用するのと同等です。ビットキー、 /dev /urandomから読みます。

結論:暗号目的でFrandomを使用しても構いません。しかし、しないでください。それは意図ではありませんでした。

追加のメモ、コメントには大きすぎる:

設定に応じて、RNGDはカーネルのエントロピープールを支配することができます。非常に多くのデータに供給することで、他のエントロピー源はほとんど無視または失われます。 RNGDのランダムデータのソースを最終的に信頼しない限り、そうしないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top