ランダム番号ジェネレータ
統計サンプリングおよびシミュレーションのための指定された範囲内のランダムな数値を生成します。
ランダム番号の生成
ランダム番号ジェネレータの種類
ランダムナンバージェネレータ(RNG)は、暗号化とセキュリティから科学シミュレーションやゲームまで、さまざまな分野における基本的なコンポーネントです。 異なるタイプとその特性を理解することは、特定のニーズに適した方法を選択するために不可欠です。
真の任意数の発電機(TRNGs)
真のランダム番号ジェネレータは、本質的に予測不可能である物理的プロセスから派生するランダムネスを生成します。 これらのジェネレータは、生成アルゴリズムと以前の値の完全な知識であっても、理論的に予測不可能であるシーケンスを生成します。
物理エントロピーソース
- 大気騒音
- 放射性崩壊
- 熱騒音
- 量子現象(フォトン分割)
- 電子騒音と回路動作
TRNGの実装タイプ
- ハードウェア任意数の発電機
- Quantum の任意数の発電機(QRNGs)
- 騒音ベースの発電機
- フリーランニング発振器発生器
- シャオスベースの発電機
TRNG は、暗号化キー生成、セキュアな通信、高株式ギャンブルシステムなど、最高レベルのセキュリティと予測不能を必要とするアプリケーションに不可欠です。 しかし、それらは通常、発生率が遅くなり、実装に高価になる可能性があります。
- ノイズソース(エントロピー)
- ディジタイザー(アナログ信号をデジタルに変換)
- コンディショナ/エクストラクター(ランダムネス品質の改善)
- 健康テスト(適切な操作を検証)
Pseudorandom 数値ジェネレーター (PRNGs)
Pseudorandom 数値ジェネレータは、決定的なアルゴリズムを使用して、ランダム表示する数字のシーケンスを生成します。 本当にランダムではなく、ランダム性のために様々な統計試験を渡すように設計されており、多くのアプリケーションに適しています。
共通PRNG タイプ
- リニアコングレデンシャルジェネレータ(LCG)
- メルセンヌツイスター
- Xorshift ジェネレーター
- 乗用車用発電機
- 井戸(Well-Equidistributed Long-periodリニア)発電機
PRNGの特徴
- 決定的(同じ種子が同じ配列を生成する)
- 周期(一部期間経過後も繰り返します)
- 迅速かつ効率的な生成
- 簡単に再現可能な結果
- シミュレーションおよび非セキュリティアプリケーションに適しています
暗号化セキュアなPRNG(CSPRNG)
暗号化されたセキュアなPseudorandom 数値ジェネレータは予測に抵抗するように設計されたPRNGの特別なクラスです。 それらはセキュリティクリティカルなアプリケーションに適していますが、依然として決定的に動作します。
CSPRNGについて 事例紹介
- Blum-Blum-Shub(BBS)ジェネレーター
- RSA/ラビンの発電機
- Fortunaアルゴリズム
- HMAC-DRBGの特長
- ChaCha20ベースのジェネレーター
- AES-CTRモードジェネレーター
CSPRNGについて セキュリティのプロパティ
- フォワード・ secrecy (保護されるポストの出力)
- 後方secrecy (保護されるfutureの出力)
- 状態の妥協に耐える
- 難しい計算問題に基づく
- すべての多項的時間統計試験に合格
ランダムテストと検証
ランダムな数ジェネレータの品質をテストすることは、意図したアプリケーションの要件を満たすことが重要です。 複数の標準化されたテスト スイートは利用できます:
- テストのダイハルト電池
- NISTの統計的なテスト スイート(SP 800-22)
- TestU01 スイート
- シースクエア テスト
- 周波数試験(モノビット試験)
- 実行テスト
- シリアル・コレオレーション テスト
- コルモゴロフ・シミノフ テスト
- 誕生日の間隔 テスト
ハイブリッドアプローチ
セキュリティアプリケーションで最適な結果を得るには、複数の種類のランダム数ジェネレータを組み合わせるハイブリッドアプローチが用いられます。
- CSPRNG の種子を生成するために TRNG を使用する
- 複数のソースからランダム性を収集するエントロピープール
- 暗号ハッシュ関数を用いたTRNG出力の処理
- 複数の独立した発電機から出力を結合する
重要なアプリケーションのためのベストプラクティス
- 初期のエントロピーを生成するためにTRNGを使用する(シード)
- より良い統計特性のためにCSPRNGを介してエントロピーを処理します
- 確立された、レビューされたアルゴリズムと実装を使用する
- RNGの健康と出力品質を継続的に監視
- 適切なタイミングで暗号化後処理(hashing)を適用
- 関連する標準に従う(NIST SP 800-90A/B/C、BSI AIS 20/31)
ランダム番号とは何ですか?
ランダム番号は、2つの条件が満たされているような順番で起こる数字です。
- 値が定義された間隔で均一に分散されます
- 過去や現在のものに基づいて将来の値を予測することは不可能です
- 各番号は、選択されるの等しい確率を持っています
- 順序は統計的に独立しています
アプリケーション
統計的サンプリング
統計分析のための人口からランダムなサンプルを選択します。
シミュレーション
モンテカルロシミュレーションのためのランダムなシナリオを作成します。
クリプトグラフィー
暗号化キーを生成し、ランダムな値を確保します。
ゲーム
ゲームや宝くじのランダムな結果を作成します。.
ランダム番号生成
ランダムな数値ジェネレータは、暗号化されたアルゴリズムを使用して、真にランダムな数値を生成します。
- 指定された範囲を渡る均一分布
- 暗号化されたランダムな数生成をセキュアに
- 整数と小数の両方のサポート
- 少数の場所のカスタマイズ可能な数
事例紹介
例1整数番号
範囲: 1から10
カウント: 5
決定の場所: 0
3, 7, 1, 9, 4
1と10の間のランダム整数
例2数値の決定
範囲: 0から1
カウント: 3
決定の場所: 2
0.42, 0.87, 0.15
0と1の間のランダム小数
例3注文の範囲
範囲:-100から100
カウント: 4
決定の場所: 1
-45.2, 78.9, -12.4, 56.7
-100と100の間のランダム番号