【情報セキュリティ】予測不能な数列を作る!「擬似乱数とシード」|情報処理問題1000本ノック
暗号化の鍵や、ワンタイムパスワードの生成には「予測できない数字(乱数)」が不可欠です。限られたデータから計算によって乱数を作り出す仕組みと、その起点となる情報の重要性を攻略しましょう。
1. 問題:擬似乱数の生成原理
【 問題 】 擬似乱数生成器において、乱数の数列を決定するための起点となる初期値のことを何と呼ぶでしょうか?
ア、ソルト イ、シード(種) ウ、ノンス エ、初期化ベクトル(IV)
2. 正解:暗号技術に関する正解
正解: イ、シード(種 / Seed)
3. 解説:再現性と予測不可能性のバランス
コンピュータは純粋な偶然を作り出すのが苦手なため、特定の数式(アルゴリズム)を用いて乱数に似た数列を生成します。これが「擬似乱数」です。
【図解:擬似乱数生成の仕組み】
■ シードの役割
・計算の「最初の入力値」です。同じシードを与えると、全く同じ乱数の数列が生成されます。
・そのため、セキュリティ用途ではシードに「現在の時刻(ミリ秒単位)」や「マウスの動き」など、他人が予測できない値を混ぜて使います。
■ 擬似乱数関数 (PRF)
・シードを入力として受け取り、統計的に偏りのない、ランダムに見える値を次々と出力する関数です。
■ シードの役割
・計算の「最初の入力値」です。同じシードを与えると、全く同じ乱数の数列が生成されます。
・そのため、セキュリティ用途ではシードに「現在の時刻(ミリ秒単位)」や「マウスの動き」など、他人が予測できない値を混ぜて使います。
■ 擬似乱数関数 (PRF)
・シードを入力として受け取り、統計的に偏りのない、ランダムに見える値を次々と出力する関数です。
[ 似た用語との違い ]
★ ソルト (Salt):パスワードハッシュ化の際、辞書攻撃を防ぐために付け加えるデータ。
★ ノンス (Nonce):一度きりの使い捨ての数字。リプレイ攻撃の防止などに使われます。
★ 初期化ベクトル (IV):ブロック暗号(CBCモードなど)の最初のブロック処理で使われる値。
★ ソルト (Salt):パスワードハッシュ化の際、辞書攻撃を防ぐために付け加えるデータ。
★ ノンス (Nonce):一度きりの使い捨ての数字。リプレイ攻撃の防止などに使われます。
★ 初期化ベクトル (IV):ブロック暗号(CBCモードなど)の最初のブロック処理で使われる値。
1. 理解のコツ: 擬似乱数は「非常に複雑な計算式の答え」を順番に並べたものです。シードはその式の「最初の変数」にあたります。変数が同じなら答えも同じになるため、シードを秘密に保つことが暗号の安全性に直結します。
2. 試験対策の視点: 「再現性がある(シードが同じなら同じ値が出る)」という特徴と、「予測不可能性(次の値が推測できないこと)」の重要性がよく問われます。暗号学的に強い擬似乱数は「過去の出力から未来の出力を推測できない」性質が求められます。
4. まとめ
「乱数生成の起点となる初期値」。これがシード(種)です。一見ランダムに見える数字の裏側には、このシードに基づいた厳密な計算アルゴリズムが存在していることを押さえておきましょう。
PR