Échange de clés cryptographiques
Nous avons précédemment discuté de la différence entre le chiffrement symétrique et asymétrique, et aujourd'hui nous allons parler de la façon dont les clés sont réellement échangées.
En général, les protocoles d'échange de clés cryptographiques ou d'échange de clés cryptées (EKE) fonctionnent en permettant aux deux parties de générer un secret partagé sans le révéler à des tiers. Cela se fait généralement en utilisant une combinaison de cryptographie à clé publique et d'algorithmes mathématiques. Le secret partagé peut alors être utilisé comme clé pour un chiffrement symétrique, ce qui permet aux deux parties de communiquer en toute sécurité.
Usage
Comme la méthode utilise une clé publique, elle ne s'applique naturellement qu'au cryptage asymétrique, car dans le cryptage symétrique, les clés ne sont pas partagées - connues et convenues à l'avance.
L'échange de clés cryptographiques est une méthode d'échange sécurisé de clés cryptographiques sur un réseau. C'est un aspect fondamental de nombreux protocoles cryptographiques, car il permet à deux parties d'établir un secret partagé qui peut être utilisé pour communiquer en toute sécurité.
L'échange est utilisé dans une variété d'applications, y compris la communication sécurisée, les transactions en ligne sécurisées et le contrôle d'accès. Il est souvent utilisé pour établir une connexion sécurisée entre deux parties, comme un client et un serveur, ou entre deux appareils. Ainsi, avant que des fichiers puissent être envoyés en toute sécurité via des protocoles tels que FTPS, HTTPS et SFTP, les deux parties communicantes doivent d'abord s'engager dans un échange de clés.
Aperçu
Dans la forme la plus générale d'EKE, au moins une partie crypte une clé publique éphémère (à usage unique) à l'aide d'un mot de passe et l'envoie à une seconde partie, qui la décrypte et l'utilise pour négocier une clé partagée avec la première partie.
Une autre variante de ce schéma existe, appelée Augmented-EKE. Les méthodes augmentées ont pour objectif supplémentaire de garantir que les données de vérification de mot de passe volées sur un serveur ne peuvent pas être utilisées par un attaquant pour se faire passer pour le client, à moins que l'attaquant ne détermine d'abord le mot de passe (par exemple en effectuant une attaque par force brute sur les données volées).
Les deux algorithmes d'échange de clés les plus populaires sont RSA et Diffie-Hellman (maintenant connu sous le nom de Diffie-Helmlman-Merkle). Il ne serait probablement pas exagéré de dire que l'avènement de ces deux protocoles d'échange clés a accéléré la croissance d'Internet, en particulier sur le plan commercial. En effet, ces deux protocoles permettaient aux clients et aux serveurs, ainsi qu'aux serveurs et aux serveurs, d'échanger des clés cryptographiques sur un support non sécurisé (Internet) et leur permettaient à leur tour d'effectuer des transactions électroniques de manière sécurisée.
Dernièrement, l'émergence de la cryptographie à courbe elliptique a introduit de nouveaux protocoles d'échange comme ECDH (Elliptic Curve Diffie-Hellman) et ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).
Nous nous concentrerons sur la famille Diffie-Hellman, connue sous le nom de DH-EKE, qui a survécu à de multiples attaques au fil des ans et a conduit à des variations améliorées.
Diffie-Hellman
En 1976, Whitfield Diffie et Martin Hellman ont publié un protocole cryptographique appelé échange de clés Diffie – Hellman (D – H) basé sur des concepts développés par le doctorant de Hellman, Ralph Merkle. Le protocole permet aux utilisateurs d'échanger en toute sécurité des clés secrètes même si un adversaire surveille ce canal de communication. Il est basé sur l'idée d'utiliser l'exponentiation dans un champ fini pour générer un secret partagé qui peut être utilisé pour chiffrer et déchiffrer les messages.
Voici un exemple du processus d'échange de clé Diffie-Hellman et tel qu'illustré dans le schéma ci-dessous :
Alice et Bob s'accordent sur un champ fini et un nombre premier dans ce champ (c'est ce qu'on appelle le "module"). Disons qu'ils choisissent le corps fini GF(23), p , et le nombre premier 5, g .
- Alice sélectionne un entier secret, "a", et Bob sélectionne un entier secret, "b". Ces entiers seront utilisés pour générer le secret partagé.
- Alice calcule A = 5^a mod 23 et envoie A à Bob. Bob calcule B = 5^b mod 23 et envoie B à Alice.
- Alice calcule le secret partagé en effectuant le calcul suivant : sharedSecret = B^a mod 23. Bob calcule le secret partagé en utilisant le même calcul : sharedSecret = A^b mod 23.
- Alice et Bob ont maintenant le secret partagé, qu'ils peuvent utiliser comme clé pour chiffrer et déchiffrer les messages.
# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange
# Choose finite field and prime number
field = GF(23)
prime = 5
# Choose secret integer
secretA = 6
# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob
# Receive B from Bob
B = receive from Bob
# Compute shared secret
sharedSecret = (B ^ secretA) mod field
# Bob's side of the key exchange
# Choose secret integer
secretB = 15
# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice
# Receive A from Alice
A = receive from Alice
# Compute shared secret
sharedSecret = (A ^ secretB) mod field
Cette propriété est ce qui permet à Alice et Bob d'établir un secret partagé sans se révéler leurs entiers secrets.
La raison pour laquelle l'échange DH fonctionne est la cryptographie à logarithme discret, qui est basée sur la difficulté de résoudre le problème du logarithme discret.
En bref, il s'agit d'un problème mathématique qui consiste à trouver l'entier « x » dans l'équation « g^x = y mod p », où « g » et « y » sont connus, et « p » est un nombre premier. Ce problème est considéré comme difficile à résoudre car il n'y a pas d'algorithme efficace connu pour trouver la valeur de "x" pour des valeurs arbitraires de "g", "y" et "p".
Dans l'ensemble, bien que Diffie-Hellman soit un protocole d'échange de clés largement utilisé et efficace, il existe cependant plusieurs limitations pratiques, ce qui fait de la courbe elliptique Diffie-Hellman (ECDH) un choix préférable, si possible.
Courbe elliptique Diffie-Hellman (ECDH)
Elliptic Curve Diffie-Hellman (ECDH) est une variante du protocole d'échange de clés Diffie-Hellman qui utilise la cryptographie à courbe elliptique au lieu de l'exponentiation traditionnelle dans un champ fini. ECDH présente plusieurs avantages par rapport à Diffie-Hellman ordinaire :
- L'ECDH est plus efficace : les opérations sur les courbes elliptiques sont généralement plus rapides et nécessitent moins de puissance de calcul que les opérations de champ fini, ce qui rend l'ECDH plus efficace que le Diffie-Hellman ordinaire. En savoir plus sur son fonctionnement et ses avantages dans l' article précédent .
- L'ECDH est plus sûre : La cryptographie à courbe elliptique est généralement considérée comme plus sûre que la cryptographie à champ fini, car elle est plus résistante à certains types d'attaques.
- Les clés ECDH sont plus courtes : étant donné que les opérations sur les courbes elliptiques utilisent des nombres plus petits, les clés ECDH sont généralement plus courtes que les clés Diffie-Hellman ordinaires, ce qui les rend plus faciles à transmettre et à stocker.
- L'ECDH a une taille de clé plus petite : étant donné que les opérations sur les courbes elliptiques sont plus efficaces et sécurisées, l'ECDH peut atteindre le même niveau de sécurité que Diffie-Hellman ordinaire avec une taille de clé plus petite. Cela peut être particulièrement utile dans les applications où la taille de la clé est un facteur limitant, comme dans certains types de périphériques matériels.
Courbe elliptique Diffie-Hellman Ephemeral (ECDHE)
Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) est une variante de Elliptic Curve Diffie-Hellman (ECDH), qui utilise des clés éphémères.
Dans ECDHE, chaque partie génère une nouvelle paire de clés de courte durée pour chaque session, plutôt que d'utiliser une paire de clés statiques de longue durée comme dans ECDH. Cela a plusieurs avantages :
- Sécurité améliorée : comme ECDHE utilise des clés éphémères qui ne sont utilisées que pour une seule session, il est plus résistant à certains types d'attaques, telles que les attaques par rejeu, dans lesquelles un attaquant capture et réutilise une clé d'une session précédente.
- Confidentialité de transmission : dans ECDHE, le secret partagé est dérivé des clés éphémères, qui sont supprimées après la session. Cela signifie que même si un attaquant obtient une copie des clés éphémères, il ne pourra pas déchiffrer les communications passées, car le secret partagé n'est plus connu.
- Gestion simplifiée des clés : dans ECDHE, chaque partie génère une nouvelle paire de clés pour chaque session, plutôt que de gérer une paire de clés statiques à longue durée de vie. Cela peut simplifier la gestion des clés et réduire le risque de compromission des clés.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































