У меня все заработало, это просто установила новейшую версию OSX (в моем случае OS Sierra), и проблема исчезла.
Я не знаю, что это говорит нам о первопричине и работает ли это для всех, но это сработало для меня. YMMV.
Используйте / dev / urandom
для большинства практических целей.
Более подробный ответ зависит от того, какой у вас Unix.
Исторически, / dev / random
и / dev / urandom
вводились одновременно.
Как отметил @DavidSchwartz в комментарии , использование / dev / urandom
является предпочтительным в подавляющем большинстве случаев. Он и другие также предоставили ссылку на прекрасную статью Myths about / dev / urandom
, которую я рекомендую для дальнейшего чтения.
Вкратце:
/ dev / random
блокируется, когда заканчивается энтропия / dev / urandom
никогда не блокируется, чтение из / dev / random
может останавливать выполнение процессов. / dev / urandom
может не давать высококачественной случайности. / dev / urandom
не исчерпывается пул энтропии (используется / dev / random
), но использует вывод CSPRNG из восходящего потока. / dev / urandom
. Исключения из правила
В Биржи криптографического стека Когда использовать / dev / random
вместо / dev / urandom
в Linux {{1 }} @ otus дает два варианта использования :
Вскоре после загрузки на устройстве с низкой энтропией, если еще не было сгенерировано достаточно энтропии для правильного заполнения / dev / urandom
.
Создание одноразового блокнота с теоретической информационной безопасностью
Если вас беспокоит (1), вы можете проверить энтропию, доступную в / dev / random
.
Если вы выполняете (2), вы уже это знаете :)
Примечание: вы можете проверить, блокирует ли чтение из / dev / random , но будьте осторожны с возможными условиями гонки.
Альтернатива: не используйте ни то, ни другое!
@otus также указал, что система getrandom ()
будет читать из / dev / urandom
и блокировать, только если начальная энтропия семени недоступна.
Есть проблемы с изменением / dev / urandom
на использование getrandom ()
, но возможно, что новый / dev / xrandom
устройство создается на основе getrandom ()
.
Это не имеет значения, поскольку Википедия говорит :
macOS использует 160-битный Yarrow на основе SHA1. Нет никакой разницы между / dev / random и / dev / urandom; оба ведут себя одинаково. IOS от Apple также использует Тысячелистник.
Это не имеет значения, поскольку Википедия говорит :
/ dev / urandom
- это просто ссылка на/ dev / random
и только блоки, пока правильно не засеяны.
Это означает, что после загрузки FreeBSD достаточно умен, чтобы дождаться, пока будет набрано достаточно начальной энтропии, прежде чем доставить нескончаемый поток случайных качеств.
Используйте / dev / urandom
, предполагая, что ваша система прочитала хотя бы один раз из / dev / random
, чтобы обеспечить правильное начальное заполнение.
На странице rnd (4) написано :
/ dev / urandom
Никогда не блокируется.
/ dev / random
Иногда блоки. Будет блокироваться раньше при загрузке, если известно, что состояние системы предсказуемо.Приложения должны читать из / dev / urandom, когда им нужны случайно сгенерированные данные, например криптографические ключи или начальные числа для моделирования.
Системы должны быть спроектированы так, чтобы разумно читать хотя бы один раз из / dev / random при загрузке перед запуском любых служб, которые обращаются к Интернету или иным образом требуют криптографии, чтобы избежать {{ 1}} генерирует ключи предсказуемо.
Традиционно, единственная разница между /dev/urandom
и /dev/random
заключается в том, что происходит, когда ядро считает, что в системе нет энтропии - /dev/random
не закрыт, /dev/urandom
не открыт. Оба драйвера получали энтропию из add_disk_randomness()
, add_interrupt_randomness()
и add_input_randomness()
. Подробности смотрите в /drivers/char/random.c
.
Отредактировано для добавления: Начиная с Linux 4.8 /dev/urandom
был переработан для использования CSPRNG.
Так когда вы должны отказаться от закрытого ключа? Для любого вида криптографического использования, в частности, для посева DRBG. Есть очень хорошая статья, объясняющая последствия использования /dev/urandom
при генерации ключей RSA и недостаточной энтропии. Читайте Mining Your Ps and Qs.