# Échange de clés Diffie-Hellman basé sur les courbes elliptiques

L'échange de clés Diffie-Hellman basé sur les courbes elliptiques (de l'anglais Elliptic curve Diffie–Hellman, abrégé ECDH) est un protocole d'échange de clés anonyme qui permet à deux pairs, chacun ayant un couple de clé privée/publique basé sur les courbes elliptiques, d'établir un secret partagé à travers un canal de communication non sécurisé. Ce secret partagé peut être employé directement comme une clé de chiffrement ou être utilisé pour dériver une autre clé qui, à son tour, peut être utilisée pour chiffrer les communications.
Il s'agit d'une variante du protocole d’échange de clés Diffie-Hellman, utilisant cette fois la loi de groupe qu'on peut définir sur les courbes elliptiques.

## Protocole de mise en place des clés

L'exemple suivant présente la manière dont les clés sont mises en place. Supposons qu'Alice souhaite établir une clé partagée avec Bob, mais que le seul canal de communication à leur disposition est sous écoute par une troisième personne. Initialement, les paramètres du domaine (qui sont $(p,a,b,G,n,h)$ dans le cas premier, ou $(m,f(x),a,b,G,n,h)$ dans le cas binaire) doivent être définis au préalable. De plus, Alice et Bob doivent posséder une paire de clé fonctionnelle et compatible avec la cryptographie sur courbes elliptiques, à savoir une paire composée d'une clé privée $d$ (un nombre entier choisi de manière aléatoire dans l'intervalle $[1,n-1]$) et d'une clé publique $Q$, où $Q=dG$, qui est le résultat de la composition $G$ avec lui-même, $d$ fois. Soit $(d_{A},Q_{A})$ la paire de clés d'Alice et celle de Bob $(d_{B},Q_{B})$. Les deux doivent connaître la clé publique de l'autre pour mettre en place ce protocole.
Alice calcule $(x_{k},y_{k})=d_{A}Q_{B}$ et Bob calcule $(x_{k},y_{k})=d_{B}Q_{A}$. La clé partagée est $x_{k}$ (la coordonnée x du point).
La clé partagée secrète calculée par Bob et Alice est égale, car $d_{A}Q_{B}=d_{A}d_{B}G=d_{B}d_{A}G=d_{B}Q_{A}$.
La seule information à propos de sa clé privée qu'Alice expose est la clé publique associée. Ainsi, aucun autre tiers qu'Alice ne peut déterminer sa clé privée, à moins de résoudre le problème du Logarithme discret de la courbe elliptique. La clé de Bob est sécurisée de la même manière. De ce fait, aucun autre tiers n'est capable de déterminer la clé partagée, car ils ne disposent d'aucune des clés privées. Le seul moyen de calculer la clé partagée est de résoudre le problème de Diffie-Hellman.
Les clés publiques sont soit statiques (et de confiance, via un certificat) ou éphémères (abrégé ECDHE). Les clés éphémères sont temporaires et pas nécessairement authentifiées, impliquant que si une authentification est requise, l'assurance de cette authenticité doit être obtenue par d'autres moyens. L'authentification est nécessaire pour éviter une attaque de l'homme du milieu. Si l'une des clés publiques de Bob ou d'Alice est statique, l'attaque par l'homme du milieu est contrecarrée. Des clés publiques statiques ne procurent ni confidentialité persistante, ni résilience de vol d'identité des clés compromises, parmi d'autres propriétés de sécurité avancées. Les possesseurs des clés statiques privées doivent valider l'autre clé publique.
Bien que le secret partagé puisse être utilisé directement comme clé de chiffrement, il est souvent préférable de le hasher pour retirer les bits de poids faible à cause de l'échange de Diffie-Hellman.

## Article connexe

* Cryptographie sur les courbes elliptiques