コンピューターを乱数ジェネレーターとして使用する方法

乱数generatorComputersは、暗号化からビデオゲーム、ギャンブルに至るまで、あらゆるものに対して乱数を生成します。乱数には2つのカテゴリがあります— true 乱数と疑似乱数。そして、その違いは暗号化システムのセキュリティにとって重要です。この記事では、コンピューターを乱数ジェネレーターとして使用する方法について説明します。さぁ、始めよう!





このトピックは最近、より物議を醸すようになり、Intelの組み込みハードウェア乱数ジェネレータチップが信頼できるかどうかを疑問視する多くの人々がいます。なぜそれが信頼できないのかを理解するには、理解する必要があります。そもそも乱数がどのように生成されるのか、そしてそれらが何のために使われるのか。



乱数の用途|乱数ジェネレーター

乱数は何千年もの間使用されてきました。コインを投げる場合でも、サイコロを振る場合でも、目標は最終結果をランダムなチャンスに任せることです。コンピューターの乱数ジェネレーターも同様です。それらは、予測できないランダムな結果を達成するための試みです。

乱数ジェネレーターは、さまざまな目的に非常に役立ちます。ギャンブルを目的とした乱数の生成や、コンピューターゲームでの予測できない結果の作成などの明らかなアプリケーションは別として、暗号化ではランダム性が非常に重要です。



暗号化には、攻撃者が推測できない数値が必要です。同じ番号を何度も使用することはできません。攻撃者が推測できないように、これらの数値を非常に予測できない方法で生成したいと考えています。これらの乱数は、安全な暗号化にとって重要です。独自のファイルを暗号化する場合でも、インターネット上のHTTPSサイトを使用する場合でも。



真の乱数|乱数ジェネレーター

コンピュータが実際にどのようにして乱数を生成できるのか疑問に思われるかもしれません。これはどこにありますか ランダム性 から来る?それが単なるコンピューターコードである場合、コンピューターが生成する数値を予測できる可能性はありませんか?

一般に、生成される乱数のコンピューターを2つのタイプにグループ化します。それはそれらがどのように生成されるかに依存します: 本当 乱数と疑似乱数。



Steamプロフィール写真を変更する方法

を生成するには true 乱数の場合、コンピューターはコンピューターの外部で発生するある種の物理現象を測定します。たとえば、コンピュータは原子の放射性崩壊を測定することができます。量子論によれば、放射性崩壊がいつ起こるかを確実に知る方法はありません。つまり、これは本質的に 純粋なランダム性 宇宙から。攻撃者は、放射性崩壊がいつ発生するかを予測することはできません。したがって、彼らはランダムな値を知りません。



より日常的な例として、コンピューターは大気ノイズに依存するか、キーボードのキーを押した正確な時間を予測不可能なデータまたはエントロピーのソースとして使用する可能性があります。たとえば、コンピュータは、午後2時からちょうど0.23423523秒後にキーを押したことに気付く場合があります。これらのキーの押下に関連する特定の時間を十分に把握すると、エントロピーのソースを生成するために使用できます。 true 乱数。あなたは予測可能なマシンではありません。したがって、攻撃者は、これらのキーを押した正確な瞬間を推測することはできません。乱数を生成するLinux上の/ dev / randomデバイス、 ブロック 真の乱数を返すのに十分なエントロピーを収集するまで、結果を返しません。

疑似乱数|乱数ジェネレーター

疑似乱数はの代替手段です true 乱数。コンピューターは、シード値とアルゴリズムを使用して、ランダムに見える数値を生成できますが、実際には予測可能です。コンピューターは、環境からランダムなデータを収集しません。

これは、すべての状況で必ずしも悪いことではありません。たとえば、ビデオゲームをプレイしている場合。そのゲームで発生するイベントが原因であるかどうかは実際には問題ではありません true 乱数または疑似乱数。一方。暗号化を使用している場合、攻撃者が推測する可能性のある疑似乱数は使用しないでください。

たとえば、攻撃者が疑似乱数ジェネレータが使用するアルゴリズムとシード値を知っているとします。そして、暗号化アルゴリズムがこのアルゴリズムから疑似乱数を取得するとしましょう。そして、それを使用して、ランダム性を追加せずに暗号化キーを生成します。攻撃者が十分に知っている場合、攻撃者は逆方向に作業して疑似乱数を決定する可能性があります。その場合、暗号化アルゴリズムが選択されている必要があり、暗号化が破られます。

Steamはプロフィール写真をアップロードできません

NSAとIntelのハードウェア乱数ジェネレータ

開発者にとって物事を容易にし、安全な乱数の生成を支援するため。 Intelチップには、RdRandと呼ばれるハードウェアベースの乱数ジェネレーターが含まれています。このチップは、プロセッサ上のエントロピーソースを使用し、ソフトウェアが要求したときにソフトウェアに乱数を与えます。

ここでの問題は、乱数ジェネレーターが本質的にブラックボックスであり、その内部で何が起こっているのかわからないことです。 RdRandにNSAバックドアが含まれている場合、政府は暗号化キーを破ることができます。これは、その乱数ジェネレーターによって提供されたデータのみを使用して生成されました。

これは深刻な懸念です。 2013年12月、FreeBSDの開発者は、RdRandをランダム性のソースとして直接使用するためのサポートを削除し、信頼できないと述べました。 [ソース] RdRandデバイスの出力は、エントロピーを追加する別のアルゴリズムに送られます。これにより、乱数ジェネレーターのバックドアが問題にならないことが保証されます。 Linuxはすでにこのように機能しており、RdRandからのランダムデータをさらにランダム化して、バックドアがあったとしても予測できないようにしました。 [ソース]最近のAMA( 何でも聞いて )Redditで、IntelCEOのBrianKrzanichはこれらの懸念についての質問に答えませんでした。 [ソース]

もちろん、これはおそらくIntelチップの問題だけではありません。 FreeBSDの開発者も、Viaのチップを名前で呼びました。この論争は、真にランダムで予測不可能な乱数を生成することがなぜそれほど重要であるかを示しています。

引き起こす true 乱数、乱数ジェネレーターが集まります エントロピ、 またはそれらの周りの物理的な世界からの一見ランダムなデータ。そうでない乱数の場合 本当に ランダムである必要があります。アルゴリズムとシード値を使用するだけです。

結論

さて、それはすべての人々でした!この乱数ジェネレーターの記事が気に入って、お役に立てば幸いです。それについてのフィードバックをお寄せください。また、それに関連するさらなる質問をしたい場合。次に、下のコメントセクションでお知らせください。間もなくご連絡いたします。

すてきな一日を!

参照: NSFW:意味とそれが実際にどのように機能するか