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

Страница man для rngd в Linux говорит -o (/dev/random) используется для вывода случайных чисел, в то время как -r (/dev/hwrng) для ввода случайных чисел. Что это значит? Чем отличаются эти файлы устройств и почему они используются по-разному? Насколько я понимаю, ядро ​​генерирует свои собственные случайные последовательности из аппаратных событий и вставляет их в /dev/random. Так зачем rngd понадобиться устройство ввода?

2 ответа

/dev/hwrng это устройство специально для аппаратного источника случайных чисел. Страница man предоставляет дополнительные источники, из которых rngd может читать при желании.

По умолчанию rngd читает из этого источника и пишет в /dev/random,

Эффект написания /dev/random это добавить данные в пул энтропии ядра.

Количество источников, из которых ядро ​​может самостоятельно собирать энтропийные данные, ограничено. Использование процесса пользовательского пространства, который может собирать энтропию из дополнительных источников и предоставлять ее ядру, означает, что вероятность того, что энтропия исчерпается, если /dev/random интенсивно используется.

Насколько я понимаю, ядро ​​генерирует свои собственные случайные последовательности из аппаратных событий и вставляет их в / dev / random.

Из открытых аппаратных драйверов да, из аппаратных случайных модулей (/dev/hwrng) нет. Разработчики Linux считают уровень доверия непрозрачного случайного оборудования достаточно важным, чтобы не включать его по умолчанию, перенося решение в пространство пользователя.

rngd, будучи пользовательской программой, также позволяет легко смешивать неядерные исходники, такие как NIST Randomness Beacon. (Хотя может быть забавно иметь виртуальную игру в кости для лабораторной игры, этот поток битов общедоступен, никогда не используйте его для крипто-секретов.)

Другие вопросы по тегам