4

ブロック暗号のキーとして機能する非常に大きな (128 ビットや 256 ビットなど) 数値を生成しているとします。

さらに、アルミ箔の帽子をかぶっていると仮定しましょう (少なくとも屋外では)。

非常に偏執的であるため、利用可能なエントロピーを確認したいと考えていますが、特定の情報源を完全に信頼しているわけではありません。政府が私たちのコインを不正操作しているのかもしれません。たぶん、これらのサイコロはこれまでになく微妙に重み付けされています. ハードウェア割り込みのフィード/dev/randomが少し一貫しすぎている場合はどうなりますか? (偏執的であることに加えて、私たちは怠け者なので、すべてを手動で生成したくありません...)

それでは、それらをすべて混ぜてみましょう。

これを行うための安全な方法は何ですか? おそらく、各ソースから数バイトを連結するだけでは完全に安全ではありません.ソースの1つに偏りがある場合、理論的には、たとえば関連キー攻撃などに役立つ可能性があります.

連結されたバイトに対して SHA-256 を実行するだけで十分ですか?

(そして、はい、近いうちに暗号化エンジニアリングのコピーを手に入れるつもりです。:))

4

4 に答える 4

5

あなたが言及/dev/randomしたので、少なくともLinuxでは、/dev/randomあなたが説明していることを非常に行うアルゴリズムによって供給されます。さまざまに信頼できるいくつかのエントロピー ソースを取得し、多項式関数を使用してそれらを「エントロピー プール」に混合します。新しいエントロピー バイトが入るたびに、プールに xor され、プール全体が攪拌されます。ミキシング機能。プールからランダム性を引き出す必要がある場合は、プール全体を SHA-1 でハッシュして出力を取得し、プールを再び混合します (実際には、それを確実にするために、さらにハッシュ、フォールディング、および切断が行われます)。プロセスを逆にすることは、SHA-1 を逆にするのと同じくらい難しいことです)。同時に、大量のアカウンティングが行われます -- エントロピーがプールに追加されるたびに、その値に相当するエントロピーの推定ビット数がアカウントに追加されます。また、プールからバイトが抽出されるたびに、その数が減算され、アカウントがゼロを下回ると、ランダム デバイスがブロックされます (さらに外部エントロピーを待機します)。もちろん、「urandom」デバイスを使用すると、ブロッキングは発生せず、プールは単純にハッシュされ、混合され続けてより多くのバイトが生成され、RNG ではなく PRNG になります。

とにかく... それは実際には非常に興味深いものであり、非常によくコメントされています. ツリーでdrivers/char/random.clinux-2.6

于 2010-08-07T10:31:43.497 に答える
4

ハッシュ関数を使用することは良いアプローチです。各ソースが寄与するエントロピーの量を過小評価するようにしてください。そのため、それらの 1 つまたは複数が完全にランダムではないことが正しい場合は、キーが過度に弱体化されていません。

これは、キー ストレッチングで使用されるアプローチと似ています (ただし、ここでは複数の反復は必要ありません)。

于 2010-08-07T10:00:09.040 に答える
4

私は以前にこれを行ったことがありますが、私のアプローチは、それらをバイトごとに XOR することでした。

SHA-256 などの他のアルゴリズムを使用してそれらを実行するのは非常に非効率的であるため、実用的ではありません。また、実際には役に立たず、有害である可能性があると思います。

あなたがたまたま信じられないほど妄想的で、少しのお金を持っている場合は、「本物の」(量子力学による確信度に応じて)量子乱数ジェネレーターを購入するのが楽しいかもしれません.

- 編集:

FWIW、私が上で説明した方法 (または同様のもの) は、いずれかの情報源の観点から事実上ワンタイム パッドであると思います。誰かが問題を起こした場合、私はこれを修正して喜んでいます。また、問題を抱えていない人はとにかく質問して、自分で調べてください.

于 2010-08-07T07:13:29.877 に答える
1

ランダム性のソースがあるが、それが偏っているかどうかわからない場合は、さまざまなアルゴリズムがたくさんあります。やりたい作業の量に応じて、元のソースから無駄にするエントロピーは異なります。

最も簡単なアルゴリズムは (改良された) van Neumann アルゴリズムです。詳細は、この pdf で確認できます: http://security1.win.tue.nl/~bskoric/physsec/files/PhysSec_LectureNotes.pdf の 27 ページ。

また、特定のソースから均一なランダム性を生成する方法、真の乱数ジェネレーターの仕組みなどに興味がある場合は、このドキュメントを読むことをお勧めします!

于 2010-08-07T10:09:06.667 に答える