10.6. 乱数ジェネレーター (RNG) デバイス

virtio-rng は、RNG データをゲスト仮想マシンのオペレーティングシステムにフィードし、これにより、要求されるとゲスト仮想マシンの新規エントロピーを提供する仮想 RNG (乱数ジェネレーター) デバイスです。
RNG の使用は、キーボード、マウスおよびその他の入力がゲスト仮想マシンのエントロピーを十分に生成しない場合に特に便利です。virtio-rng デバイスは、Red Hat Enterprise Linux と Windows ゲスト仮想マシンの両方で使用できます。Windows 要件のインストールについての説明は、注記 を参照してください。特筆されない限り、以下の説明は、Red Hat Enterprise Linux と Windows ゲスト仮想マシンの両方に当てはまります。
virtio-rng が Linux ゲスト仮想マシンで有効にされると、chardev が /dev/hwrng の場所にあるゲスト仮想マシンに作成されます。次に、この chardev が開かれ、ホスト物理マシンからエントロピーを取得するために読み込まれます。ゲスト仮想マシンのアプリケーションが virtio-rng デバイスの乱数度を透過的に使用することから利点を得られるようにするには、/dev/hwrng からの入力が、ゲスト仮想マシン内のカーネルエントロピープールに中継される必要があります。これは、この場所にある情報が rgnd デーモン (rng-tools 内に格納される) と対で使用される場合に実行できます。
この結合により、エントロピーがゲスト仮想マシンの /dev/random ファイルに経路指定されます。このプロセスは、Red Hat Enterprise Linux 6 ゲスト仮想マシンでは手動で行なわれます。
Red Hat Enterprise Linux 6 ゲスト仮想マシンでは、以下のコマンドを実行して、この結合を行います。
# rngd -b -r /dev/hwrng -o /dev/random
ここに示されるコマンドの説明については、man rngd コマンドを実行してください。追加の例については、virtio-rng デバイスの設定に関する 手順10.11「コマンドラインツールを使用した virtio-rng の実装」 を参照してください。

注記

Windows ゲスト仮想マシンでは、ドライバー viorng がインストールされる必要があります。いったんインストールされると、仮想 RNG デバイスは、Microsoft によって提供される CNG (crypto next generation) API を使用して動作します。ドライバーがインストールされると、virtrng デバイスは RNG プロバイダーの一覧に表示されます。

手順10.11 コマンドラインツールを使用した virtio-rng の実装

  1. ゲスト仮想マシンをシャットダウンします。
  2. ターミナルウィンドウで、virsh edit domain-name コマンドを使用し、必要なゲスト仮想マシンの XML ファイルを開きます。
  3. 以下を含めるように <devices> 要素を編集します。
    
      ...
      <devices>
        <rng model='virtio'>
          <rate period="2000" bytes="1234"/>
          <backend model='random'>/dev/random</backend>
               <source mode='bind' service='1234'>
               <source mode='connect' host='192.0.2.1' service='1234'>
          </backend>
        </rng>
      </devices>
      ...