10

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

2 ответа2

7

Существует два вероятных типа "реального" аппаратного 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 чтобы увидеть, что распознано.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .