Mise à jour du correctif Linux getrandom() vDSO pour une accélération ~15x

Mise à jour du correctif Linux getrandom() vDSO pour une accélération ~15x

Au cours de l’été, Jason Donenfeld de la renommée de WireGuard a proposé d’ajouter getrandom() au vDSO pour de meilleures performances dont pourront profiter les développeurs de l’espace utilisateur. La semaine dernière, il a envoyé la dernière version de ce correctif de noyau proposé où il constate une accélération d’environ 15 fois avec ce changement.

La prise en charge de getrandom() dans le vDSO est conçue pour résoudre deux problèmes rencontrés par les développeurs de l’espace utilisateur :

1) L’espace utilisateur veut des nombres aléatoires sécurisés cryptographiquement plus rapides de taille arbitraire, grande ou petite.

2) L’espace utilisateur est actuellement incapable de rouler en toute sécurité son propre RNG avec le même profil de sécurité que getrandom().

Suite à des discussions sur l’implémentation de getrandom() dans le vDSO, Donenfeld a révisé le correctif pour incorporer des commentaires afin d’éviter les changements de comportement et de faire de vgerandom_alloc un appel système. De plus, il y a quelques autres corrections/modifications mineures.

Jason a terminé le message v3 avec:

Jusqu’à présent, dans mes résultats de test, les performances sont assez stellaires (environ 15x pour la génération uint32_t) et cela semble fonctionner. Il y a quelques bits TODO avec l’intégration réelle de la durée de vie de random.c, mais en tant que premier patchset, cela introduit au moins l’interface prévue.

Les lecteurs pourraient également être intéressés par une conférence de Jason au LPC 2022 sur le travail qu’il a effectué sur le générateur de nombres aléatoires Linux. La vidéo est ci-dessous et il y a aussi le jeu de diapositives.

.

Leave a Comment

Your email address will not be published.