タイトルが言うように: 非セキュアな乱数ジェネレーターとセキュアな乱数ジェネレーターの違いは何ですか?
7 に答える
計算上実行可能なアルゴリズムは、次のことをすべきではありません。
- 種を回収する、または
- 「次のビット」を予測する
安全な乱数ジェネレーター。
例: 線形フィードバック シフト レジスタは大量の乱数を生成しますが、十分な出力があれば、シードを発見し、後続のすべての数値を予測できます。
以前に生成された乱数のリストが与えられたとしても、安全な乱数は予測できないはずです。通常は暗号化ルーチンのキーとして使用するため、推測や予測は望ましくありません。もちろん、推測可能かどうかはコンテキストによって異なりますが、攻撃者はあなたが知っていることをすべて知っており、乱数を生成するために使用する可能性があると想定する必要があります。
安全な乱数を生成するさまざまなWebサイトがあり、信頼できるWebサイトの1つはhotbitsです。乱数の生成を1回限りのアクティビティとしてのみ実行している場合は、抽選結果を使用しないでください。これは、おそらくランダムであるためです。もちろん、どの宝くじとどの抽選を誰にも言わないでください。そして、あなたが望む範囲を得るためにそれらの数字を適切なマングルに通してください。
Purfiedeasに同意します。チートオンラインポーカーと呼ばれるそれについての素晴らしい記事もあります
乱数は、おそらく「シード」を使用するアルゴリズムによって返される疑似乱数を意味します。
安全な乱数は、セシウム ベースの乱数発生器 (セシウムの減衰率を使用して数値を返す) などのデバイスから返される真の乱数です。これは自然に発生するものであり、予測することはできません。
「乱数」とは、通常、疑似乱数を意味します。これは疑似乱数であるため、攻撃者は (簡単に) 予測できます。
安全な乱数は、真にランダムなデータ ソースからの乱数です。ある種のエントロピープールを含みます。
文脈にもよるでしょうが、このように比較すると、「乱数」は疑似乱数であり、「安全な乱数」は本当にランダムだと思います。前者はシードとアルゴリズムに基づいた数値を提供し、もう一方はいくつかの本質的にランダムな関数に基づいた数値を提供します。
それはAESとROT13の違いのようなものです。
派手さを少なくするために、乱数を生成する場合、それがどれほど難しいかと、シーケンス内の次の乱数をいくつか見た後の予測可能性との間には、一般にトレードオフがあります。言語の組み込みrand()によって返される乱数は、通常、安価で予測可能な種類のものになります。