Le 16 octobre 2026, la Frontier Red Team d’Anthropic a publié un article de recherche au dénouement inattendu : un modèle de recherche interne de Claude a retracé l’origine des seeds des courbes ECDSA du NIST jusqu’au générateur lrand48 de la bibliothèque C, initialisé avec des horodatages Unix. Un mystère vieux d’un quart de siècle, entaché de soupçons de backdoor impliquant la NSA, venait de trouver une explication presque banale.
Car la réponse ne contient ni phrase secrète ni manipulation cachée : les graines des courbes sont d’humbles sorties d’un générateur pseudo-aléatoire des années 1990, semé avec l’heure de la machine. Décryptage complet, de la nature exacte du mystère aux conséquences concrètes pour vos systèmes.
Le mystère des seeds NIST : 25 ans de soupçons de backdoor
Une courbe elliptique comme P-256 se définit par quelques paramètres, dont l’un est dérivé d’une courte chaîne de bits appelée seed (graine). L’idée voulue par le NIST est rassurante : les paramètres se recalculent à partir de cette seed par une fonction de hachage, si bien que quiconque lit la spécification peut vérifier que la courbe n’a pas été choisie pour cacher une propriété malveillante.
C’est la logique « nothing-up-my-sleeve », littéralement « rien dans mes manches », comme un magicien qui relève ses manches avant le tour. Sauf qu’ici, personne n’a pu montrer les manches : le NIST a publié les seeds sans jamais documenter leur méthode de génération, laissant la communauté devant des chaînes de bits parfaitement opaques.
De ce silence est né un scénario de porte dérobée précis. Selon une source, la théorie dominante était que Jerry Solinas, employé de la NSA, avait utilisé une phrase humoristique pour produire chaque seed. L’inquiétude était nette : si la phrase restait secrète, son auteur avait pu tester des milliers de variantes et ne retenir qu’une courbe présentant une faiblesse connue de lui seul.
Le sujet est devenu un enjeu public quand le cryptographe Filippo Valsorda a annoncé une prime de 12 288 $ pour la résolution du mystère, triplée à 36 864 $ si le gagnant la reversait à une association caritative. Le NIST a adopté ECDSA en 2000, mais l’origine des graines, elle, est restée scellée bien après.
Comment Claude a retrouvé l’origine des seeds en moins de 30 minutes
Anthropic indique qu’un modèle de recherche interne de Claude a identifié l’origine des seeds de NIST P-192, P-224, P-256, P-384 et P-521 en moins d’une demi-heure. La percée ne vient pas d’une intuition linguistique, mais d’un changement de terrain : chercher non pas une phrase oubliée, mais le générateur pseudo-aléatoire qu’un programme C de l’époque aurait pu utiliser.
Le scanner de Claude a testé 34 combinaisons de générateurs et de tranches de sortie. Le verdict tombe : les seeds ne sont pas des hachages de phrases cachées, comme certains chercheurs le soupçonnaient, mais des sorties du générateur lrand48.
Une approche par le générateur (lrand48) plutôt que par les phrases
lrand48 appartient à la famille des générateurs congruentiels linéaires (LCG), les algorithmes pseudo-aléatoires les plus courants des années 1990. Leur principe tient en une ligne : à chaque étape, l’état interne est multiplié par une constante, incrémenté, puis réduit modulo une autre constante. Toute la séquence dépend donc uniquement de sa valeur de départ.
Détail technique décisif : lrand48 renvoie les 31 bits de poids fort d’un état de 48 bits. On parle de générateur tronqué, puisque 17 bits de chaque état restent invisibles à l’utilisateur. C’est précisément cette troncature qui a rendu la démonstration possible.
Deux observations ont guidé le modèle. D’abord, quatre des dix seeds examinées avaient tous leurs bits de poids fort à zéro, un motif qu’Anthropic estime à 1 chance sur 5 810 : une anomalie statistique qui aiguille la recherche. Ensuite, pour quatre seeds, Claude a testé les 2^17 valeurs possibles des 17 bits cachés du premier mot, soit 131 072 hypothèses, et vérifié que les quatre mots suivants correspondaient, avec succès pour les quatre. La signature de lrand48 était là, indiscutable.
Les résultats se lisent alors comme un journal de bord. La seed standardisée de P-256 correspond à 1 842 itérations du générateur à partir d’une lecture d’horloge Unix du 16 août 1997 à 01:52:34. La seed de P-192 correspond à 139 itérations à partir du 18 mai 1997. Globalement, les seeds des courbes premières proviennent de lrand48 initialisé à partir de six horodatages Unix en 1997 et 1998.
Réduction de réseau LLL et horodatages Unix de 1997-1998
Rappel utile : un horodatage Unix est le nombre de secondes écoulées depuis le 1er janvier 1970, soit un nombre d’environ neuf chiffres en 1997, incrémenté chaque seconde. Si une graine de courbe provient d’un lrand48 semé avec l’horloge système, alors la date de création de la courbe est inscrite en creux dans ses paramètres officiels.
Encore fallait-il l’extraire. Claude a récupéré les horodatages par réduction de réseau (LLL, Lenstra-Lenstra-Lovász) sur des états tronqués du générateur. Sans formalisme : les bits visibles de plusieurs sorties successives forment un système d’équations dont les inconnues sont les bits cachés, et LLL est l’algorithme qui sait repérer les petites solutions d’un tel système. Une fois un état complet reconstitué, remonter à la valeur initiale, donc à la date, est immédiat.
Les résultats collent à l’histoire documentée : les horodatages tombent en 1997 et 1998, les années mêmes de la conception des courbes. Pour les quatre initialisations de courbes binaires, la date récupérée directement correspond à février 1984, ou au 17 avril 1998 si l’horodatage est doublé, ce qui suggère que le logiciel a pu diviser l’horloge par deux.
Le tableau final est presque décevant, et c’est tant mieux. Un cryptographe lance un utilitaire standard, le sème avec l’heure de sa machine, laisse tourner le générateur un certain nombre d’itérations et note le résultat. Anthropic indique que la piste de la phrase humoristique attribuée à Jerry Solinas s’est révélée fausse. Aucun message caché : simplement l’heure qu’il était.
Ce que cela change (et ne change pas) pour ECDSA, P-256 et la sécurité
Anthropic tient à couper court à toute interprétation alarmiste, et sa formule mérite citation : « This is not a cryptographic break, new attack, or weakness in the ECDSA curves. » En clair : ni cassure cryptographique, ni nouvelle attaque, ni faiblesse d’ECDSA.
Ce qui change est d’un autre ordre. Selon Anthropic, la reproductibilité du processus réduit la marge de manipulation et renforce la confiance dans les paramètres : les graines de P-192 à P-521 proviennent d’un mécanisme banal, daté et vérifiable, et non d’un choix opaque. La manche du magicien est enfin vide pour ces courbes, ce qui répond à un quart de siècle d’insinuations.
Pour les développeurs et les RSSI, les conséquences pratiques se résument ainsi :
- il n’y a rien à corriger : aucun correctif à déployer, aucune migration urgente, P-256 reste un choix sûr et massivement déployé ;
- pour diversifier leurs hypothèses de confiance, les équipes disposent déjà d’alternatives saines comme Ed25519, ou secp256k1 dans l’écosystème Bitcoin ;
- la vraie leçon est documentaire : publier la méthode de génération des constantes d’un standard évite des décennies de suspicion.
Cette histoire dit aussi quelque chose de l’IA en recherche cryptographique, limites comprises. L’apport de Claude n’est pas une force de calcul brute, mais une exploration méthodique d’un espace d’hypothèses, avec 34 combinaisons testées, qu’aucun humain n’avait balayé avec cette systématique. Le problème résolu relevait de la vérification d’hypothèses, pas de la cryptanalyse profonde : l’IA accélère l’exploration, elle ne remplace ni la preuve formelle, ni la relecture par les pairs.
Les zones d’ombre : B-163, points de base et vérification indépendante
Tout n’est pas éclairci. Trois pièces du dossier restent dans l’ombre :
- la graine de la courbe binaire B-163 reste inexpliquée ;
- les points de base de P-224, P-256, P-384 et P-521 n’ont pas retrouvé leur origine ;
- la méthode de sélection reste floue : pourquoi retenir la 1 842e itération pour P-256 plutôt qu’une autre ?
L’absence de documentation d’époque pèse encore sur ces questions. L’autre point de vigilance est le statut de la validation : les résultats sont ceux d’Anthropic, et du code de reproduction a bien été publié. Mais une confirmation indépendante complète n’est pas encore établie selon certaines sources, tandis qu’une autre évoque une vérification par Filippo Valsorda : à nuancer.
Autant prendre la découverte au sérieux, autant attendre que la relecture communautaire tranche définitivement, ce qui est le fonctionnement normal de la recherche. La prime lancée par Filippo Valsorda avait popularisé la chasse aux graines ; chaque pièce manquante devient le nouveau terrain des chercheurs, et les mises à jour sur ces seeds non résolues méritent d’être suivies de près.
Bitcoin, secp256k1 et courbes NIST : quel lien ?
Une confusion circule depuis l’annonce, et il faut la dissiper : Bitcoin n’est pas concerné. Le réseau utilise secp256k1 plutôt que les courbes NIST, une courbe distincte, définie indépendamment, avec ses propres paramètres. Les graines élucidées par Claude, de P-192 à P-521, n’entrent nulle part dans l’architecture du réseau.
Il faut également distinguer ECDSA des courbes qui le portent. ECDSA est un algorithme de signature qui fonctionne sur plusieurs courbes différentes ; Bitcoin l’emploie d’ailleurs sur secp256k1. La découverte ne compromet pas ECDSA : elle éclaire l’histoire d’un choix de paramètres effectué à la fin des années 1990, pas la solidité des signatures produites aujourd’hui.
Au fond, cette histoire a une double morale. La cryptographie moderne tient d’abord par la rigueur de ses mathématiques : un quart de siècle de soupçons n’a jamais produit la moindre attaque contre P-256. Et l’opacité, même innocente, coûte cher : ces graines étaient probablement banales dès le premier jour, mais il a fallu un modèle opiniâtre pour le démontrer.