量子位

Claude résout en une demi-heure une énigme cryptographique : le milieu académique s'était collectivement égaré pendant 20 ans

La réponse pointe vers le temps

Source de l’image · 量子位

Luyu, depuis Aofeisi

QbitAI | Compte officiel WeChat : QbitAI

Dès le petit matin, le monde de l'IA a encore explosé...

Rien d'autre : cette vague de résolution de problèmes par l'IA a déjà remis sur le tapis de vieilles affaires vieilles de plus de vingt ans dans le monde de la cryptologie.

Traque générale pour tous, cette fois c'est au tour deClaude——

À l'instant, selon ce qu'Anthropic vient de révéler, Claude a utiliséEn moins d'une demi-heurepermettant de déterminer comment les graines des cinq courbes elliptiques standard du NIST ont été générées.

Cette série de chiffres utilisée par l'industrie depuis plus de vingt ans a même été inscrite dans des standards de cryptographie, mais personne n'a jamais pu expliquer clairement comment elle avait été choisie à l'origine.

On a même retrouvé la personne concernée, et les indices pointent vers une phrase« Augmenter le salaire de Bob et Jerry »du calcul de hachage de mot de passe.

Le résultat a été spectaculaire : Claude a dit : « Grave erreur ! »

La vraie réponse vient del'horloged'un ordinateur des années 90.

Et cette énigme a déjà fait l'objet d'une vérification indépendante par l'instigateur de la récompense.

Résoudre une énigme cryptographique en une demi-heure

Tout commence avec une technologie servant à « vérifier l'identité ».

ECDSA, soit l'algorithme de signature numérique à courbes elliptiques.

Il permet au destinataire de vérifier si un ensemble de données a bien été signé par le signataire déclaré, et s'il a été modifié après signature. En 2000, il a été intégré par le National Institute of Standards and Technology (NIST) des États-Unis dans la norme de signature numérique FIPS 186-2.

Avant d'utiliser cet algorithme, il faut d'abord sélectionner certains paramètres mathématiques publics, incluant les courbes P-192, P-224, P-256, P-384 et P-521.

La controverse provient de leursgraines.

On peut comprendre la graine comme le matériau de départ servant à générer les paramètres de la courbe : à partir de la graine, en suivant les étapes prescrites par la norme, on peut vérifier si les paramètres suivants correspondent.

MaisPourquoi précisément cette graine, personne ne le savait absolument.

Même Jerry Solinas, qui avait fourni la graine à l'époque, n'en gardait qu'un souvenir flou : il se rappelait seulement vaguement qu'ils avaient converti en nombres une phrase humoristique évoquant peut-être une augmentation de salaire, puis ajouté un compteur.

Ainsi, pendant plus de vingt ans, tout le monde a cherché dans cette direction, et l'ingénieur en cryptographie Filippo Valsorda a même publié unavis de récompense, invitant haut et fort chacun à retrouver l'origine de ces cinq groupes de graines.

Toutes les tentatives sont restées vaines, jusqu'à ce queClaudes'y mette.

Selon la description d'Anthropic, lorsque l'employé a soumis le problème au modèle de recherche interne, il n'a pas mentionné l'indice de la phrase sur l'augmentation de salaire.

Claude a donc supposé de lui-même que ces nombres pouvaient provenir d'un générateur de nombres pseudo-aléatoires d'unebibliothèque C des années 90.

Car les nombres générés par ce type de programme semblent chaotiques, mais obéissent en réalité à un schéma fixe. Il suffit de reconnaître ce schéma pour avoir une chance de remonter le processus de génération.

Claude a ensuite écrit unprogramme de balayage, qui a examiné bit par bit, en glissant, les chiffres binaires des graines publiques, en testant 34 combinaisons de générateurs et de méthodes d'extraction de sortie.

Il a alors découvert que, une fois les quatre groupes de graines décomposés chacun en cinq entiers de 32 bits, le bit de poids fort de ces 20 entiers étaittoujours 0。

L'affaire est résolue : le suspect devrait êtrele générateur de nombres aléatoires lrand48。

lrand48 conserve en interne un entier de 48 bits ; à chaque appel, il multiplie cet entier par une constante fixe, ajoute une autre constante, puis ne conserve que les 48 bits de poids faible du résultat comme état du tour suivant.

Mais la sortie ne conserve que les 31 bits de poids fort parmi ceux-ci ; si on les place dans 32 bits, le reste ne peut être comblé que par des 0.

Une fois la machine trouvée, Claude a ensuite eu recours àl'algorithme de réduction de base de réseaux LLLpour reconstituer l'état tronqué de la graine.

Il ne restait plus alors qu'une question : comment tout a-t-il été lancé à l'origine ?

La fonction chargée de l'initialisation s'appelle srand48 ; elle place la valeur d'entrée dans les 32 bits de poids fort de l'état de 48 bits, fixe ensuite les 16 bits de poids faible à 0x330E, puis remonte la relation de récurrence, avec pour cibleles horodatages Unix。

Ces entrées d'initialisation se concentrent entredu mois 5 de 1997 au mois 4 de 1998。

Autrement dit, enconvertissant un instant donné en entieret en le confiant au générateur, puis en extrayant les nombres de manière fixe, on peut retrouver la graine de la norme.

Prenons l'exemple de P-256 : l'instant d'initialisation correspondant est le 16 août 1997, à 01:52:34 UTC.

En faisant tourner le générateur à partir de cet instant et en prenant le 1842e groupe de candidats, on obtient précisément cette graine commençant par C49D. Les quatre autres groupes correspondent aussi un à un.

Bien entendu, la société A a également indiqué que ce résultat ne comble pas encore toutes les lacunes historiques.

Les chercheurs ont constaté que le programme de l'époque avait ignoré certaines courbes candidates qui semblaient également satisfaire les conditions, pour une raison qui reste inexpliquée ; la graine de B-163, ainsi que la méthode de génération des points de base de certaines courbes, n'ont pas encore été élucidées non plus.

Cependant, ce nouveau résultat signifie aussi que ces courbes ne présentent aucune faille de sécurité latente ; on peut donc les utiliser en toute confiance.

Lien de référence :
[1]
https://www.anthropic.com/research/ecdsa-curve-origins
[2]
https://x.com/sweis/status/2111165738836717980
[3]
https://words.filippo.io/seeds-bounty/

Source originale

量子位

À propos du contenu

La publication originale et les droits appartiennent à la source.

Traduction automatique · Consultez l’original