Aller au contenu principal

Sécurité : l'énigme des nombres du NIST est résolue, y avait-il une porte dérobée ?


Le 18 mai 1997, à une heure que personne n'a notée, quelqu'un a lancé un petit programme sur un ordinateur américain. Ce programme a tiré des nombres au hasard, et ces nombres servent depuis vingt-neuf ans à fabriquer le petit cadenas de ton navigateur. Pendant tout ce temps, personne n'a su d'où ils venaient, et une bonne partie du monde de la sécurité soupçonnait la NSA d'y avoir planqué une trappe. On a la réponse depuis jeudi. Elle a été trouvée en moins d'une demi-heure.

Un bureau de 1997 éclairé par une lampe : un moniteur beige à tube cathodique affiche des colonnes de chiffres sur fond noir, avec un clavier beige, une tasse et une horloge ronde accrochée au mur derrière

Le coupable est à l'écran. Enfin, surtout au mur, à droite

C'est quoi, ces nombres ?

Quand ton navigateur affiche un cadenas, il fait des maths avec le site d'en face pour se mettre d'accord sur une clé que personne d'autre ne connaît. Ces maths se font sur ce qu'on appelle une courbe elliptique : une équation très particulière, choisie une fois pour toutes, dont les propriétés rendent le calcul facile dans un sens et infaisable dans l'autre. J'expliquais ce principe hier à propos des bitcoins et de l'ordinateur quantique, et c'est exactement la même famille de mathématiques.

Les courbes les plus utilisées au monde ont été normalisées par le NIST, l'institut américain qui fixe les standards techniques, à la fin des années 90. Elles portent des noms de robots : P-192, P-224, P-256, P-384, P-521. La P-256 est dans ton navigateur, dans ta carte bancaire, dans ton passeport biométrique.

Et chacune de ces courbes a été fabriquée à partir d'un nombre de départ, une « graine » de vingt octets. Le document officiel donne la graine, vérifie bien qu'elle produit la courbe, et ne dit pas un mot sur sa provenance. Un nombre tombé du ciel, en somme.

Pourquoi tout le monde avait un mauvais pressentiment

Un nombre sans explication dans un standard de sécurité, ça réveille les mauvais souvenirs. Et il y en a un vrai : en 2013, on a découvert qu'un autre standard américain, un générateur de hasard appelé Dual EC, contenait bel et bien une faiblesse volontaire. Pas un soupçon, pas une théorie : une porte dérobée, documentée, qui a fini par être retirée.

Alors forcément, les mêmes questions se sont posées sur les graines des courbes. Si celui qui les a choisies pouvait en essayer des milliards jusqu'à tomber sur une courbe faible connue de lui seul, il aurait pu glisser une faiblesse invisible dans la moitié des communications de la planète. Deux cryptographes réputés, Daniel Bernstein et Tanja Lange, avaient même calculé en 2017 combien de marge de manœuvre il aurait fallu pour réussir ce coup-là.

La légende officieuse, elle, racontait autre chose. Un mathématicien de la NSA, Jerry Solinas, aurait fabriqué ces graines en passant à la moulinette des phrases rigolotes de son cru, et aurait oublié lesquelles. Il est mort en 2023 sans avoir pu confirmer. Plusieurs personnes ont passé des années à deviner ses phrases. Peine perdue.

Deux images côte à côte : à gauche une main écrit une phrase amusante sur un post-it jaune sous un carton « La légende : une phrase drôle », à droite une horloge murale reliée par un câble à un vieil ordinateur sous un carton « La réalité : l'heure qu'il était »

Vingt-cinq ans à chercher une bonne vanne, alors qu'il suffisait de regarder la pendule

Comment la réponse est sortie

Il y avait une prime pour qui résoudrait l'énigme. Elle a été mise sur la table en 2023 par Filippo Valsorda, un cryptographe italien très connu dans le métier : 12 288 dollars, triplés à 36 864 si le gagnant les reversait à une association. Trois ans, personne.

Le 15 octobre à 1 h 07 du matin, dix personnes d'Anthropic ont réclamé la prime. Le déclic vient d'un employé qui a simplement demandé à un modèle interne de chercher comment ces graines avaient été fabriquées, sans lui souffler la théorie de la phrase rigolote. Trente minutes plus tard, c'était plié. Et le modèle a fait ce que personne n'avait fait : au lieu de deviner des phrases, il a supposé que le type de 1997 avait fait au plus simple, c'est-à-dire appeler le générateur de nombres aléatoires fourni avec son langage de programmation.

Ces générateurs des années 90 étaient de vraies passoires, et ils laissent des traces. Le modèle a remarqué que sur dix graines publiées, quatre avaient leur tout premier bit à zéro, ce qui n'arrive par hasard qu'une fois sur cinq mille huit cents environ. Signature typique d'une fonction précise de la bibliothèque C. Il a écrit un programme pour essayer toutes les secondes de 1997 et 1998, une par une, et ça a cassé. Vingt-cinq ans d'énigme contre une boucle qui compte les secondes. Il y a des jours comme ça.

La recette était celle-ci : on prend l'heure qu'il est, on la donne au générateur, on tire vingt octets, on teste si ça donne une courbe valable, sinon on recommence. Valsorda a tout revérifié en réécrivant l'algorithme de son côté, et il est formel.

Un cambriolage daté à la seconde près

Le plus beau, c'est que le résultat donne les dates exactes. Le 18 mai 1997 pour la P-192. Le 8 août 1997 pour la P-521. Le 16 août 1997 pour la P-256, celle de ton navigateur. Le 30 août pour la P-384, et le 3 avril 1998 pour la P-224. Ces courbes qui protègent une partie du trafic mondial ont une date de naissance, à la seconde près, et elle a été lue dans l'horloge d'un ordinateur il y a vingt-neuf ans.

Pour la petite histoire, Valsorda résume la fin de la légende en une phrase que je trouve très élégante : la mémoire peut jouer des tours à tout le monde. Solinas n'a pas menti, il s'est souvenu de travers.

Bonne nouvelle : pas de porte dérobée

Et c'est là le vrai résultat, celui qui compte pour toi. Si la graine vient de l'horloge, alors celui qui a fabriqué ces courbes n'avait presque aucune liberté. Il pouvait choisir le moment où il lançait son programme, et c'est à peu près tout. Valsorda a chiffré cette marge : environ un milliard d'essais possibles. Ça paraît beaucoup, dit comme ça. Sauf que la méthode imaginée par Bernstein et Lange, pour marcher, aurait demandé un milliard de milliards de milliards d'essais. On n'est pas à côté de la plaque, on est à côté de la planète.

Autrement dit, la seule attaque crédible qu'on imaginait contre ces courbes est maintenant exclue. Pas « improbable » : exclue, chiffres à l'appui. Après un quart de siècle de soupçons, la réponse à « est-ce que la NSA a saboté le cadenas de nos navigateurs » est non, en tout cas pas par ce moyen-là.

Gros plan sur le coin d'un écran d'ordinateur portable montrant la barre d'adresse d'un navigateur avec une petite icône de cadenas fermé, dans un salon flou en arrière-plan

Ce petit cadenas a vingt-neuf ans et vient d'être blanchi

Tu n'as rien à faire, rien à mettre à jour, rien à changer. Ce qui marchait hier marche aujourd'hui. La différence, c'est qu'on sait enfin pourquoi.

Il reste deux trous dans l'histoire

Parce que ce n'est pas fini. Il y a environ deux fois plus de graines valables que de graines publiées, et personne ne sait pourquoi certaines ont été sautées. Il manque donc un critère de tri, un deuxième filtre dont on ignore tout. Valsorda le dit franchement : il reste une règle qu'il n'explique pas.

Ça ne change rien au résultat principal. Mais j'avoue que j'aime bien quand une énigme résolue laisse un bout de ficelle qui dépasse. Il y a encore quelqu'un, quelque part, qui pourra dire « c'est moi qui ai trouvé le reste ».

Ce que j'en retiens

Deux choses, et la première m'amuse beaucoup. Pendant vingt-cinq ans, des gens brillants ont cherché une phrase drôle, parce que la rumeur disait qu'il y avait une phrase drôle. La machine, elle, n'avait pas entendu la rumeur. Elle a demandé « qu'est-ce qu'un programmeur de 1997 avait sous la main ? », et la réponse était à trois lignes de code. C'est le genre d'histoire où l'IA ne gagne pas parce qu'elle est plus intelligente, mais parce qu'elle n'a pas d'idée préconçue.

La deuxième, c'est le geste des dix gagnants : ils ont reversé la totalité des 36 864 dollars à l'organisation qui fait tourner Let's Encrypt, c'est-à-dire les certificats gratuits qui mettent le cadenas sur une bonne partie des sites du web, celui de ce blog compris. Payer la facture de la sécurité de tout le monde avec la prime d'une énigme de sécurité, franchement, c'est joliment bouclé !

Sources

Article écrit avec l'aide de Claude Code, relu et corrigé par moi.

Rejoignez la conversation

Vous devez avoir un compte pour commenter cet article. La création est gratuite et prend moins d'une minute.

  • Le fichier XMLTV à télécharger gratuitement, chaque jour
  • Commenter les articles et répondre aux autres lecteurs
  • Être averti par e-mail des nouveaux articles que vous suivez

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙