Ralentissement Debian / épuisement du générateur aléatoire

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: Guilde Mailing list
Subject: Ralentissement Debian / épuisement du générateur aléatoire
    Bonjour,

    l'arrivée imminente de la nouvelle Debian stable (aujourd'hui !) me
rappelle un bug que j'ai connu il y a quelques mois, sur ma Debian Testing.


    La page en cours de rédaction de LinuxFR au sujet de la sortie de
Debian Buster en parle:
https://linuxfr.org/redaction/news/debian-10-buster-une-distribution-qui-a-du-chien#toc-attention-au-coup-de-la-panne


    Concrètement, les symptômes:
- session SSH lente à s'ouvrir
- machine lente à démarrer
- en phase de démarrage (X non encore lancé), bouger la souris dans tous
les sens, ou taper aléatoirement au clavier, permet d'accélérer le boot ...
- pour les machines qui n'ont pas de clavier/souris, un "ping" en
continue sur la machine a le même effet.


    La raison technique:
- dans les kernel récents, la demande de nombres aléatoires (fonction
"getrandom") est maintenant bloquante pour le kernel. Donc si il n'y a
pas assez d'entropie dans le système, le kernel attendra avant de
retourner une valeur
- or, la phase de boot, systemd, et autre démons, sont très
consommateurs de nombres aléatoires, ce qui "épuise" l'entropie de la
machine
- d'où ralentissements, car le kernel ne répond pas tout de suite au
"getrandom()" ...


    La page https://daniel-lange.com/archives/152-hello-buster.html fait un
état des lieux. De même que
https://wiki.debian.org/BoottimeEntropyStarvation , qui synthétise plus
les informations.


    Personnellement, à l'époque où j'ai eu le problème, j'avais installé
https://packages.debian.org/buster/haveged . C'est un démon qui utilise
du CPU afin d'augmenter l'entropie du système. Ce n'est pas idéal, voir
même déconseille, mais cela marche sur toutes les machines.


    Pour ceux dont la carte mère est équipée du hardware nécessaire (TRNG),
il y a https://packages.debian.org/buster/rng-tools5 . Même principe que
plus haut, mais à priori plus efficace.


    Enfin, les kernel récents de Debian Buster (>= 4.19.20-1) activent par
défaut RANDOM_TRUST_CPU , qui règle le problème. Mais en regardant
https://lwn.net/Articles/760584/ , la solution n'est pas forcément
génial pour la sécurité:


<extrait>
Kernels built with RANDOM_TRUST_CPU will immediately initialize the
random number pool using the architecture's facility, without waiting
for enough entropy to accumulate from other sources
</extrait>

    Donc cela veut dire que les premiers nombres générés n'aurons pas une
forte entropie.


    Vous voilà prêt pour votre migration sur Debian Buster !


    Cordialement


                            Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!