※本サイトは広告を含みます

乱数の種類(真性乱数、疑似乱数)とそれぞれの特徴

背景

サイバーセキュリティ技術を支える”乱数”について、その特性や生成方式についてまとめてみました。

乱数とは

乱数とは、規則性がない値のことです。例えば、以下のように、次の値が予測できない性質があります。

4、75、8、47、15、6、・・・

この乱数は様々な用途で活用されています。身近な用途として、テレビゲームがあります。例えば、草むらを歩いていると動物に遭遇するゲームがあるとします。1回目はハト、2回目はネズミ、3回目はスズメというように、次はどの動物に遭遇するかがユーザーからはわからないようになっています。これを実現するために乱数生成技術が利用されています。何回も同じ動物に遭遇するゲームは面白くないですよね。

乱数は何故サイバーセキュリティの重要技術とされているのかについて解説します。現実世界では、家の鍵を落としたり盗まれたりした場合、鍵を新しく作ると思います。それは、紛失したその鍵を利用できなくし、家を泥棒から守る目的で行います。サイバーセキュリティの世界で考えますと、通信先の相手が信用できるかを判断するために乱数の技術が利用されています。具体的には、チャレンジ&レスポンス方式という認証技術に乱数が利用されています。これは、認証をする側が乱数を生成し、チャレンジコードとして認証される側へ送信します。認証される側はチャレンジコードに対し、事前に共有している鍵を利用してレスポンスコードを生成し返信します。認証をする側も同様にチャレンジコードに対しレスポンスコードを生成し、返信された値と照合します。一致した場合は通信先を信用できると判断します。ここで、ポイントとなるのが、チャレンジコードとレスポンスコードは毎回異なる値である(以前のコードは使えなくする)必要があるということです。仮に、チャレンジコードとレスポンスコードが毎回同じ値であると、攻撃者がレスポンスコードを盗聴し再送することで、正規の通信先に成りすますことが可能です。このような攻撃のことを再送攻撃(リプレイ攻撃)と呼びます。

真性乱数と疑似乱数の違い

真性乱数とはNIST SP800-90Bでは以下のように定義されています。

常にエントロピー ソースにアクセスでき、(適切に動作している場合) 完全なエントロピーを持つ出力を生成する RBG。
真のランダム ビット (または数値) ジェネレーターとも呼ばれます (DRBG と対比)。

簡単に言いますと、過去の値から予測/推測ができず、再現ができない乱数のことです。乱数を生成するためには入力情報が必要ですが、この入力情報に物理的な現象(ノイズ)を利用する点が特徴的です。具体的には、熱や音の変化などの自然現象をセンサー(ハードウェア)で検知し、その結果を基に乱数を生成します。その乱数の源泉となる生成源の代表例を3つ記載します。

  • 熱雑音
  • 量子光学
  • リング発振器

一方、疑似乱数とは、真性乱数とは異なり、論理的に乱数を生成する方式です。そのため、その気になれば過去の値から予測/推測、再現が可能です。NISTSP800-90Bでは以下のように定義されています。

DRBG メカニズムを含み、(少なくとも最初は) エントロピー入力のソースにアクセスできる RBG。 DRBG は、シードと呼ばれる秘密の初期値と他の可能な入力からビットのシーケンスを生成します。DRBG は、疑似乱数 (またはビット) ジェネレーターと呼ばれることがよくあります。

疑似乱数を生成する際、シードと呼ばれる秘密の値に対し、ハッシュ化や暗号化などのロジックを利用してランダム性を生み出しています。

真性乱数の生成方式①~熱雑音方式~

熱雑音方式は、温度の変化量をデジタルデータに変換することで乱数を生成します。そのため、熱雑音方式は温度による影響を受けやすいとされています。つまり、温度が高温だったり低温だったりすると、温度の変化量に偏りが発生します。そのため、熱雑音方式は十分にランダムな乱数が生成できないリスクを抱えています。

真性乱数の生成方式②~リング発振器方式~

任意の個数のインバーターを環状に接続した回路のことをリング発振器(リングオシレータ)と呼びます。この仕組みは、インバーターのハードウェア的なバラつき(伝送遅延やハードの違い)を利用してランダムな値を生成します。熱雑音方式と異なり、温度に依存しません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.