Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.9.6. 乱数ジェネレーターの使用

簡単に破損できない安全な暗号鍵を生成できます。乱数のソースが必要です。一般的に、数字がランダムになれば、一意の鍵を取得する可能性がより高くなります。通常、乱数生成用のエントロピーは 、通常「noise」から、またはハードウェアの乱数ジェネレーターを使用して取得されます
rng-tools パッケージの一部である rngd デーモンは、環境提供のノイズと、エントロピーの抽出にハードウェア乱数ジェネレーターを使用できます。デーモンは、乱数性のソースによって提供されたデータが十分にランダムなものかどうかをチェックしてから、カーネルの乱数エントロピープールに保存します。生成する乱数は、/dev/random デバイスおよび /dev /urandom 文字デバイスで利用できます。
/dev/random/dev/urandom と /dev/urandom の相違点は、適切にランダムな出力を生成するためにエントロピーの量が不十分なと判断すると、数値の指定が停止します。逆に、/dev/urandom はブロックなしのソースで、カーネルのエントロピープールを再利用し、エントロピーがより小さいエントロピーで、擬似ランダムな数字を無制限で提供できます。そのため、/dev/urandom は長期の暗号鍵を作成するのに使用しないでください。
rng-tools パッケージをインストールするには、root で以下のコマンドを実行します。
~]# yum install rng-tools
rngd デーモンを起動するには、root で以下のコマンドを実行します。
~]# systemctl start rngd
デーモンのステータスをクエリーするには、以下のコマンドを使用します。
~]# systemctl status rngd
rngd デーモンをオプションのパラメーターで起動するには、直接実行します。たとえば、random-number 入力 (/dev/hwrandom以外の)の代替ソースを指定するには、以下のコマンドを使用します。
~]# rngd --rng-device=/dev/hwrng
上記のコマンドは、乱数の読み込み時に、/dev/hwrngrngd デーモンを起動します。同様に、-o (または --random-device)オプションを使用して、乱数出力(デフォルトの /dev/random以外)にカーネルデバイスを選択できます。利用可能なすべてのオプションの一覧については、rngd(8) man ページを参照してください。
特定のシステムで利用可能なエントロピーのソースを確認するには、root で以下のコマンドを実行します。
~]# rngd -vf
Unable to open file: /dev/tpm0
Available entropy sources:
	DRNG
注記
rngd -v コマンドを入力すると、後続のプロセスがバックグラウンドで実行を継続します。デフォルトで、-b、--background オプション(become a daemon)が適用されます。
TPM デバイスがない場合は、エントロピーのソースとして Intel Digital Random Number Generator(DRNG)のみが表示されます。CPU が RDRAND プロセッサー命令をサポートしているかどうかを確認するには、以下のコマンドを入力します。
~]$ cat /proc/cpuinfo | grep rdrand
rng-tools パッケージには、データの乱数性を確認するのに使用できる rngtest ユーティリティーも含まれています。/dev/random の出力のランダム性のレベルをテストするには、以下のように rngtest ツールを使用します。
~]$ cat /dev/random | rngtest -c 1000
rngtest 5
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 998
rngtest: FIPS 140-2 failures: 2
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: 2
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=1.171; avg=8.453; max=11.374)Mibits/s
rngtest: FIPS tests speed: (min=15.545; avg=143.126; max=157.632)Mibits/s
rngtest: Program run time: 2390520 microseconds
rngtest ツールの出力に多数の障害が発生すると、テスト済みデータの乱数性が不十分であり、依存すべきはないことを示しています。rngtest ユーティリティーで利用可能なオプションの一覧については、rngtest(1) man ページを参照してください。
Red Hat Enterprise Linux 7 では、ホストマシンからエントロピーへのアクセスのある KVM 仮想マシンを提供する virtio RNG (乱数ジェネレーター)デバイスが導入されました。推奨される設定では、hwrng フィードがホスト Linux カーネルのエントロピープールに (/dev/randomまで) に、QEMU はゲストが要求するエントロピーのソースとして /dev/random を使用します。

図4.1 virtio RNG デバイス

virtio RNG デバイス
以前のリリースでは、Red Hat Enterprise Linux 7.0 および Red Hat Enterprise Linux 6 ゲストは、rngd ユーザースペースデーモンを介してホストからエントロピーを使用する可能性がありました。デーモンの設定は、Red Hat Enterprise Linux インストールごとに手動の手順でした。Red Hat Enterprise Linux 7.1 では、手動の手順が解消され、プロセス全体がシームレスに、自動となりました。rngd の使用は不要であり、利用可能なエントロピーが特定のしきい値を下回ると、ゲストカーネル自体がホストからエントロピーを取得します。ゲストカーネルは、要求直後にアプリケーションに対してランダム番号を使用できるようにする位置に置かれます。
Red Hat Enterprise Linux インストーラーである Anaconda は、インストーラーイメージに virtio-rng モジュールを提供し、Red Hat Enterprise Linux のインストール時にホストがエントロピーを利用できるようにするようになりました。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。