Я пытаюсь понять параметры ядра Linux, которые находятся под /proc/sys/kernel/random/
, но у меня проблемы. Не могли бы вы помочь мне разобраться в некоторых вещах?
boot_id
параметр, используемый для? Я нашел только информацию, сгенерированную при загрузке, но не смог понять почему.entropy_avail
параметр - какова цель не заполнять весь пул энтропии? Когда я проверяю параметр, он колеблется около 1000 бит, но размер пула равен 4096. Когда entropy_avail
достигает порога, установленного в write_wakeup_threshold
, он немного падает (обычно 100) и снова поднимается до точки, указанной в write_wakeup_threshold
параметр. Так зачем нам это 4096 единиц энтропии? read_wakeup_threshold
и write_wakeup_threshold
параметры? Первый просто засыпает процесс, которому требуется энтропия от /dev/random
устройство, но какая разница, когда я устанавливаю его на 64, 128 или 256? Просто зависает немного дольше, а может, есть что-то еще?Параметр идентификатора загрузки на самом деле не имеет отношения к статистике энтропии. Он просто однозначно определяет текущую загрузку, что полезно, если вы хотите узнать, перезагружен ли компьютер или что-то в этом роде.
Пул энтропии хранит случайные данные определенным реализацией способом, который предназначен для обработки как черный ящик. В общем, хорошо иметь как можно больше битов энтропии, если вы полагаетесь на источник энтропии; Однако иметь слишком много - расточительно. Если ваш сервер много занимается криптографией (например, генерирует ключи сеанса TLS или часто генерирует ключи RSA или даже токены безопасности) или постоянно нуждается в сильных случайных числах по какой-то другой причине, вам нужно много энтропии, и есть даже устройства, которые вы может получить эту проблему гигабитными потоками (из физического источника).
Размер пула обычно можно изменить, указав новый размер в файле размера пула. Ядро будет накапливать энтропию, которую оно получает из различных источников (относительные тайминги событий - популярный способ), а также энтропию, которую оно получает от ввода в /dev/random
(через RNDADDENTROPY
ioctl; простая запись в это устройство изменяет данные, но не добавляет номинальные биты энтропии). Если бы у вас был аппаратный источник энтропии, который вы недостаточно использовали, вы бы действительно хотели, чтобы этот параметр не был бесконечным.
Порог записи-пробуждения используется редко, но хорош для упорядочивания; прирост производительности должен быть минимальным. Он пробуждает устройства, блокирующие запись в пул энтропии (т. Е. Источники, которые будут использовать вышеупомянутый ioctl для добавления энтропии в пул), когда пул становится низким. Очевидно, это не обязательно приведет к увеличению энтропии.
Порог чтения-пробуждения противоположен; это количество бит энтропии, которое должно быть доступно (т.е. число, указанное в entropy_avail), прежде чем мы разрешим что-либо читать из /dev/random
. /dev/urandom
игнорирует этот параметр (так как чтение из него не блокируется и не дожидается энтропии, вместо этого разрешая чтение псевдослучайных данных).