Выпуски gnupg из 2.1.16 (в настоящее время 2.1.17) блокируют ожидание энтропии только при первом вызове .
Примечание: это не попытка сгенерировать ключ, а просто расшифровать файл и запустить агент.
При первом запуске gpg-agent, либо непосредственно, либо с gpg2 file.gpg
помощью приложения, например pass
, появляется pinentry, и как только я ввожу свою фразу-пароль и нажимаю на Enterнее, она зависает в течение 15 секунд.
Все последующие вызовы в окне default-cache-ttl выполняются немедленно.
Работая в --debug-all
режиме, период, когда происходит зависание, печатает 1 :
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 120 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 120 120
gpg: DBG: chan_6 <- S PROGRESS need_entropy X 30 120
...
Я добавил rng-tools для дополнения энтропийного пула:
cat /proc/sys/kernel/random/entropy_avail
4094
и сравнивается с машиной с той же версией gnupg, на которой не было установлено rng-tools или hasged , которая не показывает задержки:
cat /proc/sys/kernel/random/entropy_avail
3783
Таким образом, в бассейне, похоже, достаточно энтропии. Это было проверено на ядрах 4.8.13 и 4.9.
Использует ли gpg другой пул? Как я могу обеспечить достаточную энтропию или иным образом устранить 15-секундную задержку при запуске агента?
1. Полный журнал отладки .
rng-tools
как объяснить здесь? serverfault.com/questions/214605/gpg-not-enough-entropy