Почему у меня постоянно заканчивается энтропия?

Итак, я пытался создать новый ключ GPG и продолжаю получать эту известную ошибку:

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 294 more bytes)

Итак, после 20 минут движений мыши, которые даже не привели к обнадеживающему +++++s в нижней части терминала, я попробовал то, что, кажется, решило проблему для других: я установил rng-tools и побежал:

rngd -r /dev/random

Но это тоже ничего не дало. Без изменений вообще. Когда я бегу:

cat /proc/sys/kernel/random/entropy_avail

Я никогда не получаю вывод выше 60 или около того.

Таким образом, совершенно независимо от немедленной проблемы - то есть неспособности сгенерировать новый ключ GPG - с какой стати моя машина так быстро проглатывает энтропию? Кажется, что должна быть основная проблема, которую следует решить.

1 ответ

Чтобы получить немного больше энтропии, проверьте мой ответ на Server Fault для Generate entropy for PGP key.

Резюме этого ответа:

  • генерировать сетевые и дисковые операции ввода-вывода;
  • используйте hasged (но будьте осторожны, когда в среде VM, см. ссылку).

Что касается вашего использования rngd, он не будет "работать". Программа rngd является своего рода сборщиком случайных вещей, которые после некоторого смещения и отбеливания будут использоваться для подпитки энтропии, которая будет использоваться для генерации случайного числа с использованием PRNG. Таким образом, rngd - это один сборщик, предоставляющий "входы" для PRNG в Linux. Когда вы используете /dev/random Linux оценивает пул энтропии и, если решит, что он достаточно хорош, он будет использовать его для генерации нового случайного числа для /dev/random, Посмотрите эту техническую статью о случайных числах в LWN, см. Главу "Рекомендации администратора".

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

Примечание: если вы работаете с голым железом (не в гостевой виртуальной машине), вы можете использовать TPM для аппаратного RNG. TPM не рекомендуется, если ваш злейший враг - АНБ;-), читайте онлайн о TPM. Но если вы хотите использовать его, вот способ связать TPM с rngd (отказ от ответственности, я написал эту статью): http://www.berthon.eu/2015/using-tpm-as-a-source-of-randomness-entropy/

И проверьте эту PDF-презентацию для информации, где используется энтропия:-) https://www.blackhat.com/docs/us-15/materials/us-15-Potter-Understanding-And-Managing-Entropy-Usage.pdf

Другие вопросы по тегам