Подтвердить что ты не робот

Как работает пул энтропии ядра?

Я использую /dev/urandom для генерации случайных данных для моих программ. Я узнал, что /dev/random может быть пустым, потому что, в отличие от /dev/urandom, он не использует SHA, когда не генерируется достаточное количество байтов. /dev/random использует " пул энтропии ядра". По-видимому, он полагается на тайминги клавиатуры, движения мыши и тайм-ауты IDE.

Но как это работает?
И не будет ли возможно "подавать" энтропийный пул, что позволяет прогнозировать /dev/random output?

4b9b3361

Ответ 1

То, что вы говорите, это спот, да теоретически можно подавать энтропию в /dev/random, но вам нужно будет контролировать множество источников "шума" ядра, чтобы они были значительными. Вы можете посмотреть источник random.c, чтобы увидеть, где /dev/random получает шум. В принципе, если вы контролируете значительное количество источников шума, вы можете догадаться, что другие вносят вклад в энтропийный пул.

Так как /dev/urandom является цепочкой хешей, высеянной из /dev/random, тогда вы могли бы предсказать следующие цифры, если бы знали семена. Если у вас достаточно управления пулом энтропии, то из вывода /dev/urandom вы можете угадать это семя, которое позволит вам предсказать все следующие числа из /dev/urandom, но только если вы сохраните /dev/random исчерпан, в противном случае /dev/urandom будет изменен.

Говоря, я не видел, чтобы кто-то на самом деле делал это, даже не в контролируемой среде. Конечно, это не гарантия, но я бы не стал беспокоиться.

Поэтому я предпочел бы использовать /dev/urandom и гарантировать, что моя программа не блокируется, ожидая энтропии, вместо использования /dev/random и попросив пользователя делать глупые вещи, например, перемещая мышь или удар по клавиатуре.

Думаю, вам следует читать По энтропии и случайности от LWN, надеюсь, это успокоит ваши заботы:-).

Если вы все еще беспокоитесь, тогда получите HRNG.

Edit Вот небольшая заметка об энтропии:

Я думаю, что понятие энтропии, как правило, трудно понять. Существует статья с дополнительной информацией о Wikipedia. Но в принципе, в этом случае вы можете считать энтропию случайностью.

Итак, как я вижу это, у вас есть большой мешок с цветными шарами, чем выше энтропия в этой сумке, тем труднее предсказать следующий цвет, нарисованный из сумки.

В этом контексте ваш энтропийный пул представляет собой всего лишь кучу случайных байтов, где невозможно получить результат из предыдущего или любого другого. Это означает, что у вас высокая энтропия.

Ответ 2

Я ценю глубину ответа jbr.

Добавление практического обновления для тех, кто в настоящее время смотрит на команду ipsec pki или что-то подобное блокирует пустую энтропийную пул:

Я только что установил rng-tools в другое окно, и моя команда pki завершена.

apt-get install rng-tools

Ответ 3

Я посреди чтения газеты на factorable и отметил раздел, в котором говорится:

"Для разработчиков библиотеки: По умолчанию самая безопасная конфигурация. Оба OpenSSLи Dropbear по умолчанию использовать /dev/urandom вместо /dev/random и Dropbear по умолчанию используется менее безопасный Метод случайности подписи DSA, хотя в качестве опции доступен более безопасный метод".

Авторы обращаются к компромиссу приложения, зависающего при ожидании энтропии, чтобы построить /dev/random, чтобы получить лучшую защиту по сравнению с быстрым, но менее безопасным результатом /dev/urandom.