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

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

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

Однако пользователь должен иметь возможность свободно выбирать, использовать /dev/urandomли ему другой вариант, посколькув этом нет ничего плохого. Он там в основном как воспоминание о старых алгоритмах PRNG, которые были слабее с криптографической точки зрения. Например, в то время какСтраница руководства NetBSDдопускает, что различие все еще может быть полезным на очень ранней стадии загрузки, он описывает такое различие как"фольклор"и«воображаемая теория, которая защищает только от фантастических моделей угроз». Никто не согласен ни с тем, ни с другим.количество энтропии, требуемое этой командойни тот факт, что энтропия - это нечто, что на самом деле потребляется, как указано вСтраница руководства 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блокировки какой-либо службы?

решение1

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

решение2

Ну, одно отличие в том /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для ключей, которые должны быть абсолютно случайными.

решение3

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

Связанный контент