Quando eseguo l'accesso, si blocca fino a quando non viene eseguito crng init


22

Quando eseguo l'accesso con LightDM sul mio laptop con Debian Unstable, di recente ha iniziato a bloccarsi per circa 2 minuti fino a quando non viene journalctlvisualizzato il messaggio kernel: random: crng init done. Quando premo i tasti casuali sulla tastiera mentre si blocca, accede più velocemente (circa 10 secondi). Prima di non avere questo problema, c'è un modo per risolverlo?

Modifica: usando al linux-image-4.15.0-3-amd64posto di linux-image-4.16.0-1-amd64funziona, ma non voglio usare un kernel più vecchio.


1
Sembra che qualcosa stia divorando tutta la piscina dell'entropia.
Kusalananda

1
L'argomento systemd-journalde la sua (dichiarata) necessità di seminare il CSPRNG sono emersi recentemente in vari forum di discussione. Vedi lists.freedesktop.org/archives/systemd-devel/2018-May/… per esempio.
JdeBP,

1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Risposte:


15

Sembra che alcuni componenti dei blocchi di sistema durante il tentativo di ottenere dati casuali dal kernel (ovvero lettura /dev/urandomo chiamata getrandom()) a causa dell'entropia (casualità) insufficiente disponibile.

Non ho una spiegazione pronta del perché il problema dipende da una particolare versione del kernel o da quale componente del tuo sistema si blocca, ma indipendentemente dalla causa principale,

Infatti, come sottolineato da Bigon nella sua risposta , sembra essere un bug del kernel introdotto in 4.16:

Questo errore viene introdotto dalla modifica "crng_init> 0" a "crng_init> 1" in questo commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Questa modifica impatta inavvertitamente su urandom_read, facendo sì che lo stato crng_init == 1 sia trattato come non inizializzato e causando il blocco di urandom, nonostante questo stato sia esistente specificamente per supportare esigenze non crittografiche al momento dell'avvio: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Il ripristino di 43838a23a05f ("random: fix crng_ready () test") corregge il bug (testato con 4.16.5-1), ma ciò può causare problemi di sicurezza (CVE-2018-1108 è menzionato in 43838a23a05f). Sto testando una correzione più localizzata che dovrebbe essere più appetibile a monte.

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

... Tuttavia, potresti provare a usare havegedo rng-toolsa raccogliere l'entropia più velocemente.


4
Sembra che in Linux 4.16.4 alcune cose relative al CRNG siano cambiate a causa di CVE-2018-1108. rng-toolsnon funziona sul mio laptop, perché Intel Celeron N2840 non supporta AES-NI e quindi non ha un TRNG integrato.
wb9688

3
Ultimo caricamento di rng-toolsin debian dal 2011. Hai un rng-tools5pacchetto che è stato introdotto di recente
Bigon,

@Bigon TBH Non so nulla dei pacchetti in Debian; Io non lo uso. Questo è un consiglio generale, non specifico di Debian.
intelfx,

1
Confermato con Ubuntu 18.04 (bionico). Ho riscontrato questo problema dopo aver installato dropbear-initramfse sbloccato il mio disco in remoto con cryptroot-unlock. apt install rng-toolsFa semplicemente funzionare magicamente le cose. Grazie!
un secchione pagato

L'installazione ha havegedfunzionato per me. Ho un vecchio Intel Core 2 Duo che non ha un vero generatore di numeri casuali.
Balau,

7

È un cambiamento (bug?) Nel kernel, vedi: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Mitigare quell'installazione rng-tools5sembra aiutare. Si noti che non so se l'installazione di questo pacchetto ha un impatto o meno sulla forte generazione di chiavi di crittografia

Modifica: Apparentemente l'aggiornamento di util-linux 2.32 dovrebbe risolvere il problema


No, util-linux 2.32 non risolve il problema per me.
vinc17,

5

È un bug del kernel che può accadere con kernel diversi.

In esecuzione apt-get install rng-tools come sunel terminale dovrebbe funzionare.


L'esecuzione di apt-get install rng-tools come su nel terminale ha risolto il problema con la mia scatola di Linux.
Giovanni Cannizzaro,

2

rng-toolsaiuta solo se il tuo sistema ha il supporto hardware per numeri casuali, come " Secure Key " di Intel . In questo modo inventato con Ivy Bridge . I miei sistemi con processori 1037u (basati su Ivy Bridge) non dispongono di questo supporto hardware. Pertanto rng-toolsnon aiutare.

Su un altro sistema qui con un processore Sandy Bridge i3 rng-toolsaiuta. Il rngdservizio deve essere avviato molto presto nel processo di avvio, al fine di riempire la coda di entropia. Questo è il caso nella sequenza di avvio con Ubuntu, non so se questo sia vero per altre distribuzioni, ma puoi scoprirlo, poiché l'inizio di rngdè registrato in syslog.


1
Questo non è del tutto vero. Si potrebbe correre rngd -f -r /dev/urandomper pompare /dev/urandomin /dev/random, anche se è consigliabile non farlo funzionare in questo modo, si tratta di un'opzione ..
SLM

2

Può accadere anche dopo aver eliminato la partizione di swap

Anche il blocco prima kernel: random: crng init donepuò accadere dopo aver eliminato una partizione di swap.

Se una partizione di swap viene eliminata, il file di configurazione /etc/initramfs-tools/conf.d/resume deve essere completamente vuoto o letto RESUME=. Elimina qualsiasi numero UUID. RESUME=NONEnon è valido.

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

Il filesystem RAM iniziale richiede l'aggiornamento per rendere effettive queste modifiche:

$ sudo update-initramfs -u

1

Nel mio caso, stavo eseguendo una 4.19.0-4-amd64VM Debian Buster (kernel ) su Proxmox VE.

La soluzione era aggiungere un dispositivo VirtIO RNG alla VM. Su Proxmox, questo viene fatto modificando il file di configurazione della VM .

Nel mio caso, ho modificato /etc/pve/qemu-server/110.confe aggiunto la seguente riga:

args: -device virtio-rng-pci

Non sono stati necessari strumenti per lo spazio utente (ad es. rng-toolsO haveged).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.