Я удаленно зашел на виртуальную машину и пытаюсь сгенерировать 4096-битный ключ PGP, он просто зависает навсегда, потому что нет энтропии, и, поскольку я работаю через удаленный рабочий стол, он, вероятно, не определяет движение мыши как энтропию.
Как я могу их создать?
Я попытался cat /dev/urandom > /dev/null
но это не помогает.
Получение данных вне из /dev/random
или /dev/urandom
определенно не собирается помочь, все, что он сделает, это истощит ваш пул энтропии, что еще больше усугубит проблему. Основное различие между этими двумя файлами заключается в том, что даже когда у ядра заканчивается энтропия urandom
будет продолжать генерировать случайные данные более низкого качества, в то время как random
будет блокироваться до тех пор, пока не соберет свежие случайные данные высокого качества. PGP требует максимально возможных случайных данных для генерации ключей безопасности, поэтому он всегда будет использовать /dev/random
.
Если у вас есть хорошие случайные данные или экспортируйте их с другого сервера /dev/random
, ты можешь cat
Это в ваш сервер /dev/random
чтобы получить больше энтропии. Вы никогда не должны cat
один и тот же файл дважды в /dev/random
хотя.
Если вы часто обнаруживаете, что у вас заканчивается энтропия, вы также можете подумать об установке чего-то вроде кованый, демон, который повторно генерирует энтропию в фоновом режиме и повторно заполняет /dev/random
по мере необходимости.
Также может возникнуть соблазн создать символическую ссылку /dev/random
к /dev/urandom
, но это следует рассматривать как угрозу безопасности, поскольку любой ключ, созданный с его помощью, может быть менее безопасным, чем следовало бы. Хотя это может помочь для одного менее важного приложения, вы должны рассмотреть все возможные варианты использования /dev/random
, включая других пользователей, генерирующих свои собственные ключи, CSR и т. д.
Ты можешь использовать haveged
.
haveged
это демон, который при необходимости генерирует энтропию.
Я бы рекомендовал сгенерировать ваши ключи gpg на вашем локальном компьютере, который будет иметь гораздо лучшую случайность, чем удаленный. А затем перенесите ключи с помощью SSH на удаленный компьютер.
Генерация локально будет быстрее (больше источника энтропии), безопаснее (никто не сможет шпионить за процессом, если ваша машина не заражена, лучше случайность).
Если вы все еще хотите сгенерировать их удаленно: в Linux вы можете сгенерировать больше энтропии, просто выполнив пинг хоста (например, ping 8.8.8.8
), если у вас есть другой сетевой хост, попробуйте получать эхо-запросы каждые 100 мс (если, конечно, ваш RTT <100 мс). И / или использовать find
для поиска файлов на жестком диске и очистки кеша ОЗУ между каждым поиском файлов.
Вы также можете установить haveged
но прочтите ограничения, если вы используете его в виртуальной среде: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines
В системах на основе Debian вы можете установить rng-tools
пакет с помощью atp-get, а затем запустите демон для генерации энтропии:
echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart
На серверах CentOS-6 rng
daemon устанавливается как один из базовых инструментов (по крайней мере, в большинстве систем, над которыми я работал), и вы можете запустить следующую команду, чтобы запустить его, чтобы генерировать энтропию:
sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart
sudo yum install haveged && sudo systemctl start haveged
определенно работает на виртуальной машине CentOS 7.2. Иногда вам нужно создать ключи GPG на виртуальной машине, если вы создаете группу и хотите, чтобы связка ключей не была повреждена.