Elliptic_curve_Diffie–Hellman - Kasimashi/Systemes-embarques GitHub Wiki

Elliptic curve Diffie–Hellman

Elliptic Curve Diffie Hellman (ECDH) est utilisé pour échanger les clefs entre les acteurs

Dans cet exemple nous allons utiliser la courbe secp256k1 (utilisé dans les Bitcoin)

Pour générer la courbe les données sont les suivantes :

$y^2=x^3+7$ avec un nombre premier $p=0xFFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F = 2^{256}−2^{32}−2^9−2^8−2^7−2^6−2^4−1$

Toutes les opérations vont être modulo p.

Bob va générer sa clef publique et sa clef privée en prenant un point sur la courbe. La clef privée elle est un nombre aléatoire ( $d_B$ ) et la clef public de Bob sera $Q_B$ : $Q_B = d_B \times G$

Alice va faire de même avec sa clef public ( $Q_A$ ) et sa clef privée ( $d_A$ )

$Q_A = d_A \times G$

Ils vont échanger ensuite leurs clef publiques. Alice va ensuite utiliser la clef public de Bob et sa clef privée pour calculer: La clef partagée :

$SharekeyAlice=d_A \times Q_B$

Qui est la même chose que

$SharekeyAlice=d_A \times d_B \times G$

De même Bob va utiliser la clef publique d'Alice, et sa clef privée pour déterminer une clef partagée :

$SharekeyBob =d_B \times Q_A$

Qui est la même chose que

$SharekeyBob=d_B \times d_A \times G$

Les clefs partagées sont donc identiques

L'image suivante illustre le processus :

image

Example

image