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

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

2 ответа

Решение

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

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

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

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

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

Для последних ядер вы можете проверить здесь:

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

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

Также, чтобы увидеть, что доступно (этот пример на современной машине Intel, также с подключенным аппаратным rng 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 есть интересная предыстория.

Чтобы узнать, у вас есть 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
Другие вопросы по тегам