Коли я входжу в систему, він зависає, доки не буде зроблено ідентифікатор


22

Коли я входжу через LightDM на своєму ноутбуці під керуванням Debian Unstable, він нещодавно почав зависати близько 2 хвилин, поки не journalctlз’явиться повідомлення kernel: random: crng init done. Коли я натискаю випадкові клавіші на клавіатурі, поки вона зависає, вона реєструється швидше (близько 10 секунд). До того, як у мене не було цієї проблеми, чи є спосіб її усунути?

Редагувати: використовуючи linux-image-4.15.0-3-amd64замість linux-image-4.16.0-1-amd64робіт, але я не хочу використовувати старе ядро.


1
Здається, що щось з'їдає весь басейн ентропії.
Кусалаланда

1
Тема systemd-journaldта її (заявлена) потреба у розмноженні CSPRNG з'явилася на різних форумах обговорень останнім часом. Наприклад, дивіться liste.freedesktop.org/archives/systemd-devel/2018-May/… .
JdeBP

1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Відповіді:


15

Схоже, якийсь компонент вашої системи блокує, намагаючись отримати випадкові дані з ядра (тобто читання /dev/urandomабо виклик getrandom()) через недостатню кількість ентропії (випадковості).

У мене немає готового пояснення того, чому проблема залежить від конкретної версії ядра або того, який компонент у вашій системі насправді блокується, але незалежно від першопричини,

Дійсно, як вказував Бігон у своїй відповіді , виявляється помилка ядра, введена в 4.16:

Ця помилка вводиться зміною "crng_init> 0" на "crng_init> 1" в цьому комітеті: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Ця зміна ненавмисно впливає на urandom_read, внаслідок чого стан crng_init == 1 трактується як неініціалізований і спричиняє блокування urandom, незважаючи на цей стан, який існує спеціально для підтримки некриптографічних потреб під час завантаження: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Повернення 43838a23a05f ("випадковий: виправити crng_ready () тест") виправляє помилку (перевірена з 4.16.5-1), але це може спричинити занепокоєння щодо безпеки (CVE-2018-1108 згадується у 43838a23a05f). Я тестую більш локальне виправлення, яке повинно бути більш привабливим для вище.

( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572#82 )

... Тим не менш, ви можете спробувати скористатися havegedабо rng-toolsзібрати ентропію швидше.


4
Схоже, в Linux 4.16.4 деякі речі, пов’язані з CRNG, змінилися через CVE-2018-1108. rng-toolsне працює на моєму ноутбуці, оскільки Intel Celeron N2840 не підтримує AES-NI і, отже, не має вбудованого TRNG.
wb9688

3
Останнє завантаження rng-toolsв debian з 2011 року. У вас є rng-tools5пакет, який був представлений нещодавно
Bigon

@Bigon TBH Я нічого не знаю про пакети в Debian; Я цим не користуюся. Це загальна порада, а не Debian.
intelfx

1
Підтверджено з Ubuntu 18.04 (біонічний). Виникла ця проблема після встановлення dropbear-initramfsта розблокування диска дистанційно cryptroot-unlock. Просто apt install rng-toolsзмушує речі магічно працювати. Дякую!
платний ботанік

Установка havegedпрацювала для мене. У мене є старий Intel Core 2 Duo, який не має справжнього генератора випадкових чисел.
Балау

7

Це зміна (помилка?) У ядрі, дивіться: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Пом'якшити це, rng-tools5здається, допоможе встановлення. Зауважте, що я не знаю, чи впливає встановлення цього пакету на потужне генерування ключів криптографії

Редагувати: Мабуть, оновлення util-linux 2.32 повинно вирішити проблему


Ні, util-linux 2.32 не вирішує проблему для мене.
vinc17

5

Це помилка ядра, яка може статися з різними ядрами.

Працює, apt-get install rng-toolsяк suу терміналі, має працювати.


Запуск apt-get install rng-tools як su в терміналі виправив проблему з моїм linux box.
Джованні Канніццаро

2

rng-toolsдопомагає лише у тому випадку, якщо у вашій системі є апаратна підтримка випадкових чисел, як-от Intel із захищеним ключем . Цей спосіб винайшли разом з Ivy Bridge . Мої системи з 1037u процесорів ( на базі в Ivy Bridge) нічого НЕ мають цієї апаратної підтримки. Тому rng-toolsне допомагайте.

У іншій системі з піщаним мостом i3 процесор rng-toolsдопомагає. rngdСлужба повинна бути запущена в самому початку процесу завантаження, для того , щоб заповнити ентропію черзі. Це так у послідовності завантаження з Ubuntu, я не знаю, чи це справедливо для інших дистрибутивів, але ви можете дізнатися, як початок rngdвходить у систему.


1
Це не зовсім так. Ви могли б працювати , rngd -f -r /dev/urandomщоб накачати /dev/urandomв /dev/random, хоча це не рекомендується запускати його таким чином, це варіант ..
ОДС

2

Це також може відбутися після видалення розділу swap

Висить раніше kernel: random: crng init done може також статися після видалення розділу swap.

Якщо розділ підкачки видалено, файл конфігурації /etc/initramfs-tools/conf.d/resume повинен бути або повністю порожнім, або прочитаним RESUME=. Видаліть будь-який номер UUID. RESUME=NONEне вірно.

$ sudo vim /etc/initramfs-tools/conf.d/resume

Початкова файлова система ОЗУ потребує оновлення, щоб ці зміни вступили в силу:

$ sudo update-initramfs -u

1

У моєму випадку я запускав Debian Buster (ядро 4.19.0-4-amd64 запускав VM ) на Proxmox VE.

Рішення полягало в тому, щоб додати в VM пристрій VirtIO RNG . У Proxmox це робиться шляхом редагування файлу конфігурації VM .

У моєму випадку я відредагував /etc/pve/qemu-server/110.confта додав такий рядок:

args: -device virtio-rng-pci

Інструменти простору користувачів (наприклад, rng-toolsабо haveged) не потрібні.

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