Chaque partie possède un scalaire privé d et un point public Q = d·G ; les deux calculent Z, la coordonnée x de d_A·Q_B = d_B·Q_A. Z n’est pas une clé : il passe par une fonction de dérivation de clé comme HKDF (TLS 1.3), la KDF en une étape (one-step) de SP 800-56C ou la Concat KDF (ECDH-ES de JOSE). Le NIST SP 800-56A Rev. 3 spécifie la primitive et les variantes du schéma (éphémère-éphémère, éphémère-statique, etc.).
Le destinataire doit valider le point du pair : sur la courbe, différent du point à l’infini, dans le bon sous-groupe (SP 800-56A §5.6.2.3). Omettre cette étape ouvre la voie aux attaques par courbe invalide, qui extraient une clé privée statique en quelques centaines de requêtes et qui ont touché l’ECDH-ES de plusieurs bibliothèques JOSE en 2017. La conception de X25519 réduit la vérification au rejet d’un résultat entièrement nul.
Les clés éphémères (ECDHE) assurent la confidentialité persistante et sont les seules qu’utilise TLS 1.3 ; l’ECDH à destinataire statique se retrouve dans ECIES, dans ECDH-ES de JWE et dans HPKE. Les groupes utilisés sont secp256r1, secp384r1, x25519 et x448. ECDH et ECDSA partagent les courbes et les formats de clés, mais SP 800-57 Part 1 recommande de n’utiliser chaque clé que pour un seul usage. Le NIST IR 8547 (projet) propose d’interdire ECDH après 2035 ; les hybrides comme X25519MLKEM768 constituent la voie de migration.