Ответ 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. Но в принципе, в этом случае вы можете считать энтропию случайностью.
Итак, как я вижу это, у вас есть большой мешок с цветными шарами, чем выше энтропия в этой сумке, тем труднее предсказать следующий цвет, нарисованный из сумки.
В этом контексте ваш энтропийный пул представляет собой всего лишь кучу случайных байтов, где невозможно получить результат из предыдущего или любого другого. Это означает, что у вас высокая энтропия.