非安全な乱数発生器と安全な乱数発生器の違いは何ですか?

StackOverflow https://stackoverflow.com/questions/101337

  •  01-07-2019
  •  | 
  •  

質問

タイトルにあるように、非安全な乱数発生器と安全な乱数発生器の違いは何ですか?

役に立ちましたか?

解決

計算上実​​行可能なアルゴリズムでは次のようなことはできません。

  • 種を回収するか、
  • 「次のビット」を予測する

安全な乱数生成器用。

例:線形フィードバック シフト レジスタは大量の乱数を生成しますが、十分な出力があれば、シードを発見して後続のすべての数値を予測できます。

他のヒント

安全な乱数は、以前に生成された乱数のリストが与えられたとしても予測可能であってはなりません。通常、これは暗号化ルーチンのキーとして使用されるため、推測または予測可能になることは望ましくありません。もちろん、推測できるかどうかはコンテキストによって異なりますが、攻撃者はあなたが知っているすべてのことを知っており、乱数を生成するために使用する可能性があると想定する必要があります。

安全な乱数を生成するさまざまな Web サイトがあり、信頼できる Web サイトの 1 つは次のとおりです。 ホットビット. 。乱数の生成を 1 回限りのアクティビティとしてのみ実行している場合は、おそらくランダムであるため、宝くじの抽選結果を使用してみてはいかがでしょうか。もちろん、どの宝くじとどの抽選かを誰にも言わず、それらの数字を適切なマングルに掛けて、必要な範囲を取得します。

単に「乱数」という場合は、通常、疑似乱数を意味します。これは擬似乱数であるため、攻撃者は (簡単に) 予測できます。

安全な乱数は、真にランダムなデータ ソースからの乱数です。ある種のエントロピープールが関与しています。

Purfiedeas さんの意見に同意します。これについては、次のような素晴らしい記事もあります。 チートオンラインポーカー

乱数とは、おそらく、「シード」を使用するアルゴリズムによって返される擬似乱数を意味します。

安全な乱数とは、セシウム ベースの乱数発生器 (数値を返すためにセシウムの減衰率を使用する) などのデバイスから返される真の乱数です。これは自然に発生するものであり、予測することはできません。

文脈にもよると思いますが、こうして比較する場合、「乱数」は 擬似乱数 「安全な乱数」は本当にランダムです。前者はシードとアルゴリズムに基づいて数値を取得し、もう一方は本質的にランダムな関数に基づいて数値を取得します。

AES と ROT13 の違いのようなものです。

軽率な言い方をすると、乱数を生成する場合、一般に、乱数を生成するのがどれだけ難しいかということと、いくつかの乱数を見た後でシーケンス内の次の乱数をどれだけ予測できるかの間にはトレードオフがあります。言語の組み込み rand() によって返される乱数は、通常、安価で予測可能な種類になります。

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