Назад | Перейти на главную страницу

GPG не хватает энтропии

У меня есть масса процессов, работающих в фоновом режиме, чтобы попытаться получить достаточно энтропии, но я все еще терплю неудачу.

**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)**

Мне нужен метод для генерации ключа, который работает, потому что то, что я пытаюсь сделать, явно терпит неудачу.

Вы смотрели на ГСЧ?

Типы Fedora / Rh / Centos: sudo yum install rng-tools

По типам deb: sudo apt-get install rng-tools настроить его.

Тогда беги sudo rngd -r /dev/urandom перед генерацией ключей.

Ссылка: http://it.toolbox.com/blogs/lim/how-to-generate-enough-entropy-for-gpg-key-generation-process-on-fedora-linux-38022

Мне удалось сгенерировать ключ

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-tools

В случае, если вы застряли в ситуации, как и я - у вас нет разрешений на установку нового программного обеспечения (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 с более низким приоритетом (мне нужно было хорошо работать на сервере, который используется многими пользователями). Цикл до бесконечности, поэтому не забудьте разорвать его после создания ключа. Все, что он делает, заставляет сетевой трафик увеличивать энтропию. Он также отслеживает счетчик 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 успехов очень часто при использовании зависания.

Я узнал об этом в учебнике здесь:

https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

Теперь у меня есть ключи после бега 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

Я столкнулся с этой проблемой при запуске pacman-key --init в арке. Другие решения здесь не сработали для меня, но я обнаружил, что простой флуд-пинг моего маршрутизатора работает хорошо: ping -f ip.of.my.router

Что ж, это проще, чем я думал, по сравнению с решениями, представленными здесь:

ls -R /

Случайных байтов, предоставленных приведенной выше командой, было достаточно для обеспечения необходимой энтропии для генерации пары ключей RSA / 4096.

Взято из: https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate-entropy-gnupg