Jason A. Donenfeld, l'auteur de VPN WireGuard, a présenté des correctifs qui accélÚrent considérablement l'obtention de nombres aléatoires du systÚme via la fonction getrandom(), implementée à travers l'appel systÚme correspondant de Linux. L'avantage de cette solution par rapport à l'utilisation de /dev/random ou /dev/urandom est qu'elle n'est pas sujette aux attaques d'épuisement des descripteurs de fichiers, ce qui peut conduire à des clés cryptographiques non initialisées et non aléatoires.
L'optimisation proposée repose sur l'utilisation du mécanisme vDSO (objet partagé dynamique virtuel), qui permet de déplacer le gestionnaire d'appel systÚme du noyau vers l'espace utilisateur et d'éviter les commutations de contexte. Dans le cas de getrandom(), l'implémentation de l'appel systÚme associé à cette fonction est formée en tant que vDSO, dont le code est préalablement chargé dans l'espace d'adressage du processus directement par le noyau. Cette approche a permis d'accélérer l'obtention de nombres aléatoires dans certaines situations jusqu'à 15 fois ou plus.
Source : opennet.ru
