Несколько вопросов о параметрах kernel.random.*

Я пытаюсь понять параметры ядра Linux, которые находятся под /proc/sys/kernel/random/Но у меня есть некоторые проблемы. Не могли бы вы помочь мне разобраться?

  1. Что boot_id параметр используется для? Я нашел только информацию, сгенерированную при загрузке, но не смог найти почему.
  2. Я знаю, что размер пула энтропии постоянен (4096 бит) и не может быть изменен. Почему число так мало? Может быть, скажем, 1048576 или больше? Может быть, нехорошо иметь много битов энтропии?
  3. Это похоже на второй вопрос, но касается entropy_avail параметр - какова цель не заполнять весь пул энтропии? Когда я проверяю параметр, он колеблется около 1000 бит, но размер пула составляет 4096. Когда entropy_avail достигает порогового значения, установленного в write_wakeup_thresholdнемного падает (обычно 100) и снова поднимается до точки, указанной в write_wakeup_threshold параметр. Так зачем нам этот 4096 в энтропии?
  4. Есть ли какая-либо причина, почему я должен увеличить или уменьшить значение 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 игнорирует этот параметр (поскольку чтение из него неблокирующее и не ожидает энтропии, вместо этого позволяя читать псевдослучайные данные).

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