質問

いくつかのデータを暗号化するには、1回限りのパッドを作成する必要があります(サイズがいくつかあります)。このような基本的な乱数生成に関連するすべての擬似ランダムの問題を回避するために、この1回限りのパッドを生成するにはどうすればよいですか rand()?

これに使用できる既存の信頼できるツールまたはライブラリはありますか?

役に立ちましたか?

解決

試す random.org. 。彼らは、大気ノイズに基づいて真の乱数を生成するさまざまな無料(および有料)サービスを持っています(または、少なくともそれが主張することです)。

他のヒント

ほとんどの最新のオペレーティングシステムにはaがあります 暗号化された擬似ランダム数ジェネレーター.

たとえば、Windowsにはあります クリプトゲンランダム. 。を使用して、.NETから同じストリームにアクセスできます rngcryptoserviceprovider クラス。 C ++から、Microsoft C ++ライブラリ機能を使用して同じストリームにアクセスできます rand_s. 。 Pythonから、関数を使用してアクセスできます Urandom (リンクページの下部を参照)OSモジュールの。

通常のPRNGとは異なり、CSPRNGは厳密な統計的ランダム性テストに合格するように設計されています。また、彼らの初期または実行状態が攻撃者が利用できるようになった場合でも、深刻な攻撃の下でよく耐えるように設計されています。

暗号作成者が使用している「擬似ランダム」という用語は、非技術的な読者に誤解を招く可能性があります。 CSPRNGは、シードと呼ばれるランダム値のコレクションを、より長い数のシーケンスに拡張します。そのシーケンスは種子を考えると再現性がありますが、良いcsprngの場合、種子のわずかな変化は非常に異なるシーケンスを生成します。したがって、シードの少なくとも一部の部分が適切にランダムなプロセスを介して選択される限り、攻撃者は、攻撃者が種子の残りの部分に影響を与えることができる場合でも、結果のシーケンスを予測することができません。

軍事通信から、ほぼすべてのオンライントランザクションを保護する暗号化に至るまで、「暗号化された擬似ランダム」と「ランダム」の間の機能的に同等のセキュリティに依存しています。

編集: :IntelのIvy Bridge Processorの範囲で作業できるほど幸運なら、あなたは今持っています もう1つの非常に興味深い選択肢.

アルゴリズム的に本当に乱数を生成することはできません - ハードウェアの支援が必要です。アルゴリズムを使用している場合、ただし安全な(暗号化されたPRNGなど)が、そのPRNGに基づいてストリーム暗号を作成するだけです。もう一度のパッドではありません。

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