veilletech.fr
17 oct. Feed du jour
#04 SÉCURITÉ Faille

Courbes NIST : l'origine des seeds enfin élucidée

Le soupçon sur P-256 vient de perdre sa seule piste.

Les graines des courbes NIST (P-192 à P-521) ne sont pas le hachage d'une phrase : elles sortent de drand48 initialisé avec l'heure Unix de 1997-1998, selon l'équipe d'Anthropic qui a réclamé la prime de Filippo le 15 octobre 2026. Cela écarte la technique de Bernstein et Lange (70 bits de liberté, il n'en reste que 30), sans expliquer un critère de sélection non documenté.

3 min de lectureavancévidéo 1:21
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Ce que ça change
  4. Les limites
  5. À retenir

Ce qui se passe

Les courbes elliptiques du NIST (P-192, P-224, P-256, P-384, P-521), publiées dans FIPS 186-2 en 2000, sont générées à partir d'une graine passée au hachage SHA-1 selon la norme ANSI X9.62. D'où venaient ces graines ? La légende disait que Jerry Solinas (mort début 2023) avait haché en 1997 des phrases anglaises qu'il avait ensuite oubliées.

Le 15 octobre 2026 à 01:07:51 UTC, une équipe d'Anthropic (John Wood, Henry de Valence, Ava Howell, Zack Voase, Lucy Sweet, Amir Omidi, Paul Crowley, Iain McGinniss, Nicholas Carlini, Steve Weis) a réclamé la prime annoncée trois ans plus tôt par Filippo, auteur du billet source. Elle l'a reversée à l'ISRG (Let's Encrypt), ce qui la triple à 36 864 dollars.

La réponse : les graines sortent du générateur POSIX drand48, initialisé avec l'heure Unix, bien en 1997-1998.

Le mécanisme

  1. srand48(timestamp) avec l'heure Unix du moment ;
  2. drand48 produit les octets un par un ;
  3. chaque suite de 20 octets est essayée comme graine selon ANSI X9.62 et rejetée si la courbe n'est pas valide ;
  4. un même horodatage peut servir pour plusieurs courbes, en continuant à tirer des graines après la première acceptée.

Filippo a réimplémenté l'algorithme en Go pour vérifier.

TEXT
srand48(863966734)  1997-05-18 14:45:34 UTC   139e graine   → P-192
srand48(871002724)  1997-08-08 01:12:04 UTC   1136e graine  → P-521
srand48(871696354)  1997-08-16 01:52:34 UTC   1842e graine  → P-256
srand48(872952608)  1997-08-30 14:50:08 UTC   2688e graine  → P-384
srand48(891607927)  1998-04-03 12:52:07 UTC   7026e graine  → P-224

Ce que ça change

Même avant, les praticiens ne s'inquiétaient guère. Mais en 2017, Daniel Bernstein et Tanja Lange avaient décrit une technique exploitant 70 bits de liberté dans le choix de la graine pour viser une classe hypothétique de 2⁶¹ courbes faibles, ce qui a nourri des théories du complot. Avec un horodatage de 1997-1998 et les 16 premiers candidats à ordre premier, il reste à peine 30 bits : trop peu pour cibler une classe de courbes faibles ou glisser une porte dérobée réservée à son auteur. Filippo écrit qu'il recommande désormais, à titre personnel, ces courbes plutôt que Curve25519, Ed25519 et X25519.

Concrètement : si une origine suspecte vous retenait d'employer P-256 (ES256 dans les JWT, WebAuthn, ECDSA), ce motif disparaît.

Les limites

Source : The NIST Elliptic Curves Seeds Bounty Has Been Claimed, Filippo, billet du 16 octobre 2026.