Неправильно ли связывать / dev / random с / dev / urandom в Linux?

В настоящее время я тестирую gpg --genkey на виртуальной gpg --genkey Linux. К сожалению, это программное обеспечение, похоже, полагается на /dev/random чтобы собрать энтропию и вежливо просит пользователя вручную набирать экраны после экранов криптографически случайного ввода, чтобы в конечном итоге он мог создать ключ, и я не нашел команды, line, чтобы сообщить ему использовать другой файл в качестве источника энтропии (парень на этом видео сталкивается с той же проблемой …).

Тем не менее, пользователь должен быть свободен в выборе /dev/urandom потому что в этом нет ничего плохого . Это в основном как воспоминание о старых алгоритмах PRNG, которые были слабее с криптографической точки зрения. Например, в то время как справочная страница NetBSD предусматривает, что различие все еще может быть полезно на очень ранней стадии загрузки, оно описывает такое различие, как «фольклор» и «воображаемая теория, которая защищает только от моделей фантазийных угроз» . Никто не соглашается ни с величиной энтропии, требуемой этой командой, ни с тем фактом, что энтропия – это то, что фактически фактически потребляется, как указано в man-странице GPG ( «ПОЖАЛУЙСТА, не используйте эту команду, если вы не знаете, что делаете, она может удалите драгоценную энтропию из системы! » ).

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

Я попытался решить проблему с помощью FreeBSD, удалив /dev/random и связав ее с /dev/urandom :

 rm /dev/random ln -s /dev/urandom /dev/random 

Я вижу это как параметр, указывающий «Я доверяю /dev/urandom как источник энтропии» .

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

Мой вопрос: есть ли какой-либо известный, практичный и неправильный побочный эффект связывания /dev/random с /dev/urandom в системах Linux, как это делается по умолчанию на системах FreeBSD? Или можно предусмотреть, чтобы установить это на постоянной основе (например, в сценарии в конце процесса загрузки) в случае повторяющихся проблем из-за /dev/random блокировки некоторой службы?

См. « Мифы о urandom» , неизвестной атаки на / dev / urandom, которая также не была бы атакой на / dev / random. Основная проблема, с которой сталкивается система Linux, – это клонирование и запуск нескольких виртуальных машин без перезапуска сохраненного пула энтропии после клонирования. Это угловой случай, касающийся того, что вы хотите.

Ну и что-то особенное в /dev/random заключается в том, что он останавливает вывод после использования энтропийного пула. попробуй это:

 $ cat /dev/random (a few short lines of gibberish)^C $ 

/dev/urandom однако, будет использовать один и тот же пул для продолжения вывода. как показано здесь:

 $ cat /dev/urandom (tons of gibberish fills the screen)^C $ 

(Когда вы пытаетесь сшить эти специальные устройства, ваша подсказка может быть испорчена. Просто введите reset и введите, ваш терминал вернется в нормальное состояние)

Используйте /dev/urandom когда вам просто нужно заполнить что-то постоянным потоком «рандомизированных» бит. Используйте /dev/random для ключей, которые должны быть абсолютно случайными.

В Linux /dev/random дает высококачественные случайные биты. Они получены из источников, которые не являются предсказуемыми и не повторяемыми, внешними по отношению к машине. Напротив, /dev/urandom использует те же случайные данные, что и /dev/random (если доступно), если их нет, в нем используется генератор псевдослучайных чисел, который является детерминированным . Для большинства целей это непредсказуемо, но не для очень требовательных приложений, таких как криптография, и тем более для создания долгоживущих ключей, подобных GPG.