Aller au contenu

X25519

Cryptographie

Fonction d'échange de clés de type Diffie-Hellman sur la courbe elliptique Curve25519, décrite dans la RFC 7748. Deux parties y dérivent un secret commun à partir de clés publiques de 32 octets.

Principe : Chaque partie tire un scalaire secret, le multiplie par un point de base fixé, publie le résultat, puis multiplie la clé publique de l'autre par son propre secret. Les deux obtiennent le même point, dont on ne garde que la coordonnée utile.

Conçue contre l'erreur : L'échelle de Montgomery calcule en temps constant et toute chaîne de 32 octets est acceptée comme clé publique, ce qui supprime des classes entières de bugs de validation. L'humanité ayant démontré qu'elle oublie toujours de vérifier un point, on a fini par dessiner une courbe qui se passe de sa vigilance.

Détails à respecter : Le scalaire est « clampé » (quelques bits forcés) avant usage, et un secret partagé entièrement nul signale un point de petit ordre à rejeter. Le résultat brut ne sert jamais de clé directement : il passe par une fonction de dérivation.

Où on la croise : TLS 1.3, SSH, WireGuard, Signal et HPKE l'emploient comme échange par défaut ou recommandé, pour une sécurité d'environ 128 bits.

Ce qui arrive si on s'en passe

Utiliser X25519 en négligeant ses détails, c'est rouvrir ce que la courbe avait fermé : un secret partagé entièrement nul, signe d'un point de petit ordre, doit être rejeté, faute de quoi un attaquant peut imposer un secret qu'il connaît d'avance. Employer le résultat brut directement comme clé, sans fonction de dérivation, donne une clé dont les bits ne sont pas uniformément répartis. Se passer d'un échange éphémère de ce type au profit de clés statiques prive enfin les sessions de la confidentialité persistante que TLS 1.3, SSH ou WireGuard en tirent. La courbe a été dessinée pour se passer de la vigilance humaine ; elle n'a pas pu tout à fait se passer de la lecture de sa notice.

Explication de la marmotte

Deux personnes veulent se mettre d'accord sur un mot de passe secret, mais tout ce qu'elles se disent passe devant des curieux. Chacune choisit en cachette un grand nombre, fait un calcul avec, et envoie seulement le résultat à l'autre. Ensuite, chacune refait le même calcul en mélangeant le résultat reçu avec son propre nombre caché. Surprise : elles tombent sur la même valeur, alors que les curieux, qui ont tout vu passer, sont incapables de la retrouver. Cette recette précise a été pensée pour être rapide et difficile à mal utiliser, ce qui explique qu'on la trouve dans énormément de connexions sécurisées.

Où ce terme est utilisé

← Tout le glossaire