AMD: RDRAND ne génère jamais 0 en 16 bits
Original : AMD's random number generator can't generate a 0?
Pourquoi c'est important
Un biais dans RDRAND peut compromettre toute application cryptographique reposant sur le matériel AMD.
Un développeur brésilien a découvert que les processeurs AMD (possiblement Zen2) ne génèrent jamais la valeur 0 via les instructions RDRAND et RDSEED en mode 16 bits. Le même code fonctionne correctement sur Intel. Le bug a été reproduit via une application de test open source publiée sur le forum flat assembler.
Jessé, développeur assembleur basé au Brésil, a mis au jour par accident un comportement anormal des processeurs AMD lors d'un projet de visualisation de données en graphiques. En utilisant les instructions RDRAND et RDSEED pour alimenter ses graphiques en données aléatoires, il a constaté qu'aucune valeur 0 n'était jamais produite en espace 16 bits sur son hôte AMD — alors que les tests sur processeur Intel donnent des zéros sans problème.
Pour valider la découverte, il a publié une application de démonstration (gtk4-bargraph.tar.gz, 7,25 Ko, déjà téléchargée 141 fois) qui affiche en temps réel la distribution des valeurs générées. Sur AMD, la barre correspondant à 0 reste invariablement vide. Le contournement identifié : demander une sortie en 32 ou 64 bits, puis n'utiliser que les 16 bits de poids faible — dans ce cas, la valeur zéro peut apparaître dans la portion basse.
Le modérateur "revolution" a ironisé : "J'espère que ce n'est pas quelque chose d'aussi stupide qu'AMD qui a décidé que zéro n'est pas un nombre aléatoire." Un autre participant rappelle la règle de sécurité ancienne : ne jamais faire confiance aux générateurs aléatoires matériels pour la cryptographie. Jessé prévoit de contacter AMD directement.