En plus de étant occupé à diriger WireGuard, Jason Donenfeld continue de travailler intensivement sur le code du générateur de nombres aléatoires (RNG) du noyau Linux. Pour Linux 6.0, un certain nombre d’améliorations RNG sont prêtes.

Pour cette prochaine version du noyau Linux, le test de démarrage RdRand x86 a été rendu plus robuste pour déterminer s’il faut ou non désactiver l’utilisation de cette extension si elle semble défectueuse. les options”nordrand”et”CONFIG_ARCH_RANDOM”ont été abandonnées au profit des options”random.trust_cpu”et”CONFIG_RANDOM_TRUST_CPU”, et d’autres améliorations RNG.

Donenfeld est le plus excitant avec les changements de Linux 6.0 RNG est un mécanisme permettant aux chargeurs de démarrage, aux hyperviseurs et à Kexec de transmettre une graine aléatoire au noyau pour initialiser le générateur de nombres aléatoires. Il explique dans la demande d’extraction :

sur x86 et m68k, il existe désormais un mécanisme permettant aux chargeurs de démarrage, aux hyperviseurs et à kexec de transmettre une graine aléatoire au noyau pour initialiser le RNG. Ces mécanismes spécifiques à la plate-forme ne sont pas réellement dans cette attraction, mais viendront via l’arborescence x86 et l’arborescence m68k, mais ils méritent néanmoins d’être mentionnés.

Les architectures basées sur l’arborescence des appareils ont cette capacité depuis 2019, via le paramètre”rng-seed”peu utilisé dans le FDT, et EFI a sa propre chose similaire depuis 2016, mais les plates-formes sans FDT ni EFI ont été laissées de côté.

Ces modifications correspondent aux travaux connexes dans QEMU, dont la sortie est prévue dans la version 7.1, ainsi que dans kexec-tools, qui ajoutent la prise en charge de ces mécanismes de démarrage RNG de démarrage, les deux nouveaux pour x86 et m68k, ainsi que ainsi que d’utiliser enfin le paramètre FDT”rng-seed”sur les plates-formes applicables manquantes.

Pris ensemble, ils représentent un petit pas vers l’élimination du problème d’entropie du temps de démarrage, du moins du point de vue du noyau, en fournissant un moyen de faire remonter la responsabilité d’un niveau dans la chaîne. Les hyperviseurs et kexec sont évidemment dans une excellente position pour fournir cela, c’est pourquoi je l’ai ajouté en premier. Mais cela ouvre également la possibilité aux chargeurs de démarrage de gérer en toute sécurité les fichiers de démarrage, un peu comme cela a été fait sur les BSD et divers autres systèmes d’exploitation pendant longtemps. Et certains micrologiciels arm64 fournissent déjà cela via le paramètre FDT”rng-seed”.

Plus de détails sur les changements RNG pour le cycle du noyau Linux 6.0 via cette pull request.

Categories: IT Info