Назад | Перейти на главную страницу

В чем разница между устройством ввода случайных чисел и устройством вывода?

На странице руководства по 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 активно используется.