gpg --gen-key зависает при наборе достаточного количества энтропии на сентосах 6

49

Попытка сгенерировать ключ для сервера.

gpg --gen-key

Нам нужно сгенерировать много случайных байтов. Это хорошая идея, чтобы выполнить какое-то другое действие (набрать на клавиатуре, переместить мышь, использовать диски) во время основного поколения; это дает генератору случайных чисел больше шансов получить достаточную энтропию.

и это просто висит там.

Есть еще одна ошибка:

невозможно подключиться к `/root/.gnupg/S.gpg-agent ': такого файла или каталога нет

который, кажется, уходит после:

gpg-agent --daemon
GPG_AGENT_INFO = / tmp / gpg-4c5hyT / S.gpg-agent: 1397: 1; экспортировать GPG_AGENT_INFO;

#GPG_AGENT_INFO=/tmp/gpg-4c5hyT/S.gpg-agent:1397:1; export GPG_AGENT_INFO;
gpg --gen-key
...

но опять же, он висит на "... получить достаточно энтропии".

Нет "++++++++++++++++++++++++++++++++++++++++++", которые Из сообщений на форуме выглядит как следует ожидать, как ключ генерируется.

Я попытался переустановить пакет, но, похоже, все зависит от gpg.

Я читал других людей, имеющих проблемы с этим на Centos 6 тоже (тогда как Centos 5 работает нормально).

В этом нет ничего примечательного /var/log/*.

Любые идеи о том, куда идти отсюда?

Благодарю.

stormdrain
источник
rng-tools - это только решение, если у вас есть HSM, ответы на которые рекомендуют, чтобы это не сработало в системах без этого. Появится сообщение: «Запуск демона энтропийного сборщика аппаратного обеспечения ГСЧ: (не найден
индекс

Ответы:

49

Когда gpg --gen-keyкоманда зависает, как это, войдите в другую оболочку и выполните следующую команду:

dd if=/dev/sda of=/dev/zero

(Эта команда в основном читает с вашего жесткого диска и отбрасывает вывод, потому что запись в /dev/zeroничего не даст.)

Через несколько секунд / минут команда генерации ключа должна завершиться.

Джон
источник
2
Потрясающие. Спасибо. Я не могу поверить, что пропустил эту часть руководства: /
stormdrain
2
Было бы гораздо лучше, если бы каждый раз получала другую энтропию. Если ваша система постоянно исчерпывает энтропию, значит, что-то не так с вашей конфигурацией, или вы очень быстро израсходуете энтропию (до такой степени, что у вас должен быть аппаратный RNG). Если вам нужно больше энтропии на регулярной основе, есть действительные места, где можно просто загрузить больше, например Quantum RNG Гумбольдта-Университета .
Крис С
19
Я действительно попробовал это, но так как у меня не было root, я не мог получить доступ к / dev / sda напрямую. Вместо этого у меня получилосьfind / | xargs file
carl.anderson
2
Я была более удобной работы find / | xargs fileвместо dd if=/dev/sda of=/dev/zeroи через минуту это было сделано. Спасибо!
Леа
1
Вы имеете в виду of=/dev/null?
maxschlepzig
22

Для более надежного решения вы можете установить утилиты, связанные с генератором случайных чисел, которые будут гарантировать, что у вас всегда будет достаточно случайных байтов.

yum install rng-tools

а затем отредактируйте /etc/sysconfig/rngdи добавьтеEXTRAOPTIONS="-r /dev/random"

Запустить сервис

 service rngd start

Вуаля, и вы живете долго и счастливо :)

golja
источник
5
Если вы не хотите запускать службу, вы можете просто запустить ее rngd -r /dev/randomс правами root rng-tools. Генерация вашего ключа будет запущена немедленно.
Давиджб
2
Но это само по себе не порождает энтропию.
Отей
7

Оба комментария, приведенные ранее, в порядке. Но вот только мои 2 цента.

Проблема с RHEL / centos 6 и энтропией заключается в том, что они представляют собой ядра без клещей. Таким образом, сами по себе эти ядра не генерируют достаточно энтропии. Вы должны подключить клавиатуру или даже какое-нибудь движение мыши или использовать dd, как уже упоминалось.

rngd daemon потрясающий и его используют большинство коммерческих организаций.

Однако лучший подход, который я видел, это использование выделенного устройства TPM. Это небольшие аппаратные средства, которые довольно дороги. Вы кладете их, а rngd использует случайную истинную энтропию из аппаратного источника. Насколько я знаю, у Fujitsu есть хорошее TPM-устройство.

Да, эти три метода в значительной степени охватывают энтропийную часть.

Сохам Чакраборти
источник
Очень интересно. Спасибо. Как я уже говорил Крису, у меня скоро будет доступ к HSM, который поставляется с ГСЧ.
штормовой дождь
4

Покрути на другие ответы но хоть один лайнер а не рут.

((find / | xargs file) &> /dev/null &); gpg2 --gen-key --batch --passphrase-file output-key.txt key-gen-options.txt

Key-gen-options содержит

Key-Type: 1
Key-Length: 2048
Subkey-Type: 1
Subkey-Length: 2048
Name-Real: myuser
Name-Email: myuser@email.com
Expire-Date: 0

Выход-key.txt содержит мой супер секретный ключ.

Дейв Брунков
источник
4

https://gist.github.com/franciscocpg/1575d286548034113884c3185ca88681

Откройте сеанс ssh. sudo apt-get install rng-tools В другом окне SSH откройте. gpg --gen--key Вернитесь к своему первому сеансу SSH и запустите. sudo rngd -r /dev/urandom Дайте ему поработать, пока gpg не сгенерирует ваши ключи!

Тогда вы можете убить Rngd sudo kill -9 $(pidof rngd)

rhinoceros.xn
источник
3

EXTRAOPTIONS = "- r / dev / urandom" работал для меня вместо EXTRAOPTIONS = "- r / dev / random"

Марджо Меркадо
источник
1

Как я это сделал:

  1. pacman -S community/rng-tools
  2. vim /etc/conf.d/rngd добавить RNGD_OPTS="-r /dev/urandom"
  3. systemctl enable --now rngd
  4. gpg-agent --daemon
  5. gpg --full-gen-key

Работает, даже когда $GNUPGHOMEнастроено указывать на пользовательский каталог.


источник
1

Я перепробовал все решения и обнаружил, что это havegedработает лучше всего, даже когда другие не работают (особенно на сервере без головы, который не имеет большого количества пользовательского ввода или активности).

yum install haveged

apt install haveged

Он запускает havegedслужбу демона, которая будет /dev/randomполна энтропии. --key-genдолжно завершиться менее чем за минуту.

Вы можете проверить, запустив cat /dev/random. Обычно это быстро заканчивается энтропия и пауза. Вот почему --key-genзависает. Но после того, как установка haveged, cat /dev/randomдолжна обеспечивать вывод непрерывно.

wisbucky
источник