Почему у меня постоянно заканчивается энтропия?
Итак, я пытался создать новый ключ 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