ECC en pratique
ECDH : échange de clés sur courbe elliptique
Le premier usage des courbes elliptiques reprend l'idée fondatrice de la clé publique : se mettre d'accord sur un secret commun sans jamais l'avoir échangé. C'est la version elliptique de Diffie-Hellman, appelée ECDH (Elliptic Curve Diffie-Hellman).
Les paramètres publics
Tout le monde se met d'accord au préalable sur :
- une courbe elliptique précise (ses paramètres
a,b, et le corps fini sur lequel on travaille) ; - un point générateur
G, fixé et public, situé sur la courbe.
Ces éléments ne sont pas secrets : ils sont publiés dans des standards, connus de tous, y compris de l'espion.
Le déroulement de l'échange
Alice et Bob veulent partager un secret. Chacun choisit un scalaire secret et en publie la multiplication par G :
- Alice choisit un entier secret
a, calculeA = a·Get envoieAà Bob. - Bob choisit un entier secret
b, calculeB = b·Get envoieBà Alice. - Alice calcule
a·B. Bob calculeb·A.
Or ces deux points sont identiques :
a·B = a·(b·G) = (a·b)·G = b·(a·G) = b·A
Ils ont donc obtenu le même point secret S = (a·b)·G, sans jamais l'avoir transmis. On en dérive ensuite une clé symétrique (en hachant les coordonnées de S).
ALICE canal public BOB
secret a secret b
| |
| A = a·G ───────────────────────────────► |
| ◄─────────────────────────────── B = b·G |
| |
calcule a·B calcule b·A
| |
└──────────► secret commun S = a·b·G ◄─────────────────┘
Pourquoi l'espion échoue
Un espion qui écoute la ligne voit passer tout ce qui est public : la courbe, le générateur G, ainsi que A = a·G et B = b·G. Pour reconstituer S, il lui faudrait connaître a (à partir de A et G) ou b (à partir de B et G).
Mais retrouver a à partir de A = a·G, c'est exactement résoudre l'ECDLP — infaisable. L'espion est bloqué :
Ce que voit l'espion : G, A = a·G, B = b·G
Ce qu'il veut : S = a·b·G
Ce qui l'en empêche : trouver a ou b exige de casser l'ECDLP
Additionner simplement A + B donnerait (a + b)·G, ce qui n'est pas le secret a·b·G. Il n'existe aucun raccourci connu pour « multiplier » deux points entre eux de la bonne façon sans connaître l'un des scalaires.
Un secret éphémère
En pratique, a et b sont souvent régénérés à chaque session (ECDH éphémère, noté ECDHE). D'où une propriété précieuse, la confidentialité persistante (forward secrecy) : même si la clé à long terme d'un serveur est un jour compromise, les communications passées, chiffrées avec des secrets éphémères détruits depuis, restent illisibles. C'est le mode d'échange par défaut de TLS 1.3, donc du HTTPS de votre navigateur.
En résumé
- ECDH est la version elliptique de Diffie-Hellman.
- Les paramètres publics sont une courbe et un point générateur
G. - Alice publie
a·G, Bob publieb·G; le secret commun esta·b·G = a·(b·G) = b·(a·G). - L'espion voit
a·Getb·Gmais ne peut obtenira·b·Gsans casser l'ECDLP. - En mode éphémère (ECDHE), l'échange offre la confidentialité persistante.

