Virtio RNG の有効化


Virtio RNG は準仮想化された乱数生成ツールです。Virtio RNG は、仮想マシン(VM)インスタンスのホストマシンによって生成されたエントロピー プールからの乱数を提供します。エントロピー プールは、システムからランダムビットの情報を収集し、その情報を使用して真の乱数を生成します。これは SSH 認証鍵や固有の ID などの機密情報に使用できます。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

制限事項

  • Virtio RNG は Windows イメージで使用できません。
  • デフォルトでは、Compute Engine VM はデーモンの代わりに Virtio RNG を使用してゲスト エントロピー プールを補充します。Virtio RNG の代わりに、または Virtio RNG とともにエントロピー収集デーモンを使用する場合は、インストールする必要があります。エントロピー収集デーモンの例については、rng-tools のドキュメントをご覧ください。

Virtio RNG が有効かどうかを確認する

次のコマンドを実行して、VM で Virtio RNG が有効になっているかどうかを確認できます。

lsmod | grep rng

Virtio RNG を有効にしている場合、出力は次のようになります。

virtio_rng             16384  0
rng_core               16384  2 virtio_rng
virtio_ring            28672  4 virtio_rng,virtio_scsi,virtio_pci,virtio_net
virtio                 16384  4 virtio_rng,virtio_scsi,virtio_pci,virtio_net

Virtio RNG のテスト

/dev/random デバイスを使用して Virtio RNG をテストできます。

  1. SSH を使用して VM に接続します。たとえば、gcloud CLI を使用して次のように接続できます。

    gcloud compute ssh VM_NAME
    

    VM_NAME は実際の VM 名に置き換えます。

  2. rng-tools をインストールします。

    CentOS

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo yum install rng-tools

    Debian

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo apt install rng-tools

    Fedora CoreOS

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo yum install rng-tools

    RHEL

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo yum install rng-tools

    SLES

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo zypper install rng-tools

    Ubuntu LTS

    rng-tools をインストールするには、次のコマンドを使用します。

    sudo apt install rng-tools

    Ubuntu イメージによっては Package 'rng-tools' has no installation candidate エラーが返されます。このエラーが表示された場合は、次のコマンドを実行します。

    sudo apt update
    sudo apt install rng-tools
    
  3. VM で rngtest コマンドを実行します。

    cat /dev/random | rngtest -c 1000
    

Virtio RNG が有効になっていない場合、コマンドは何も返しません。有効にすると、次のようなレスポンスが返されます。

rngtest 2-unofficial-mt.14..
rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 1000
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 0
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=4.801; avg=7.318; max=7.839)Mibits/s
rngtest: FIPS tests speed: (min=39.005; avg=69.557; max=72.523)Mibits/s
rngtest: Program run time: 2880954 microseconds

次のステップ