Diffie-Hellman

Suivre l’échange public et calculer séparément le secret partagé d’Alice et de Bob avec de petits entiers.

À propos de cet outil

Cet outil pédagogique montre Diffie–Hellman avec de petits entiers. Choisissez un premier p et une racine primitive g modulo p comme paramètres publics du groupe. Alice choisit un exposant privé a et Bob un exposant privé b. Sélectionnez Calculer pour montrer l’échange. Les exemples remplissent les quatre entrées ; éditer une entrée efface l’ancien résultat. Effacer le résultat conserve les entrées. L’ordre du générateur se trouve dans les étapes de calcul.

Alice publie A = gᵃ mod p et Bob publie B = gᵇ mod p. Après l’échange de A et B, Alice calcule S_A = Bᵃ mod p et Bob calcule S_B = Aᵇ mod p. Les deux égalent gᵃᵇ mod p. Les quatre puissances modulaires sont calculées indépendamment, et les deux valeurs finales restent visibles. L’échange public ne consiste qu’en p, g, A et B. Les exposants privés et les résultats sont montrés séparément à chaque rôle pour l’apprentissage ; cette page ne les cache pas au spectateur. Les couleurs de rôle sont des étiquettes, pas un modèle de mélange de couleurs.

Les entrées doivent être des nombres entiers : 11 ≤ p ≤ 997, 2 ≤ g ≤ p−1 et 2 ≤ a,b ≤ p−2. L’outil vérifie que p est premier et que g a l’ordre p−1 : ses puissances engendrent chaque résidu non nul modulo p. Cela utilise délibérément le groupe multiplicatif complet. Diffie–Hellman dans un sous-groupe d’ordre premier plus petit convenable est aussi une construction valide et largement utilisée ; elle est hors du modèle choisi de cet outil. Des exposants privés égaux et une valeur partagée de 1 sont possibles dans ces exemples pédagogiques.

Développez Étapes de calcul pour inspecter A, B, S_A ou S_B. Les bits d’exposant sont traités de gauche à droite, en commençant avec le reste 1 et le préfixe d’exposant 0. Chaque ligne double le préfixe, ajoute le bit courant, élève au carré le reste précédent modulo p, et multiplie par la base modulo p lorsque le bit est 1. Le reste résultant égale la base élevée au préfixe de cette ligne, modulo p. Le tableau a au plus dix lignes pour les exposants pris en charge ; il défile localement si besoin.

Ces petits groupes et exposants choisis sont inadaptés à de vraies clés. Diffie–Hellman de base seul n’authentifie pas l’autre participant et est vulnérable à une attaque de l’homme du milieu. L’outil ne fournit ni génération aléatoire sûre, ni authentification, ni dérivation de clé, ni protocole de production. Les entrées, y compris ces exposants d’exemple visibles, et les étapes choisies sont enregistrées dans le stockage local de ce navigateur. Les exemples calculés retrouvent leur résultat après rechargement ; les brouillons modifiés ou invalides conservent exactement le texte saisi et attendent Calculer. Effacer le résultat conserve les entrées. Chaque champ accepte jusqu’à 64 caractères.

Sources : RFC 2631, §2.1.1, pour les puissances publiques, les calculs indépendants de secret partagé et la construction de sous-groupe d’ordre premier ; MathWorld: Primitive Root, pour l’ordre de générateur de groupe complet. Les tailles de paramètres historiques et les choix de hachage dans RFC 2631 ne sont pas des recommandations de cet outil.