Une question ouverte depuis 2000
Anthropic a annoncé le 16 octobre qu’un modèle de recherche interne de Claude avait reconstitué, en moins d’une demi-heure, la méthode de fabrication des graines de cinq courbes elliptiques du NIST : P-192, P-224, P-256, P-384 et P-521. Les graines ne sont pas des empreintes de hachage, contrairement à l’explication la plus répandue. Selon la publication d’Anthropic, elles sortent de lrand48, le générateur de nombres aléatoires de la bibliothèque standard du C, amorcé avec un horodatage Unix.
Ces graines comptent parce que les courbes qui en découlent portent ECDSA, le schéma de signature employé dans TLS, dans la signature de code et dans les portefeuilles de cryptomonnaies. Le NIST a adopté ECDSA en 2000 avec FIPS 186-2, en publiant pour chaque courbe une graine dont l’empreinte fixe l’un des coefficients. La NSA a fourni ces graines sans dire d’où elles venaient, ce qui a laissé place au soupçon : quelqu’un aurait cherché jusqu’à tomber sur une courbe dont il connaissait seul la faiblesse.
Ce que le modèle a fait
Anthropic raconte que le modèle a commencé par vérifier si les graines ressemblaient à la sortie de générateurs disponibles dans les années 1990. Certaines avaient tous leurs bits de poids fort à zéro, une signature de lrand48. Il a ensuite reconstitué l’état interne du générateur pour les graines des courbes premières par réduction de réseau.

Les états initiaux retrouvés sont des lectures d’horloge. P-192 et deux courbes voisines renvoient au 18-05-1997 à 14:45:34, P-521 au 08-08-1997 à 01:12:04, P-256 au 16-08-1997 à 01:52:34 et au 1 842e candidat de cette exécution, P-384 au 30-08-1997 à 14:50:08 et P-224 au 03-04-1998 à 12:52:07. Les quatre courbes binaires du NIST tombent le 17 avril 1998, mais seulement si l’on divise l’horodatage par deux, ce qui laisse penser que le programme employé coupait la valeur de l’horloge.
Le modèle a aussi localisé la source de six points de base, celui de P-192 et de cinq courbes voisines, dans le générateur de FreeLIP, le paquet d’arithmétique sur grands entiers d’Arjen Lenstra, avec les graines 20000, 20420, 20507, 20509, 20512 et 20517.
Ce que disait l’explication précédente
La thèse dominante venait de Jerry Solinas, le mathématicien de la NSA qui a travaillé sur ces courbes. En 2015, il a dit que les graines étaient les empreintes d’une phrase plaisante, du genre « augmentez Bob et Jerry », et qu’un collègue avait écrit le code. Aucune archive de l’époque n’a pu être retrouvée, et Solinas est mort en 2023. Anthropic indique que ses propres salariés ont suivi cette piste sans succès avant de confier le problème à un modèle.
Ce qui reste sans réponse
La publication d’Anthropic énumère ce que le modèle n’a pas résolu : les points de base de P-224, P-256, P-384, P-521 et des courbes binaires du NIST, la cinquième graine binaire B-163, et la raison pour laquelle certains candidats valables ont été écartés, dont le candidat 876 pour P-256.

L’entreprise est explicite : il ne s’agit « ni d’une cassure cryptographique, ni d’une nouvelle attaque, ni d’une faiblesse des courbes ECDSA », et personne n’a de mesure à prendre. Le résultat rend selon elle une porte dérobée volontaire bien moins plausible, puisque les graines ont été produites de façon très simple et que peu de candidats ont été écartés. Elle ajoute cependant qu’elle ne peut exclure que des horodatages précis aient été choisis pour une propriété de la courbe obtenue.
Ce qu’il faut suivre
Anthropic a publié du code Python qui reproduit les graines et les six points de base, sous licence CC0, de sorte que l’affirmation est vérifiable par qui veut l’exécuter. Sa publication ne décrit aucune vérification indépendante. La prime de 36 864 dollars promise pour la réponse, organisée par Filippo Valsorda, ira à l’Internet Security Research Group. Les points de base restants et la graine B-163 sont la prochaine chose à tomber, ou pas.