Définition de l'algorithme de Diffie-Hellman
Qu’est-ce que l’algorithme de Diffie-Hellman ?
Diffie-Hellman est un algorithme cryptographique conçu pour établir une clé secrète partagée sur un canal public. Cela est essentiel pour les applications qui utilisent le chiffrement symétrique pour sécuriser les messages, comme le protocole TLS (Transport Layer Security) ou un réseau privé virtuel (VPN).
L’histoire de Diffie-Hellman
L’algorithme de Diffie-Hellman est l’une des toutes premières implémentations du chiffrement asymétrique. Il tire son nom des deux chercheurs qui l’ont publié pour la première fois en 1976 : Whitfield Diffie et Martin Hellman. Bien que Diffie et Hellman soient considérés comme les principaux cerveaux derrière cette technologie, d’autres contributeurs sont également reconnus pour son développement. Ralph Merkle est l’un des contributeurs les plus connus, et des chercheurs des services de renseignement du Royaume-Uni sont aussi crédités de son développement. Les travaux de Merkle ont précédé ceux de Diffie et Hellman, mais sont demeurés classifiés jusqu’après leur découverte.
Comment fonctionne Diffie-Hellman ?
Diffie-Hellman est un exemple d’algorithme cryptographique asymétrique. Chaque utilisateur — communément appelé Alice et Bob — possède une clé privée et une clé publique associée. Diffie-Hellman tire parti des propriétés des exposants et comprend les étapes suivantes :
- Alice et Bob conviennent publiquement d’un module premier, p, et d’une base, g.
- Alice choisit aléatoirement une clé privée, a, inférieure à p-2 et génère sa clé publique sous la forme A=g^a. De même, les clés privée et publique de Bob sont respectivement b et B=g^b.
- Alice et Bob échangent publiquement leurs clés publiques, A et B.
- Alice et Bob génèrent la clé partagée en combinant la clé publique de l’autre avec leur clé privée. Par exemple, Alice calcule S = B^a (mod p) et Bob calcule S=A^b (mod p).
Alice et Bob devraient obtenir la même valeur pour S grâce aux propriétés de l’exponentiation. Par exemple, S = B^a = (g^b)^a = g^(a*b) = (g^a)^b = (A^b).
Avantages et inconvénients de Diffie-Hellman
Diffie-Hellman permet à deux parties de générer une clé secrète partagée sur un canal public, ce qui est utile dans divers contextes. De plus, il peut être conçu pour offrir la confidentialité persistante parfaite, où chaque message possède une clé de chiffrement unique. Ainsi, si la clé privée d’un utilisateur est compromise, un attaquant ne peut toujours pas lire les messages antérieurs. Le principal inconvénient de Diffie-Hellman est sa vulnérabilité aux attaques de l’intercepteur (MitM). Par exemple, supposons qu’un attaquant, Charlie, intercepte la clé publique de Bob en route vers Alice et y substitue sa propre clé publique, C. Le cas échéant, Alice calculera la clé secrète comme S’ = C^a, une valeur que Charlie peut lui aussi calculer. Si Charlie fait de même avec Bob, il disposera des clés secrètes utilisées par les deux parties pour chiffrer leurs messages. Cela permettrait à Charlie d’intercepter un message d’Alice, de le déchiffrer, puis de le rechiffrer avec la clé de Bob après l’avoir lu (et potentiellement modifié). Il pourrait aussi faire la même chose dans l’autre sens pour les messages de Bob vers Alice.
Conclusion
Diffie-Hellman est un exemple précoce d’algorithme cryptographique asymétrique appliqué aux échanges de clés. Grâce à lui, deux parties peuvent établir une clé secrète partagée sur un canal public non fiable.
Équipe KZero
Découvrez davantage de contenu instructif rédigé par l’équipe compétente de KZero dans les sections blogue et guides de notre site.