Kiedy się loguję, zawiesza się aż do zakończenia crng init


22

Kiedy loguję się za pomocą LightDM na moim laptopie z systemem Debian Unstable, ostatnio zaczął się on zawieszać przez około 2 minuty, aż journalctlwyświetli się komunikat kernel: random: crng init done. Kiedy naciskam losowe klawisze na klawiaturze, gdy się zawiesza, loguje się szybciej (około 10 sekund). Czy zanim nie miałem tego problemu, mogę go naprawić?

Edycja: używanie linux-image-4.15.0-3-amd64zamiast linux-image-4.16.0-1-amd64działa, ale nie chcę używać starszego jądra.


1
Wygląda na to, że coś pochłania całą pulę entropii.
Kusalananda

1
Temat systemd-journaldi (jak twierdzono) potrzeba zaszczepienia CSPRNG pojawił się ostatnio na różnych forach dyskusyjnych. Zobacz na przykład lists.freedesktop.org/archives/systemd-devel/2018-May/ ...
JdeBP,

1
sudo apt install haveged sudo systemctl enable haveged
virusmxa,

Odpowiedzi:


15

Wygląda jak jakiś element bloków systemowych podczas próby uzyskania losowych danych z jądra (tj. Odczytu /dev/urandomlub wywołania getrandom()) z powodu niewystarczającej dostępnej entropii (losowości).

Nie mam gotowego wyjaśnienia, dlaczego problem zależy od konkretnej wersji jądra lub który składnik w twoim systemie faktycznie blokuje, ale niezależnie od głównej przyczyny,

Rzeczywiście, jak zauważył Bigon w swojej odpowiedzi , wydaje się, że jest to błąd jądra wprowadzony w 4.16:

Ten błąd jest wprowadzany przez zmianę „crng_init> 0” na „crng_init> 1” w tym zatwierdzeniu: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Ta zmiana nieumyślnie wpływa na urandom_read, powodując, że stan crng_init == 1 jest traktowany jako niezainicjowany i powoduje, że urandom jest blokowany, pomimo tego stanu istniejącego specjalnie w celu obsługi potrzeb niekryptograficznych w czasie uruchamiania: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Cofnięcie 43838a23a05f („random: fix crng_ready () test”) naprawia błąd (testowany w 4.16.5-1), ale może to powodować problemy z bezpieczeństwem (CVE-2018-1108 jest wspomniany w 43838a23a05f). Testuję bardziej zlokalizowaną poprawkę, która powinna być łatwiejsza do pobrania.

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

... Mimo to możesz spróbować użyć havegedlub rng-toolsszybciej zebrać entropię.


4
Wygląda na to, że w Linuksie 4.16.4 niektóre rzeczy związane z CRNG uległy zmianie z powodu CVE-2018-1108. rng-toolsnie działa na moim laptopie, ponieważ Intel Celeron N2840 nie obsługuje AES-NI, a zatem nie ma wbudowanego TRNG.
wb9688

3
Ostatnie przesyłanie rng-toolsw debianie z 2011 roku. Masz rng-tools5pakiet, który został niedawno wprowadzony
Bigon

@Bigon TBH Nie wiem nic o pakietach w Debianie; Nie używam tego. To jest ogólna rada, a nie specyficzna dla Debiana.
intelfx

1
Potwierdzono z Ubuntu 18.04 (bionic). Miałem ten problem po dropbear-initramfszdalnej instalacji i odblokowaniu mojego dysku cryptroot-unlock. Po prostu apt install rng-toolssprawia, że ​​wszystko działa magicznie. Dziękuję Ci!
opłacony frajer

Instalacja havegeddziałała dla mnie. Mam stary Intel Core 2 Duo, który nie ma generatora liczb losowych.
Balau,

7

To zmiana (błąd?) W jądrze, patrz: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

rng-tools5Wydaje się, że złagodzenie tej instalacji pomaga. Zauważ, że nie wiem, czy instalacja tego pakietu ma wpływ na generowanie silnego klucza kryptograficznego

Edycja: Najwyraźniej aktualizacja util-linux 2.32 powinna rozwiązać problem


Nie, util-linux 2.32 nie rozwiązuje dla mnie problemu.
vinc17

5

Jest to błąd jądra, który może się zdarzyć przy różnych jądrach.

Uruchomienie apt-get install rng-toolsjak suw terminalu powinno działać.


Uruchomienie apt-get install rng-tools jako su w terminalu naprawiło problem z moim linuksem.
Giovanni Cannizzaro,

2

rng-toolspomaga tylko, jeśli Twój system obsługuje sprzętowe liczby losowe, takie jak „ Bezpieczny klucz ” firmy Intel . W ten sposób wymyślono Ivy Bridge . Moje systemy z procesorami 1037u (oparte na bluszczu) nie obsługują tego sprzętu. Dlatego rng-toolsnie pomagaj.

W innym systemie tutaj z piaskowym mostkiem procesor i3 rng-toolspomaga. rngdUsługa musi być uruchomiona na bardzo wczesnym etapie procesu uruchamiania, w celu wypełnienia kolejkę entropii w górę. Tak jest w przypadku sekwencji rozruchowej systemu Ubuntu, nie wiem, czy jest to prawdą w przypadku innych dystrybucji, ale możesz się dowiedzieć, ponieważ początek rngdjest zalogowany w syslog.


1
To nie do końca prawda. Możesz uruchomić, rngd -f -r /dev/urandomaby wpompować /dev/urandomsię /dev/random, ale wskazane jest, aby nie uruchamiać go w ten sposób, jest to opcja ..
slm

2

Może się również zdarzyć po usunięciu partycji wymiany

Wieszanie wcześniej kernel: random: crng init donemoże również nastąpić po usunięciu partycji wymiany.

Jeśli partycja wymiany zostanie usunięta, plik konfiguracyjny /etc/initramfs-tools/conf.d/resume powinien być całkowicie pusty lub odczytany RESUME=. Usuń dowolny numer UUID. RESUME=NONEnie jest poprawny.

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

Początkowy system plików RAM wymaga aktualizacji, aby zmiany zostały wprowadzone:

$ sudo update-initramfs -u

1

W moim przypadku uruchomiłem 4.19.0-4-amd64maszynę wirtualną Debian Buster (jądro ) na Proxmox VE.

Rozwiązaniem było dodanie urządzenia VirtIO RNG do maszyny wirtualnej. W Proxmox odbywa się to poprzez edycję pliku konfiguracyjnego maszyny wirtualnej .

W moim przypadku dokonałem edycji /etc/pve/qemu-server/110.confi dodałem następujący wiersz:

args: -device virtio-rng-pci

Żadne narzędzia przestrzeni użytkownika (np. rng-toolsLub haveged) nie były potrzebne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.