Les deux parties génèrent un nouveau scalaire privé à chaque connexion, échangent des valeurs publiques (32 octets pour X25519, 65 pour P-256 non compressé) et dérivent le secret partagé, puis oublient les scalaires. En TLS 1.2, ECDHE apparaît dans les noms de suites (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) et le serveur signe ses paramètres ; en TLS 1.3, chaque handshake sans PSK l’utilise, ou utilise un échange hybride.
Certaines implémentations réutilisent une clé « éphémère » pendant un certain temps pour des raisons de performance, ce qui affaiblit la confidentialité persistante et, si les points ne sont pas validés, ouvre la voie aux attaques par courbe invalide. Sur un cœur d’Apple M4 Max, OpenSSL 3.6.5 effectue environ 52 000 opérations X25519 et 40 000 opérations P-256 par seconde : de vraies clés par connexion coûtent donc peu.