擬似乱数と線形合同法とは?ぎじらんすうとせんけいごうどうほう
擬似乱数と線形合同法とは、同じ計算を繰り返して作る、統計的には乱数に見えるが完全に再現できる数列。線形合同法はその代表で、次の値は「前の値×定数A+定数B」をある数Mで割った余り、という漸化式1本だけで求まる。出発点となるシードを固定すれば、何度実行しても同一の並びが得られる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
計算機は決められた手順しか実行できないため、真に予測不能な値を内部から作り出せない。物理現象を測る方式は速度と可搬性で不利なので、再現できることを逆に利点として扱う擬似乱数が実務の主流になった。ところが同じ性質、つまり予測できることが、セッションIDや鍵の生成では致命的な弱点へ変わる。支援士試験では、この使い分けを誤った実装を突く形で問われる。
具体例
Javaの java.util.Random は線形合同法を用いており、シードを与えれば同じ列を再現できるためテストデータの生成に向く。一方、鍵やトークンの生成には java.security.SecureRandom のように、OSのエントロピー源を用いる暗号論的に安全な生成器を使う。
試験での引っ掛け
内部状態が有限なので必ず周期があり、いずれ同じ並びを繰り返す。さらに漸化式が単純なため、出力をいくつか観測すれば次の値を計算できる。この予測可能性から、セッションIDやトークン、鍵の生成に線形合同法を使う実装は脆弱と判定される。シードに現在時刻を使う実装も、範囲を総当たりされる点で同じ誤りである。
関連用語
出た過去問
出典:平成28年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問9(IPA)
暗号に関連するデータのうち,次に示す処理で出力可能なものはどれか。 〔処理〕 (1) カウンタを初期化する。 (2) その時点に得た時刻データを共通鍵で暗号化す…
正解:擬似乱数
要点:共通鍵とカウンタの反復は擬似乱数生成の構成
示された手順は、時刻データを種として共通鍵暗号を繰り返し適用し、カウンタを更新しながら出力を次々と生成するものです。これは暗号アルゴリズムを用いた擬似乱数生成器の典型的な構成で、必要な個数だけ予測困難な値を作れます。証明書やハッシュ値、メッセージ認証コードは生成手順が異なります。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。