暗号論的擬似乱数生成器
暗号論的擬似乱数生成器(英語: cryptographically secure pseudo random number generator、暗号論的にセキュアな疑似乱数生成器、CSPRNG)とは、暗号技術での利用に適した特性を持つ擬似乱数生成器 (PRNG) である。
暗号の応用では様々な場面で乱数を必要とする。例えば、以下のようなものがある。
鍵生成
Nonce (プロトコル上1度だけ使われる数、number used once)
Salt (ECDSA、RSASSA-PSS などの署名スキーマで使われる)
ワンタイムパッド
その際に必要な乱数の性質は様々である。例えば、何らかの暗号プロトコルで Nonce を生成する際に求められるのは一意性だけである。一方、鍵の生成には高い無作為性が求められる。ワンタイムパッドには暗号論的擬似乱数も不適で、高いエントロピーを持つ真の無作為情報源が必要であり、それにより情報理論的安全性を得る。
理想的には、暗号プロトコル等に使用する乱数生成には高品質の情報源から得られるエントロピーを利用すべきである。それは、例えば量子論的な乱数生成器や予測不可能な何らかの系のプロセスである。情報理論的観点では、無作為性の程度とはエントロピーであり、ある系の入力のエントロピー以上のエントロピーは出力できないからである。しかし、実用システムでは、利用可能なエントロピー以上の乱数を必要とすることがある。無作為性を引き出すプロセスには時間が掛かるためである。そのような場合に CSPRNG を使うことがある。CSPRNG は利用可能なエントロピーをより多くのビット数に拡張する。