En octobre 2026, des chercheurs d’Anthropic ont demandé à un modèle de recherche interne – appelé Claude dans le texte – de retrouver l’origine des graines utilisées pour générer les paramètres des courbes ECDSA du standard FIPS 186‑2. En moins de trente minutes, le modèle a identifié une chaîne d’événements qui conduit à la même série de valeurs que celle publiée par la NSA en 1997. Le processus, détaillé dans le rapport interne, repose sur un générateur pseudo‑aléatoire de type lrand48 et sur les horodatages Unix de l’époque.

Contexte technique

Les courbes P‑192, P‑224, P‑256, P‑384 et P‑521 sont définies dans la norme de signature FIPS 186‑2, adoptée par le NIST en 2000. Leur coefficient b provient du hachage SHA‑1 d’une graine de 160 bits, conformément à la spécification ANSI X9.62. Le hachage empêche de choisir b à la main, mais il laisse la provenance de la graine elle‑même ouverte à l’interprétation.

Selon l’enquête menée par Steve Weis et citée par Anthropic, la NSA aurait remis ces graines à Alfred Menezes à l’automne 1997, sans fournir d’explication. Dans des courriels, Jerry Solinas, ingénieur de la NSA, aurait évoqué le hachage d’un message humoristique, mais ne se souvenait plus du contenu exact.

La piste du générateur lrand48

Le modèle Claude a supposé que les graines étaient issues du générateur pseudo‑aléatoire fourni avec les bibliothèques C des années 1990. Ce générateur, initialisé par la fonction srand48, construit un état interne de 48 bits à partir d’un horodatage Unix et d’une constante fixe (0x330E). Chaque appel à lrand48 produit 32 bits ; les huit bits de poids fort de chaque appel forment les 20 octets d’une graine candidate.

Quatre des dix graines publiées présentent un bit de tête nul sur chacun de leurs cinq mots de 32 bits. La probabilité d’une telle coïncidence est d’environ 1 sur 5 810, ce qui a guidé le modèle vers la bonne hypothèse. En reproduisant l’état interne à partir de l’horodatage « 16 août 1997 à 01:52:34 UTC », le modèle a identifié le 1 842ᵉ candidat comme correspondant à la graine de la courbe P‑256.

Vérifications indépendantes

Filippo Valsorda, ingénieur en cryptographie, a reçu la réclamation le 15 octobre 2026. Il a ré‑implémenté l’algorithme en Go pour vérifier les résultats. Son programme génère les mêmes dix graines que celles publiées, puis calcule le coefficient b et l’ordre de chaque courbe à l’aide de PARI/GP. Les deux critères de sélection qu’il a mis en évidence – exclusion des candidats dont l’ordre dépasse le nombre premier du corps et respect d’un nombre minimal de bits – ne figurent pas dans la norme originale.

Valsorda a également reproduit les calculs en Python (24 lignes) et confirme que la génération des graines se fait en une fraction de seconde sur un ordinateur moderne.

Implications pour la communauté cryptographique

Le rapport conclut qu’il n’existe « aucune mesure à prendre ni rien à faire différemment » pour les responsables de la sécurité (RSSI). La méfiance envers les graines ne justifie pas, à ce jour, une migration de P‑256 vers des courbes comme Curve25519. Valsorda va plus loin en indiquant que, pour des signatures ECDSA déterministes ou « hedged », les courbes NIST restent raisonnablement sûres, à condition d’utiliser une arithmétique de corps vérifiée formellement et les formules d’addition complètes de Renes, Costello et Batina (2015).

En France, le guide ANSSI‑PG‑083 (version 3.00 du 20 mars 2026) classe déjà P‑256, P‑384 et P‑521 parmi les courbes conformes, sans imposer de règle sur la génération des paramètres. Le même guide prévoit une transition vers la sécurité post‑quantique d’ici 2030, en recommandant l’hybridation des signatures : Machine LearningBranche de l'intelligence artificielle permettant à des systèmes d'apprendre des relations à partir de données plutôt que de suivre uniquement des règles programmées.‑DSA pour le mécanisme principal, complété par ECDSA pour la compatibilité.

Le débat sur la liberté de choix de la graine

En 2017, Daniel J. Bernstein et Tanja Lange ont décrit une technique exploitant jusqu’à 70 bits de liberté dans le choix de la graine pour cibler des courbes faibles. Valsorda estime que, même en considérant tous les horodatages possibles de 1997‑1998 et les 16 premiers candidats d’ordre premier, la NSA n’aurait eu que « à peine 30 bits de liberté ». Ce nombre de bits est bien en dessous du seuil requis pour introduire une porte dérobée de type NOBUS.

Le calcul d’ActuIA confirme cet ordre de grandeur : deux années contiennent environ 63 millions de secondes (~26 bits), plus 4 bits supplémentaires pour les 16 candidats, soit 30 bits au total. Le scénario de Bernstein‑Lange, avec 70 bits, représente un espace de recherche mille milliards de fois plus vaste.

Points encore inexpliqués

Valsorda signale deux aspects qui restent obscurs : un second critère de sélection qui élimine davantage de candidats, et le rôle des « points de base » (points de départ fixés) pour les courbes P‑224, P‑256, P‑384 et P‑521. Pour P‑192 et les cinq courbes ANSI, ces points proviennent du générateur FreeLIP d’Arjen Lenstra, mais les autres restent sans explication. La courbe française FRP256v1, bien que validée par l’ANSSI, est également classée « trivialement manipulable » par le site SafeCurves en raison de l’absence d’information sur sa graine.

Conclusion pratique

Pour les praticiens, le principal enseignement est que les courbes NIST restent utilisables tant que l’on garde une approche prudente : vérifier les implémentations, recourir à des signatures déterministes ou hedged, et planifier la transition vers des algorithmes post‑quantique d’ici la fin de la décennie. Les résultats de l’enquête démontrent que la génération des graines, bien que peu documentée, ne laisse pas de place à une manipulation facile.


Sources : publication « Claude reveals ECDSA curve origins », enquête de Steve Weis (2023‑2026), ré‑implémentation de Filippo Valsorda (16 oct. 2026), guide ANSSI‑PG‑083 (20 mars 2026).