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

13

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

Тем не менее, пользователь должен быть свободен в выборе, /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блокировкой какого-либо сервиса?

WhiteWinterWolf
источник

Ответы:

2

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

Вальтер
источник
0

Хорошо, что есть одна особенность /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
Вопрос OP заключался в следующем: есть ли какой-либо известный практический и неправильный побочный эффект связывания / dev / random с / dev / urandom в системах Linux, как это делается по умолчанию в системах FreeBSD?
контррежим
Интересно, что если эта разница выражена, они не должны быть связаны. Большинство других обсуждений в конечном итоге достигают единого мнения о разнице после загрузки, но такое поведение может указывать на более длительную разницу.
KalleMP
-2

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

vonbrand
источник
6
Это не правильно. /dev/urandomотлично подходит для криптографии .
Жиль "ТАК - перестань быть злым"
@ Жиль, это зависит от твоей степени паранойи. Для GPG на всех влияет ваш ключ (косвенно).
vonbrand
5
Если вы не доверяете /dev/urandom, у вас нет причин доверять GPG.
Жиль "ТАК - перестань быть злым"
3
@vonbrand: В зависимости от моей степени паранойи, если мне придется выбирать между математически проверенным PRNG для генерации случайности или пользователем, вынужденным печатать полный экран с мусором «asdfghasdfghasdfgh», я бы, безусловно, выбрал программное обеспечение PRNG. Я понимаю вашу точку зрения, что компьютер не способен генерировать случайность, но люди еще хуже. Тем не менее, возвращаясь к моему вопросу, за исключением спора « urandomпротив» random, подтверждаете ли вы, что замена /dev/randomфайла ссылкой не должна иметь другого побочного эффекта и являлась бы жизнеспособной альтернативой упомянутому rngdмною трюку?
WhiteWinterWolf
2
Это не правильно. Они используют один и тот же ГСЧ, но случайные блоки, если он догадывается, что энтропии недостаточно.
Дункан Х Симпсон