Несколько вопросов о параметрах kernel.random.*
Я пытаюсь понять параметры ядра Linux, которые находятся под /proc/sys/kernel/random/
Но у меня есть некоторые проблемы. Не могли бы вы помочь мне разобраться?
- Что
boot_id
параметр используется для? Я нашел только информацию, сгенерированную при загрузке, но не смог найти почему. - Я знаю, что размер пула энтропии постоянен (4096 бит) и не может быть изменен. Почему число так мало? Может быть, скажем, 1048576 или больше? Может быть, нехорошо иметь много битов энтропии?
- Это похоже на второй вопрос, но касается
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? Он просто висит немного дольше, или, может быть, есть что-то еще?
1 ответ
Параметр идентификатора загрузки не имеет отношения к статистике энтропии. Он просто однозначно определяет текущую загрузку, что полезно, если вы хотите узнать, перезагрузился ли компьютер или что-то еще.
Энтропийный пул хранит случайные данные способом, определяемым реализацией, который предназначен для обработки как черный ящик. В общем, хорошо иметь как можно больше битов энтропии, если вы полагаетесь на источник энтропии; однако слишком много - расточительно. Если ваш сервер выполняет много криптографии (например, генерирует сеансовые ключи TLS или часто генерирует ключи RSA или даже токены безопасности) или по каким-то другим причинам все время нуждается в сильных случайных числах, вам нужна большая энтропия, и есть даже устройства, может получить этот поток гигабитных потоков (из физического источника).
Размер пула обычно можно изменить, вставив новый размер в файл размера пула. Ядро будет накапливать энтропию, которую оно получает из различных источников (популярным способом является относительное время событий), а также энтропию, которую оно получает от ввода в /dev/random
(через RNDADDENTROPY
IOCTL; простая запись в это устройство изменяет данные, но не добавляет номинальных бит энтропии). Если бы у вас был аппаратный источник энтропии, который вы использовали недостаточно, вы бы действительно хотели, чтобы этот параметр не был бесконечным.
Порог записи-пробуждения используется редко, но хорош для секвенирования; прирост производительности, который он обеспечивает, должен быть минимальным. Он активирует блокировку устройств для записи в пул энтропии (т. Е. Источники, которые будут использовать вышеупомянутый ioctl для добавления энтропии в пул), когда пул становится низким. Это не обязательно будет иметь эффект добавления энтропии, очевидно.
Порог чтения-пробуждения противоположен; это количество битов энтропии, которые должны быть доступны (т. е. число, указанное в entropy_avail), прежде чем мы разрешим что-либо читать из /dev/random
, /dev/urandom
игнорирует этот параметр (поскольку чтение из него неблокирующее и не ожидает энтропии, вместо этого позволяя читать псевдослучайные данные).