На странице руководства по rngd в Linux говорится: -o
(/ dev / random) используется для случайного числа вывод пока -r
(/ dev / hwrng) для случайного числа ввод. Что это значит? Чем отличаются файлы устройств и почему они используются по-разному? Насколько я понимаю, ядро генерирует свои собственные случайные последовательности из аппаратных событий и вставляет их в / dev / random. Так зачем же rngd нужно устройство «ввода»?
Насколько я понимаю, ядро генерирует свои собственные случайные последовательности из аппаратных событий и вставляет их в / dev / random.
Из открытых аппаратных драйверов да, из аппаратных случайных модулей (/ dev / hwrng) нет. Разработчики Linux считают уровень доверия непрозрачного случайного оборудования достаточно важным, чтобы не включаться по умолчанию, перенося решение в пространство пользователя.
rngd, будучи пользовательской программой, также упрощает добавление источников, не относящихся к ядру, таких как Маяк случайности NIST. (Хотя может быть интересно, чтобы национальная лаборатория бросала виртуальные кости, этот битовый поток является общедоступным, никогда используйте его для криптографических секретов.)
/dev/hwrng
это устройство, специально предназначенное для аппаратного источника случайных чисел. На странице руководства приведены дополнительные источники, из которых rngd может читать при желании.
По умолчанию rngd читает из этого источника и записывает в /dev/random
.
Эффект от записи на /dev/random
заключается в добавлении данных в пул энтропии ядра.
Количество источников, из которых ядро может самостоятельно собирать энтропийные данные, ограничено. Использование процесса пользовательской среды, который может собирать энтропию из дополнительных источников и передавать ее ядру, означает, что у него с меньшей вероятностью закончится энтропия, если /dev/random
активно используется.