Как я могу узнать, есть ли на моей машине аппаратная поддержка RNG?

11

Я наткнулся на блог, посвященный проблеме энтропийного пула, и узнал, что есть специальное оборудование под названием RNG. Я прочитал эту страницу ядра RNG, но мне все еще интересно, есть ли способ узнать, поддерживает ли мой сервер аппаратный RNG или нет.

аллан руин
источник

Ответы:

8

Существует два вероятных типа «реального» аппаратного RNG: процессор на базе процессора и чипсет или PCI. (Есть также несколько аппаратных RNG USB, но я подозреваю, что вы бы заметили один из них ;-)

Следующее является специфичным для Linux.

Что касается процессора, вы можете проверить /proc/cpuinfoналичие ключей, если ваше ядро ​​достаточно новое для их обнаружения. Для процессоров Intel этот флаг можно rdrandнайти здесь: /unix/43539/what-do-the-flags-in-proc-cpuinfo-mean

Для набора микросхем те, если вы CONFIG_HW_RANDOMвключены в ядре и поддержку за поставщиком и CONFIG_HW_RANDOM_INTEL ..._AMDт.д. , то ваши загрузочные сообщения следует указать , если таковому были найдены (например , «Intel 82802 RNG обнаружен»). Если они присутствуют в виде модулей, вы можете попробовать ( modprobe intel-rng) проверить, загружается ли он, «Нет такого устройства» означает отсутствие обнаруженного оборудования. Не все драйверы постоянно печатают «Обнаружен ГСЧ» или «Не обнаружен», поэтому вы можете прочитать источники ( /drivers/char/hw_random/каталог источника ядра).

Для других вы можете проверить, lspci -vчтобы узнать, что распознано.

mr.spuratic
источник
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

Если этот файл существует и не говорит ни одного, то в основном у вас есть подарок. (в данном случае это виртуальная машина, в которой хост предоставляет случайный источник)

Также посмотреть, что доступно (этот пример с современной машины Intel, также с подключенным аппаратным обеспечением ChaosKey)

$ 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 есть интересная история.

Тим Брей
источник