ECDH sur une petite courbe

Calculer séparément le point de courbe partagé d’Alice et de Bob et explorer l’ordre du point de base.

À propos de cet outil

Cet outil illustre Diffie–Hellman sur courbe elliptique sur la courbe fixe y² = x³ + 2x + 3 sur le corps fini F₉₇. Les coordonnées sont des résidus 0…96 ; l’arithmétique se fait modulo 97. Le tracé contient 99 points finis et discrets, pas des échantillons d’une courbe réelle continue. Avec le point à l’infini O, la courbe a 100 points. O est l’identité du groupe et n’a pas de coordonnées x/y finies : ce n’est pas (0,0) et il n’est jamais dessiné à une position de pixel.

Le point de base fixe est G = (3,6). Son cycle est 0G = O, G = (3,6), 2G = (80,10), 3G = (80,87), 4G = (3,91), et 5G = O. Ainsi ord(G) = 5, tandis que toute la courbe a pour ordre #E = 100. Le cofacteur est #E/ord(G) = 20. Ces trois quantités décrivent des choses différentes. Les scalaires privés a et b doivent être des entiers de 1 à 4, les scalaires non nuls sous l’ordre du point de base. Ils ne sont jamais réduits en silence modulo 97 ni arrondis.

Alice calcule son point public A = aG et Bob calcule B = bG. Ils échangent A et B. Alice calcule alors S_A = aB et Bob calcule S_B = bA indépendamment ; les deux égalent abG. Le tableau montre les quatre multiplications scalaires avec les entrées réelles et les deux points finaux. La multiplication ici signifie l’addition de groupe de courbe elliptique répétée, pas la multiplication de chaque coordonnée. Dans cette page pédagogique, les entrées privées et les résultats sont visibles pour suivre les calculs.

Sélectionnez Calculer pour construire le tracé et l’échange. Les trois exemples utilisent a/b = 2/3, 1/4 et 2/2 ; le deuxième donne des points publics inverses et le troisième des points publics égaux. Éditer l’un ou l’autre scalaire privé ou choisir un autre exemple efface l’ancien résultat. Effacer le résultat conserve les entrées. Le vert marque G ; le A d’Alice, le B de Bob et le point partagé ont des anneaux de tailles différentes. Les anneaux qui se chevauchent conservent l’identité de chaque rôle, avec une légende textuelle et des coordonnées numériques.

Déplacez le curseur entier sous le tracé de 0 à 5. Ouvrez Multiples de G pour le tableau du cycle, l’ordre du groupe et le cofacteur. L’anneau sonde orange marque kG, et la ligne de tableau correspondante est mise en évidence. À k = 0 ou 5 l’anneau est absent et O est nommé hors du tracé. Seule la sonde change ; l’ensemble de points finis et l’échange restent fixes. Les entrées brutes, y compris ces scalaires d’exemple visibles, le multiple choisi et les détails ouverts sont enregistrés dans le stockage local de ce navigateur. Un rechargement restaure les exemples calculés avec leur tracé ; les brouillons modifiés ou invalides gardent exactement le texte saisi et attendent Calculer. Chaque champ accepte jusqu’à 64 caractères.

Cette très petite courbe est volontairement non sûre et n’est pas un jeu de paramètres ECDH recommandé ou sûr. L’outil montre un point partagé ; il n’implémente ni authentification, ni génération sûre de scalaire aléatoire, ni fonction de dérivation de clé, ni protocole de chiffrement de production. Les scalaires d’exemple peuvent être stockés dans les réglages locaux de l’app. Dans une primitive ECDH réelle, le point à l’infini doit être rejeté comme résultat partagé, et la norme dérive alors un élément de corps de la coordonnée x du point. N’utilisez pas ces exemples comme clés.

Source : SEC 1: Elliptic Curve Cryptography, Version 2.0, §2.2.1 pour le groupe de courbe et l’identité ; §3.1.1 pour les paramètres de domaine, l’ordre et le cofacteur ; §3.2.1 pour les scalaires privés et les points publics ; §3.3.1 pour la primitive ECDH et le rejet de O.