Augmenter l’entropie pour accélérer SSH (pas que)

Twitter Facebook Google Plus Linkedin email
closeCet article a été publié il y a 5 ans 3 mois 19 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées, les commandes ne sont peut-être plus valides.

Après avoir lu cet article de PAB, j’ai un peu creusé le sujet. En effet, à part dire « ça marchait mal, j’ai installé ça, ça marche mieux », il faut creuser soi-même pour comprendre un peu de quoi il retourne vraiment, parce que la cause est à peine effleurée. J’ai donc sorti la pelle pour vous, surtout qu’une fois de plus, j’ai eu du mal à trouver autre chose que de l’information en anglais.

Le symptôme : la connexion SSH est super lente. En fait, c’est un comportement que j’ai pu expérimenter chez moi : sur la même machine, la connexion SSH à l’hôte, en l’occurrence mon serveur perso, était plus lente que celle sur la machine virtuelle, pourtant utilisant la même version de Debian et donc les mêmes versions de logiciel (et je devrais pas mais la même clé SSH pour le client). En vérifiant la fameuse valeur de l’entropie mise en cause, on constate la chose suivante :

Il y a donc bien plus d’entropie sur la VM que sur l’hôte, mais comment est-ce possible ?

Rappel sur l’entropie, appliqué au sujet

À la base, l’entropie recouvre des notions de désorganisation d’un système. Appliqué à l’informatique, c’est la capacité à générer des nombres aléatoires vraiment aléatoires. Sous Linux, les programmes disposent entre autres d’une fonction random() qui va puiser dans un « pool » de nombres aléatoires générés en fonction de différentes sources à priori imprédictibles (mouvements de la souris, frappes au clavier, entrées/sorties disque, bref, l’activité de la machine).

En effet, un ordinateur ne sait faire que des calculs « bêtes », et dans le domaine de la cryptographie, il faut pouvoir disposer de nombre impossibles à deviner, sous peine de mettre à mal la sécurité du dispositif. Dans le cadre d’SSH, ça serait éventuellement d’arriver à deviner la clé à utiliser si les nombres « aléatoires » utilisés pour celles-ci sont faciles à calculer/deviner, parce que les sources sont faciles à reproduire.

Dans mon cas, il est vrai que l’hôte travaille peu, en dehors de la fourniture de fichiers pour le salon et parfois les machines, comparé à la VM qui voit le lecteur de flux RSS bosser toutes les heures, que je sois réveillé ou pas. Et comme l’activité de la VM est par définition masquée à l’hôte, il ne peut pas s’en servir pour grossir son bagage de nombres.

haveged, la solution super pratique

Comme je le disais en introduction, à part dire « installez ça, ça rox », on ne sait même pas à quoi ça correspond, et j’aime pas installer des trucs sans savoir ce qu’ils font réellement. C’est un petit daemon qui applique la méthode HArdware Volatile Entropy Gathering and Expansion (HAVEGE), soit génération et grossissement de l’entropie volatile par le matériel (pas mieux, et assez indigestif j’avoue). En gros, ça va « artificiellement » grossir l’activité d’une machine (sans gros impact sur les performances, notez bien), en augmentant notamment le nombre de sources de génération d’entropie disponibles. Ce qui est exactement ce qu’on recherche.

Avantage de ce petit programme, c’est qu’il fonctionne en mode utilisateur, et dans sa configuration par défaut sous Debian, va tenter de garder le pool rempli avec 1Mo de nombres aléatoires. Le démon consomme moins de 4ko de mémoire vive, autant dire que vous n’êtes pas près de le sentir, même sur une machine modeste, tout en renforçant sa sécurité. Vous pouvez lire sa page de manuel pour en savoir plus sur lui.

Une entropie nécessaire dans d’autres secteurs

J’ai parlé de la cryptographie en général, et notamment, l’entropie est aussi utilisée dans d’autres pans de la sécurité informatique, comme ce très cher SSL/TLS qui sécurise nos connexions HTTPS. Là aussi, plus les valeurs aléatoires sont difficiles à prédire, meilleure est la sécurité. Donc notamment si vous utilisez une machine qui héberge un service utilisant de la cryptographie, site Web, serveur VPN, SSH, il est important de vérifier qu’on dispose de suffisamment d’entropie pour éviter d’affaiblir ce qu’on pense être en sécurité. J’aurais presque pu inclure cet article dans la série sur les serveurs Linux en fait 🙂

PS : j’ai installé haveged sur l’hôte, et le temps d’écrire l’article, l’entropie est remontée à près de 2000. Et le graphe CPU n’a pas bougé. Vous pouvez donc l’installer sans gros problème je pense 😉

le plus récent le plus ancien
Notifier de
Angristan
Invité

Comment l’installer sous Debian ?

Angristan
Invité

Rien à faire d’autre à part installer haveged ? 🙂