Les graines de la courbe NIST P-256 viennent d'une exécution de lrand48 en 1997
Anthropic a retracé la graine de la courbe NIST P-256 jusqu'à une exécution de lrand48 lancée le 16 août 1997, et a réclamé une prime de 36 864 $. Cette découverte ne casse pas les courbes.
3 min de lecture

En chiffres
- bounty, donated to Let's Encrypt's nonprofit ISRG
- $36,864
- candidate number of the published P-256 seed
- 1,842
- year the P-256 generator run started
- 1997
Une équipe d'Anthropic a découvert d'où venaient les graines d'apparence aléatoire derrière la courbe P-256 du NIST et d'autres courbes elliptiques standard. Les graines ont été produites en 1997 et 1998 par un ancien générateur de nombres aléatoires en C, lrand48, initialisé à partir de l'horloge de l'ordinateur. La découverte, revendiquée le 15 octobre 2026, clôt une question dont les cryptographes débattent depuis des années. Elle n'affaiblit pas les courbes.
La prime et qui l'a réclamée
Filippo Valsorda, ingénieur en cryptographie, a offert il y a trois ans une prime à quiconque saurait expliquer les graines. Son billet annonçant la revendication indique que des chercheurs d'Anthropic l'ont réclamée à 01:07:51 UTC le 15 octobre 2026. La prime a été triplée pour atteindre 36 864 $ et revient à ISRG, l'organisation à but non lucratif qui gère le service de certificats Let's Encrypt.
Anthropic a publié son propre compte rendu le 16 octobre. Il cite dix chercheurs, dont Nicholas Carlini et Steve Weis. Anthropic indique que son modèle Claude a repéré le motif en moins d'une demi-heure.
Pourquoi les graines comptaient
Les courbes premières du NIST, de P-192 à P-521, servent à ECDSA, une méthode courante de signature numérique. Chaque courbe a été générée à partir d'une graine de 20 octets. Selon la norme ANSI X9.62, la graine est hachée avec SHA-1 pour produire les nombres de la courbe. Une graine d'apparence aléatoire est censée prouver que personne n'a choisi une courbe arrangeante.
Le problème, c'est que personne ne savait d'où venaient les graines. Elles avaient été remises en 1997 par Jerry Solinas, un mathématicien de la NSA mort en 2023. La version racontée pendant des années voulait qu'il s'agisse de hachages de phrases en anglais. L'inquiétude était simple : si les graines avaient été choisies librement, quelqu'un aurait pu en essayer beaucoup jusqu'à obtenir une courbe faible. Valsorda écrit désormais que ces résultats « excluent complètement la technique décrite par Bernstein et Lange », deux chercheurs qui ont étudié ce risque.
Comment les graines ont été produites
La méthode était simple, selon les deux comptes rendus. Un programme transmettait l'horodatage Unix courant, le nombre de secondes écoulées depuis 1970, à srand48(). Il tirait ensuite du générateur des candidats de 20 octets et testait chacun d'eux. Les candidats qui ne respectaient pas les règles d'ANSI X9.62 étaient écartés.
Le premier indice de Claude était statistique. Selon Anthropic, quatre des graines avaient un bit de poids fort à zéro dans chacun de leurs 20 mots, une chance sur 5 810 pour des données vraiment aléatoires. Ce motif désignait un générateur faible des années 1990, lrand48. L'équipe a ensuite utilisé la réduction de réseaux, une technique mathématique qui permet de retrouver des nombres cachés, pour reconstruire l'état du générateur.
| Courbe | Démarrage du générateur (UTC) | Candidat utilisé |
|---|---|---|
| P-192 | 18 mai 1997, 14:45:34 | 139 |
| P-521 | 8 août 1997, 01:12:04 | 1 136 |
| P-256 | 16 août 1997, 01:52:34 | 1 842 |
| P-384 | 30 août 1997, 14:50:08 | 2 688 |
| P-224 | 3 avril 1998, 12:52:07 | 7 026 |
Crypto Briefing rapporte les mêmes chiffres pour P-256 : l'horodatage 871696354 et la graine C49D360886E704936A6678E1139D26B7819F7E90. Valsorda a écrit sa propre version de l'algorithme en Go, et Anthropic a publié son code sous la licence de domaine public CC0.
Ce qui reste inexpliqué
La réponse n'est pas complète. Valsorda a trouvé une règle supplémentaire au-delà d'ANSI X9.62 : une courbe est rejetée si son ordre compte plus de bits que le corps sur lequel elle est construite. Une seconde règle lui échappe encore, écrit-il. La méthode laisse environ deux fois plus de graines valides que celles qui ont été publiées.
Anthropic liste les mêmes lacunes. Le candidat 876 de l'exécution P-256 donne lui aussi une courbe valide, et pourtant c'est le candidat 1 842 qui a été utilisé. Les points de base de P-224, P-256, P-384 et P-521 restent inexpliqués, tout comme la graine de la courbe binaire B-163. Anthropic a bien expliqué six points de base, dont celui de P-192, grâce à un autre générateur issu d'une bibliothèque appelée FreeLIP.
Ce que cela signifie pour les développeurs
Rien dans votre code ne doit changer. Anthropic précise que ce travail n'est ni une cassure cryptographique, ni une nouvelle attaque, ni une faiblesse des courbes. Valsorda ajoute que les praticiens n'avaient pas d'inquiétude sérieuse, même avant cela.
Ce qui change, c'est le débat. Les équipes qui évitaient P-256 parce que ses graines étaient un mystère peuvent revoir ce choix avec de meilleures preuves. Anthropic indique que ces résultats rendent une porte dérobée moins plausible. Les candidats sautés montrent que le choix n'est toujours pas entièrement expliqué, donc le débat se resserre au lieu de se clore.
Si vous travaillez en cryptographie, le code de reproduction vaut la lecture. Il montre comment un test statistique combiné à la réduction de réseaux peut reconstruire l'état d'un générateur à partir de sa seule sortie. C'est un bon rappel de ne jamais utiliser lrand48 pour quoi que ce soit de secret.
Les questions ouvertes sont une belle énigme pour les curieux. La seconde règle de rejet et les points de base manquants sont des problèmes que personne n'a encore résolus.
Sources
- The NIST Elliptic Curves Seeds Bounty Has Been Claimed - Filippo Valsorda
- Claude reveals ECDSA curve origins - Anthropic
- Claude traces NIST P-256 seed to a 1997 random number generator run - Crypto Briefing
Articles liés

Rejetto HFS CVE-2026-61500 exploitée un jour après la publication de son analyse
HFS 3.0.0 à 3.2.0 signe les connexions avec Math.random(), une faille trouvée par Mythos d'Anthropic. Les attaques ont commencé le 3 octobre, un jour après l'analyse. La 3.2.1 la corrige.

Anthropic absorbe Opaque, une start-up d'IA confidentielle
Opaque Systems, une start-up d'IA confidentielle valorisée 300 millions de dollars cette année, cesse ses activités tandis que son équipe rejoint Anthropic. Ses outils open source continuent ailleurs.

Claude Opus 4.7 : des agents inventent des jeux sur une île virtuelle
Une étude du MIT a laissé 13 agents Claude Opus 4.7 seuls sur une île virtuelle pendant 30 heures. Ils ont inventé des jeux, puis battu des copies neuves sur de nouvelles tâches.