Partager via


Vue d'ensemble de l'algorithme ECDH (Exemple CNG)

Le protocole d'accord de clé ECDH (Elliptic Curve Diffie-Hellman) permet à deux utilisateurs de créer un accord secret partagé.Ils peuvent créer cet accord sur un support public non sécurisé, sans avoir auparavant échangé d'informations confidentielles.L'accord secret partagé permet généralement de dériver du matériel de clé.Un algorithme symétrique, tel que l'algorithme AES (Advanced Encryption Standard), peut utiliser le matériel de clé pour chiffrer les messages suivants.

L'exemple de communication sécurisée CNG (Cryptography Next Generation) illustre les implémentations CNG des algorithmes ECDH et AES.Alice, Bob et Mallory créent des clés de chiffrement dans leurs méthodes Run lorsqu'ils créent des objets Communicator.

Mathématiques ECDH

Le protocole ECDH repose sur deux paramètres publics : p et g.Le paramètre p est un grand nombre premier et le paramètre g est un entier inférieur à p.Ces deux paramètres sont échangés sur une ligne non sécurisée.Une fois qu'Alice et Bob ont reçu les deux paramètres publics, ils sélectionnent des entiers privés.Alice choisit a et Bob choisit b.Ces valeurs constituent des clés privées.

Alice et Bob créent ensuite des clés publiques à l'aide des paramètres publics et de leurs clés privées.Alice utilise (g^a) mod p et Bob (g^b) mod p.Ces clés sont asymétriques car elles ne correspondent pas.

Alice et Bob échangent ces clés publiques et les utilisent pour calculer leur accord secret partagé.Les mathématiques ECDH garantissent qu'Alice et Bob calculent le même accord secret partagé, bien qu'ils ne connaissent pas leurs clés privées respectives.

Notes

Seuls a, b et g^ab = g^ba restent secrets.Toutes les autres valeurs sont publiques.

Toute personne interceptant l'échange pourra copier p, g et les deux clés publiques.Toutefois, il est impossible de générer par calcul un accord secret partagé à partir des quatre valeurs publiques partagées sans connaître les clés privées d'Alice et de Bob.

Il est aussi difficile de déchiffrer un message chiffré par ECDH en force brute (autrement dit, en essayant toutes les clés possibles) que de résoudre le problème du logarithme discret.Cependant, l'algorithme ECDH atteint le même niveau de sécurité avec des clés plus courtes car il repose sur des courbes elliptiques et non sur des courbes logarithmiques.

Exemple ECDH

L'exemple suivant utilise de petits entiers pour illustrer l'algorithme ECDH.

  1. Alice et Bob se mettent d'accord sur un nombre premier p et sur un entier de base g :

    p = 83, g = 8

  2. Alice choisit un entier secret a = 9, puis envoie (g^a) mod p à Bob :

    (8^9) mod 83 = 5

  3. Bob choisit un entier secret b = 21, puis envoie (g^b) mod p à Alice :

    (8^21) mod 83 = 18

  4. Alice calcule ( ( (g^b) mod p)^a) mod p :

    (18^9) mod 83 = 24

  5. Bob calcule ( ( (g^a) mod p)^b) mod p :

    (5^21) mod 83 = 24

Alice et Bob calculent la même valeur (24), car g^(ab) = g^(ba).Cette valeur est l'accord secret partagé.Alice et Bob utilisent cette valeur pour dériver le matériel de clé utilisé par l'algorithme AES pour chiffrer leurs messages.

Cet exemple génère un accord secret partagé d'une valeur de 24.Puisqu'il s'agit d'une petite valeur, un message chiffré pourrait être facilement déchiffré par une attaque en force brute.Dans un scénario réel, p, g, aet b seraient des nombres beaucoup plus grands, et un ordinateur devrait générer l'accord secret partagé correspondant.

Les classes CNG utilisées dans l'exemple de communication sécurisée résument le problème mathématique complexe.Elles vous permettent de vous concentrer sur l'implémentation de solutions de sécurité plutôt que de vous préoccuper des multiplications de grands nombres.

Limitations du protocole

Le protocole d'échange de clé ECDH n'empêche pas les attaques de l'intercepteur, car il n'authentifie pas les expéditeurs des clés publiques.Si une oreille indiscrète (Mallory) intercepte la clé publique d'Alice, elle peut la remplacer par sa propre clé publique et l'envoyer à Bob.Mallory peut également intercepter la clé publique de Bob, la remplacer par la sienne et l'envoyer à Alice.Il peut ensuite déchiffrer facilement tous les messages échangés par Alice et Bob.Il peut modifier les messages, les chiffrer à nouveau avec ses propres clés, puis les envoyer aux destinataires.

Pour résoudre ce problème, Alice et Bob peuvent utiliser des signatures numériques pour signer les clés publiques avant de les échanger.Il existe deux façons d'effectuer cette opération :

  • Utiliser un support sécurisé, tel que la communication vocale ou le courrier papier, pour transmettre une clé de signature numérique entre les deux correspondants

  • Utiliser une autorité de certification publique pour fournir une clé de signature numérique de confiance aux deux correspondants

Dans les deux cas, il faut utiliser un schéma d'authentification externe pour vérifier l'identité des expéditeurs des clés publiques.L'exemple CNG illustre le scénario qui peut se produire si les expéditeurs des clés ne sont pas authentifiés.Il est conçu principalement pour permettre les attaques de sécurité.

Clés symétriques et asymétriques

Les systèmes asymétriques comme ECDH sont très lents.Ils ne sont donc pas utilisés pour chiffrer de longs messages.Dans ce cas, des systèmes symétriques tels que AESi sont utilisés car ils sont beaucoup plus rapides.

Une solution de chiffrement classique utilise un système asymétrique pour dériver un accord secret partagé symétrique.L'accord secret partagé est ensuite utilisé pour dériver le matériel de clé utilisé par un algorithme symétrique pour chiffrer un message.

L'exemple de communication sécurisée CNG représente ce comportement comme suit :

  • Il utilise un algorithme asymétrique, l'implémentation CNG de l'algorithme ECDH (la classe ECDiffieHellmanCng), pour dériver une clé de chiffrement symétrique (l'accord secret partagé).

  • Cette clé est ensuite utilisée par la méthode CNG ECDiffieHellmanCng.DeriveKeyMaterial pour dériver le matériel de clé.L'implémentation CNG de l'algorithme AES symétrique (la classe Aes) utilise le matériel de clé pour chiffrer les messages.

Voir aussi

Concepts

Communication sécurisée Cryptography Next Generation (CNG), exemple

Services de chiffrement