
В настоящее время я тестирую 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.