Створити ентропію для PGP-ключа


12

Я дистанційно ввійшов у VM і намагаюся генерувати 4096-бітний PGP-ключ, він просто зависає назавжди, тому що немає ентропії, і оскільки я працюю через віддалений робочий стіл, він, ймовірно, не визначає рух миші як ентропію.

Як я можу генерувати деякі?

Я спробував, cat /dev/urandom > /dev/nullале це не допомагає.

Відповіді:


13

Отримання даних з з /dev/randomабо /dev/urandom, безумовно , НЕ буде допомога, все це буде зробити , це виснажує ваш пул ентропії, що робить це питання ще гірше. Основна відмінність цих двох файлів полягає в тому, що навіть коли у ядра закінчиться ентропія, він urandomбуде генерувати випадкові дані меншої якості, при randomцьому блокуватиметься, поки не зможе зібрати свіжі високоякісні випадкові дані. PGP вимагає максимально можливих випадкових даних для генерації захищених ключів, тому він завжди буде використовуватись /dev/random.

Якщо у вас є хороші випадкові дані навколо, або експортуйте деякі з іншого сервера /dev/random, ви можете передати catїх на свій сервер, /dev/randomщоб отримати більше ентропії. Ніколи не слід catдвічі надсилати один і той самий файл /dev/random.

Якщо вам часто не вистачає ентропії, ви також можете встановити щось на зразок hasged , демон, який заново генерує ентропію у фоновому режимі та заново заповнює /dev/randomза потребою.

Крім того, він може бути привабливий симлінк /dev/randomдо /dev/urandom, але це слід розглядати як загрозу безпеці як будь-який ключ генерується з допомогою його може бути менш безпечним , ніж вони повинні. Хоча це може допомогти для одного менш важливого додатка, ви повинні врахувати всі інші можливі можливості використання /dev/random, включаючи інших користувачів, які генерують власні ключі, CSR тощо.


Зауважте, що FreeBSD /dev/random- це високоякісний PRNG , і він не повинен нормально блокуватись.
Кевін

@Kevin - /dev/randomце високоякісний PRNG на сучасних BSD та Linux. Але він заблокується, якщо недостатньо ентропії. З іншого боку, /dev/urandomвін не блокується, якщо недостатньо доступних, але якість випадковості в цьому випадку може постраждати. У деталях є багато тонкощів між випадковими та урадонними реалізаціями між Linux та різними BSD, але вищезазначене має бути правдивим для всіх AFAIK.
Гюйгенс

В Linux ви можете генерувати більше ентропії, просто пінг-хост (наприклад ping 8.8.8.8), якщо ви володієте іншим мережевим хостом, намагайтеся мати пінг-коги кожні 100 мс (якщо ваш RTT становить <100 мс, звичайно). І / або використовуйте findдля пошуку файлів на жорсткому диску і промивайте кеш оперативної пам’яті між кожним пошуком файлів.
Гюйгенс

@Huygens: відкрийте сторінку man, яку я пов’язав, і Ctrl + F "kern.random.sys.seeded"; за замовчуванням /dev/randomне блокується на FreeBSD.
Кевін

1
@Kevin так, ти маєш рацію, збирання ентропії чи збирання врожаю - це, мабуть, два різних способи "висіву" PRNG. І після декількох тестувань на моєму полі BSD я виявив, що випадкові та урадомські поводяться однаково, вони блокуються, коли не можуть генерувати достатньо хороший PRNG. Спробуйте запустити dd if=/dev/random of=/tmp/rndtest bs=64M count=1після нового завантаження, щоб провести час для збільшення файлу на 64 МБ, знадобилось 2 послідовних запуски. Я думав, що не побачу цього ефекту з urandom як вхідним, але, схоже, FreeBSD блокує його, на відміну від Linux.
Гюйгенс

9

Можна використовувати haveged.

haveged це демон, який при необхідності генерує ентропію.


Так, вдало, встановіть приставку
Uwe Burger

2
Будьте обережні з Haveged у віртуальному середовищі. Це може бути неоптимальним в залежності від конфігурації гіпервізора. Перевірте цю сторінку: wiki.archlinux.org/index.php/Haveged#Virtual_machines
Huygens

4

Я рекомендую генерувати ваші gpg-ключі на локальній машині, які матимуть набагато кращу випадковість, ніж віддалений. А потім перемістіть ключі за допомогою SSH на віддалену машину.

Генерування локально буде швидшим (більше джерела для ентропії), більш безпечним (ніхто не може шпигувати за процесом, якщо ваша машина не заражена, краща випадковість).

Якщо ви все ще хочете генерувати такі дистанційно: У Linux ви можете генерувати більше ентропії, просто пінгнувши хост (наприклад ping 8.8.8.8), якщо у вас є інший мережевий хост, спробуйте мати пінг-файли кожні 100 мс (якщо ваш RTT становить <100 мс звичайно). І / або використовуйте findдля пошуку файлів на жорсткому диску і промивайте кеш оперативної пам’яті між кожним пошуком файлів.

Ви також можете встановити, havegedале прочитати обмеження, якщо ви запускаєте їх у віртуальному середовищі: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines


На мій погляд, це правильне рішення - +1 від мене.
MadHatter

3

У системах на базі Debian ви можете встановити rng-toolsпакет за допомогою atp-get, а потім запустити демон для створення ентропії:

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

На серверах CentOS-6 rngдемон демондується як один із базових інструментів (принаймні, в більшості систем, над якими я працював), і ви можете запустити наступну команду для його запуску, щоб створити ентропію:

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

Я не думаю, що використовувати urandom в якості джерела для rngd є розумним. Це допоможе швидше вичерпати доступну ентропію, і коли вичерпається, це буде упередженим джерелом ентропії. Тому я б уникнув цього рішення.
Гюйгенс

1
sudo yum install haveged && sudo systemctl start haveged

Однозначно працює на CentOS 7.2 VM. Іноді ви хочете створити ключі GPG на vm, якщо ви створюєте зв'язок і хочете, щоб ваш брелок був недоторканим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.