私のマシンがRNGハードウェアをサポートしているかどうかをどのようにして知ることができますか?


11

エントロピープールの問題に関するブログに出会い、RNGという特別なハードウェアがあることを知りました。私はこのカーネルRNGページを読みましたが、サーバーがハードウェアRNGをサポートしているかどうかを確認する方法があるかどうかはまだ疑問です。

回答:


8

「実際の」ハードウェアRNGには、CPUベースのものと、チップセットまたはPCIベースのものの2つのタイプがあります。(USBハードウェアのRNGもいくつかありますが、そのうちの1つに気付いたと思います;-)

以下はLinux固有です。

CPUベースのものについては/proc/cpuinfo、手掛かりをチェックできます。カーネルがそれらを検出するのに十分新しいものであると想定します。Intel CPUの場合、フラグはですrdrand。詳細はこちら:https : //unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean

チップセットについてCONFIG_HW_RANDOMは、カーネルベンダーごとのサポートCONFIG_HW_RANDOM_INTEL ..._AMDなどで有効にした場合、ブートメッセージに検出されたかどうかが示されます(たとえば、「Intel 82802 RNGが検出されました」)。それらがモジュールとして存在modprobe intel-rngする場合、それがロードされるかどうかを確認する()ことができる場合、「そのようなデバイスはありません」はハードウェアが検出されていないことを示します。すべてのドライバが一貫して「RNGが検出されました」または「検出されませんでした」と出力するわけではないため、ソース(/drivers/char/hw_random/カーネルソースのディレクトリ)を読み取ってしまう可能性があります。

他の人は、lspci -v何が認識されているかを確認できます。


1

あなたを見つけるにRNGは、次のことを行ってください:

1)名前に「rng」が含まれるすべてのモジュールをリストします。

cat /proc/modules | grep -i rng

2)何かあれば、このような結果が得られます

tpm_rng 16384 0 - Live 0xffffff......

3)modprobe現時点でそれを有効にするかロードしてください:

modprobe tpm_rng

更新:ステップ(1)についてmodprobe -lは、ubuntu 16で作業していなかったため、「/ proc / modules」内を検索しようとしましたが、それが正常に機能する場合は問題ありません..最近、検索して知ったすべてのモジュールは内部に常駐している/lib/modules/$(uname -r)ので、以下を使用することもできます。

cat /lib/modules/$(uname -r)/modules.dep | grep -i rng.*.ko

1

最近のカーネルでは、ここで確認できます:

$ cat /sys/devices/virtual/misc/hw_random/rng_current 
virtio_rng.0

そのファイルが存在し、何も言わない場合、基本的にはrngが存在します。(この場合、ホストがランダムソースを提供する仮想マシンです)

また、何が利用可能かを確認します(この例は、ChaosKeyハードウェアRNGが接続されている最新のIntelマシンからのものです)。

$ cat /sys/devices/virtual/misc/hw_random/rng_available 
ChaosKey-hw-1.0-sw-1.9-001900375346430b20333632 tpm-rng-0 

したがって、ChaosKeyとtpmの両方が利用可能です。

https://daniel-lange.com/archives/152-hello-buster.htmlに興味深い背景があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.