Lorsque je me connecte, il se bloque jusqu'à ce que crng init soit terminé

22

Lorsque je me connecte avec LightDM sur mon ordinateur portable exécutant Debian Unstable, il a récemment commencé à se bloquer pendant environ 2 minutes jusqu'à ce journalctlque le message s'affiche kernel: random: crng init done. Lorsque j'appuie sur des touches aléatoires de mon clavier pendant qu'il se bloque, il se connecte plus rapidement (environ 10 secondes). Avant de ne pas avoir ce problème, est-il possible de le résoudre?

Edit: utiliser linux-image-4.15.0-3-amd64au lieu de linux-image-4.16.0-1-amd64travaux, mais je ne veux pas utiliser un noyau plus ancien.

wb9688
la source
1
On dirait que quelque chose dévore toute la piscine d'entropie.
Kusalananda
1
Le sujet systemd-journaldet son besoin (prétendu) de semer le CSPRNG a été soulevé récemment dans divers forums de discussion. Voir lists.freedesktop.org/archives/systemd-devel/2018-May/… par exemple.
JdeBP
1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Réponses:

15

Ressemble à certains composants de vos blocs système tout en essayant d'obtenir des données aléatoires du noyau (c'est-à-dire en lisant /dev/urandomou en appelant getrandom()) en raison d'une entropie insuffisante (caractère aléatoire) disponible.

Je n'ai pas d'explication prête pour expliquer pourquoi le problème dépend d'une version particulière du noyau ou du composant de votre système qui bloque réellement, mais quelle que soit la cause racine,

En effet, comme l'a souligné Bigon dans sa réponse , il semble s'agir d'un bug du noyau introduit en 4.16:

Ce bogue est introduit par le changement de "crng_init> 0" à "crng_init> 1" dans ce commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ? id = 43838a23a05fbd13e47d750d3dfd77001536dd33

Ce changement affecte par inadvertance urandom_read, entraînant le traitement de l'état crng_init == 1 comme non initialisé et le blocage d'urandom, malgré le fait que cet état existe spécifiquement pour prendre en charge les besoins non cryptographiques au démarrage: https://git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

Le rétablissement de 43838a23a05f ("random: fix crng_ready () test") corrige le bogue (testé avec 4.16.5-1), mais cela peut entraîner des problèmes de sécurité (CVE-2018-1108 est mentionné dans 43838a23a05f). Je teste un correctif plus localisé qui devrait être plus acceptable en amont.

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

... Pourtant, vous pouvez essayer d'utiliser havegedou rng-toolsde récupérer l'entropie plus rapidement.

intelfx
la source
4
Il semble que dans Linux 4.16.4, certaines choses liées au CRNG ont changé à cause de CVE-2018-1108. rng-toolsne fonctionne pas sur mon ordinateur portable, car l'Intel Celeron N2840 ne prend pas en charge AES-NI et n'a donc pas de TRNG intégré.
wb9688
3
Dernier téléchargement de rng-toolsdans debian depuis 2011. Vous avez un rng-tools5paquet qui a été introduit récemment
Bigon
@Bigon TBH Je ne sais rien des paquets dans Debian; Je ne l'utilise pas. Il s'agit d'un conseil général, non spécifique à Debian.
intelfx
1
Confirmé avec Ubuntu 18.04 (bionique). J'ai eu ce problème après avoir installé dropbear-initramfset déverrouillé mon disque à distance avec cryptroot-unlock. Fait simplement fonctionner les apt install rng-toolschoses comme par magie. Je vous remercie!
un nerd payé le
L'installation a havegedfonctionné pour moi. J'ai un ancien Intel Core 2 Duo qui n'a pas de générateur de nombres aléatoires réels.
Balau
7

C'est un changement (bug?) Dans le noyau, voir: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572

Pour atténuer cette installation rng-tools5semble aider. Notez que je ne sais pas si l'installation de ce package a un impact ou non sur la génération de clés de cryptographie forte

Edit: Apparemment, la mise à jour d'util-linux 2.32 devrait résoudre le problème

Bigon
la source
Non, util-linux 2.32 ne résout pas le problème pour moi.
vinc17
5

C'est un bug du noyau qui peut se produire avec différents noyaux.

Exécuter apt-get install rng-toolscomme sudans le terminal devrait fonctionner.

Giulio G
la source
L'exécution d'apt-get install rng-tools en tant que su dans le terminal a résolu le problème avec ma boîte Linux.
Giovanni Cannizzaro
2

rng-toolsn'aide que si votre système prend en charge le matériel pour les nombres aléatoires, comme la « clé sécurisée » d'Intel . Cette façon inventé avec Ivy Bridge . Mes systèmes avec des processeurs 1037u (basés sur ivy bridge) n'ont pas ce support matériel. N'aide donc rng-toolspas.

Sur un autre système ici avec un processeur de pont de sable i3, rng-toolsaidez- moi . Le rngdservice doit être démarré très tôt dans le processus de démarrage, afin de remplir la file d'attente d'entropie. C'est le cas dans la séquence de démarrage avec Ubuntu, je ne sais pas si cela est vrai pour les autres distributions, mais vous pouvez le découvrir, car le début de rngdest connecté dans syslog.

J. Schwender
la source
1
Ce n'est pas tout à fait vrai. Vous pourriez courir rngd -f -r /dev/urandomà pomper /dev/urandomdans /dev/random, mais il est conseillé de ne pas fonctionner de cette manière, il est une option ..
slm
2

Peut également se produire après la suppression de la partition de swap

Le blocage avant kernel: random: crng init donepeut également se produire après la suppression d'une partition de swap.

Si une partition de swap est supprimée, le fichier de configuration /etc/initramfs-tools/conf.d/resume doit être complètement vide ou lu RESUME=. Supprimez tout numéro UUID. RESUME=NONEn'est pas valide.

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

Le système de fichiers RAM initial nécessite une mise à jour pour que ces modifications prennent effet:

$ sudo update-initramfs -u
Serge Stroobandt
la source
1

Dans mon cas, j'exécutais une 4.19.0-4-amd64machine virtuelle Debian Buster (noyau ) sur Proxmox VE.

La solution était d'ajouter un appareil VirtIO RNG à la VM. Sur Proxmox, cela se fait en éditant le fichier de configuration VM .

Dans mon cas, j'ai édité /etc/pve/qemu-server/110.confet ajouté la ligne suivante:

args: -device virtio-rng-pci

Aucun outil de l'espace utilisateur (par exemple rng-toolsou haveged) n'était nécessaire.

Jonathon Reinhart
la source