Как работает пул энтропии ядра?
Я использую /dev/urandom
для генерации случайных данных для моей программы. Я узнал это /dev/random
может быть пустым, потому что в отличие от /dev/urandom
, Он не использует SHA, когда генерируется недостаточно байтов. /dev/random
использует "пул энтропии ядра". По-видимому, он полагается на тайминги клавиатуры, движения мыши и тайминги IDE.
но как это действительно работает?
И разве нельзя "кормить" пул энтропии, делая/dev / random output предсказуемым?
3 ответов
то, что вы говорите, находится на месте, да теоретически можно подавать энтропию в /dev/random
, но вам нужно будет контролировать много источников "шума" ядра, чтобы он был значительным. Вы можете посмотреть на исходный код случайные.c посмотреть /dev/random
поднимает шум. В принципе, если вы контролируете значительное количество источников шумов, вы можете догадаться, что другие вносят вклад в пул энтропии.
С /dev/urandom
это хэш цепь сеяный от /dev/random
, тогда вы могли бы предсказать следующие числа, если бы знали семя. Если у вас достаточно контроля над пулом энтропии, то с выхода /dev/urandom
возможно, вы сможете угадать это семя, что позволит вам предсказать все следующие числа из /dev/urandom
, но только если вы держите /dev/random
исчерпан, в противном случае /dev/urandom
будет пересеяно.
это, как говорится, я не видел, чтобы кто-то действительно это делал, даже в контролируемой среде. Из конечно, это не гарантия, но я бы не волновался.
поэтому я бы предпочел использовать /dev/urandom
и гарантировать, что моя программа не блокируется во время ожидания энтропии, вместо использования /dev/random
и просить пользователя делать глупые вещи, такие как перемещение мыши или удар по клавиатуре.
Я думаю, вы должны прочитать об энтропии и случайности от LWN, надеюсь, это успокоит ваши заботы : -).
если вы все еще беспокоитесь, то получите себе HRNG.
редактировать Вот небольшая заметка об энтропии:
Я думаю, что понятие энтропии вообще трудно понять. Существует статья с дополнительной информацией о Википедия. Но в принципе, в этом случае вы можете читать энтропию как случайность.
Итак, как я вижу, у вас есть большой мешок цветных шаров, чем выше энтропия в этом мешке, тем труднее предсказать следующий цвет, взятый из пакет.
в этом контексте ваш пул энтропии - это просто куча случайных байтов, где один не может быть получен из предыдущего или любого другого. Это означает, что у вас высокая энтропия.
Я ценю глубину ответа jbr.
добавление практического обновления для тех, кто в настоящее время смотрит на команду IPSec pki или что-то подобное блокирование пустого пула энтропии:
Я только что установил rng-tools в другом окне, и моя команда pki завершена.
apt-get install rng-tools
Я в середине чтения газеты в разделяется на составляющие и обратил внимание на раздел, где говорится:
"для разработчиков библиотеки : По умолчанию используется наиболее безопасная конфигурация. Оба!--0--> и
Dropbear
использовать по умолчанию/dev/urandom
вместо/dev/random
иDropbear
по умолчанию используется менее безопасной Метод случайности подписи DSA, хотя более безопасный метод доступен как вариант."
авторы обращаются к компромисс приложения, висящего в ожидании построения энтропии /dev/random
чтобы получить лучшую безопасность по сравнению с быстрой, но менее безопасной, результат от /dev/urandom
.