ГПГ не хватает энтропии
У меня есть тонна процессов, работающих в фоновом режиме, чтобы попытаться получить достаточно энтропии, но я все еще терплю неудачу.
**We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 210 more bytes)**
Мне нужен метод, чтобы сгенерировать ключ, который работает, потому что то, что я пытаюсь сделать, очевидно, терпит неудачу.
9 ответов
Вы смотрели на ГСЧ?
Типы Fedora/Rh/Centos: sudo yum install rng-tools
По типам дебетов: sudo apt-get install rng-tools
установить это.
Тогда беги sudo rngd -r /dev/urandom
до генерации ключей.
Я смог сгенерировать ключ
apt-get install rng-tools
В другом окне SSH открыть
gpg --gen-key
Вернитесь к своей первой сессии SSH и запустите
sudo rngd -r /dev/urandom
Пусть это работает, пока gpg не сгенерирует ваши ключи!
Чтобы проверить количество байтов энтропии, доступных в настоящее время, используйте
cat /proc/sys/kernel/random/entropy_avail
Емкость энтропии имеет размер 4096 байт, который может быть очень быстро исчерпан.
Используя этот небольшой инструмент "readspeed" ( http://1wt.eu/tools/readspeed/), вы можете измерить, насколько быстро ковш энтропии заполняется различными методами.
Например, запустите:
$ ./readspeed < /dev/random
и наведите курсор мыши. Вы увидите, что "readspeed" очищает контейнер энтропии, как только он заполнен, и когда вы перемещаете мышь, он немного заполняется.
При использовании различных методов кажется, что ввод с клавиатуры и движения мыши являются наиболее эффективными для пополнения этого сегмента. Сетевые передачи и копии жесткого диска не имеют большого влияния.
Наконец, доступны устройства генерации энтропии, такие как этот: http://www.entropykey.co.uk/.
+1 для rng-инструментов
В случае, если вы застряли в такой ситуации, как я - у вас нет прав на установку нового программного обеспечения (rng-tools) на сервер без монитора, практически без подключенного оборудования ввода (звуковая карта, клавиатура, мышь). Вы можете запустить этот простой код из другого терминала, подключенного к тому же серверу, чтобы добавить энтропию. Не имеет значения, начнете ли вы запускать это до или после запуска gpg --gen-key
$ nice -n 19 bash
$ until [ $COUNT -lt 1 ]; do
let COUNT=`cat /proc/sys/kernel/random/entropy_avail`
echo "`date` COUNTER $COUNT"
done
Первая строка - запустить новую оболочку bash с более низким приоритетом (мне нужно было хорошо работать на сервере, которым пользуются многие пользователи). Цикл till бесконечен, поэтому не забывайте прерывать его после генерации ключа. Все, что он делает, заставляет сетевой трафик увеличивать энтропию. Он также отслеживает счетчик entropy_avail, чтобы показать, как он заполняется и опорожняется с другой стороны gpg. В моем случае счетчик быстро заполнился до 64 и опустошился до 0 (думаю, gpg набирает частоту 64). Я ожидал генерации 4096-битного ключа более 3 часов на сервере. После запуска этого скрипта он завершился менее чем за 5 минут.
Я был привязан и полон решимости генерировать энтропию на моем безголовом сервере Ubuntu 14.04 для генерации ключа 4096 с gpg --gen-key
Существует пакет для генерации энтропии, называемый hasged. Пример установки:
sudo apt-get install haveged
Мне пришлось sudo apt-get install rng-tools
так как это зависимость в следующем тесте.
Пример теста, чтобы увидеть, генерируется ли энтропия hasged:
cat /dev/random | rngtest -c 1000
В любом генераторе случайных чисел допустимо очень небольшое количество сбоев, но вы можете ожидать 998-1000 успехов очень часто при использовании зависания.
Я узнал об этом в уроке здесь:
Теперь у меня есть ключи после запуска gpg --gen-key
haveged
это лучший способ, но если вы не можете ничего установить, то вы можете вручную генерировать энтропию. Этот метод позволил gpg --gen-ken
завершить в течение 1-2 минут на моей машине (по сравнению с 10 с haveged
). Так что примерно в 10 раз медленнее.
Запустите это в другом терминале, пока gpg --gen-key
это работает:
while true; do
# print entropy available
cat /proc/sys/kernel/random/entropy_avail
# write a 1 MB stream of zeros to /tmp/foo
# "conv=fdatasync" flushes the disk cache
dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done
Один лайнер:
while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
Ну, это проще, чем я думал, по сравнению с решениями, представленными здесь:
ls -R /
Случайных байтов, предоставленных вышеприведенной командой, было достаточно для обеспечения необходимой энтропии для генерации пары ключей RSA/4096.
Взято из: https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate-entropy-gnupg
(Пожалуйста, сначала рассмотрите другие ответы.)
Настоящая причина может быть скрытой: всплывающее окно графического интерфейса с запросом парольной фразы, которое невозможно увидеть через SSH. Вы не реагируете, и время истекло.
Деталь: яgpg --full-generate-key
в ОС Raspberry Pi (Linux на базе Debian) через SSH, но застрял на тайм-ауте генерации ключей. Наконец, я подключаюсь к нему по VNC (виртуальные сетевые вычисления), и все становится ясно.
Чтобы установить VNC, вы можете следовать документации Raspberry Pi :
$ sudo apt update
$ sudo apt install realvnc-vnc-server realvnc-vnc-viewer
$ sudo raspi-config # And navigate to Interfacing Options → VNC → Yes.
Я столкнулся с этой проблемой при запуске pacman-key --init
в арке Другие решения здесь не работали хорошо для меня, но я обнаружил, что просто закачка моего маршрутизатора работает хорошо: ping -f ip.of.my.router