Diffie-Hellman
Portant le nom de ses deux créateurs, la méthode DH est, en cryptographie, une méthode d’échange de clés* dans un système à clé publique*. Cette technique permet donc à deux utilisateurs (Alice* et Bob*) d’échanger des clés via un support non sécurisé. L’IETF* standardise la méthode pour l’Internet en 1999 dans la RFC2631. Le principe repose sur des notions d’arithmétique élémentaires et l’existence de fonctions dites « à sens unique ». Ainsi, il est facile d’élever un nombre à une puissance mais il est beaucoup plus difficile de faire l’opération inverse. Ce problème dit du calcul du logarithme discret devient particulièrement difficile avec des nombres très grands dans des ensembles mathématiques possédant des propriétés limitées. Dans l’échange Diffie-Hellman c’est un nombre choisi en commun et élevé à la puissance « n » qui sera transmis sur le canal non sécurisé. Ainsi, il sera très difficile à Eve de retrouver le nombre partagé entre Alice et Bob car il lui faudra factoriser le grand nombre intercepté.
Pour aller plus loin Un peu de mathématiques…
Rappel sur les nombres premiers et le modulo : Un nombre est dit premier si et seulement si c’est un entier naturel qui n’admet que deux diviseurs entiers positifs (1 et lui-même). Les nombres premiers sont essentiels en arithmétique car le théorème de factorisation unique (ou théorème fondamental de l’arithmétique) stipule que : tout entier strictement positif peut être écrit comme un produit de nombres premiers d’une unique façon, à l’ordre près des facteurs. Une autre notion est essentielle dans la méthode Diffie-Hellman, il s’agit du reste de la division euclidienne : cette opération est appelé modulo. Ainsi, si a et n sont deux entiers naturels, on notera a mod n le reste de la division euclidienne de a par n.
Le déroulement de l’échange entre Alice et Bob : Pour engager leur échange, Alice et Bob doivent préalablement choisir un nombre premier p et une base g.
- Alice choisit un nombre secret a (une clé secrète)
- Alice effectue le calcul ga mod p (donc élève g à la puissance a, puis calcule le reste de la division euclidienne de ga par p). Le résultat de ce calcul, noté A est envoyé à Bob sur le canal non sécurisé.
- De son côté Bob choisit également un nombre entier secret b, il effectue un calcul identique à Alice avec cet entier : gb mod p et transmet vers Alice le résultat de son calcul noté B.
- Alice reçoit B et calcule k=(B)a mod p qui deviendra la clé de chiffrement (clé secrète partagée)
- Bob effectue de son côté le calcul k=(A)b mod p. Alice et Bob ont maintenant calculés une clé de chiffrement commune (clé secrète partagée) car (B)a mod p = (gb mod p)a mod p = gab mod p = (ga mod p )b mod p = (A)b mod p ! Ainsi pour un observateur malveillant, présent à l’écoute sur le canal de communication (Eve ou Max), et ayant intercepté cet échange il sera extrêmement difficile (au sens mathématique) de factoriser A et B pour espérer en déduire la clés commune k. Ainsi la sécurité de la méthode repose sur la difficulté de calculer k à partir de gamod p et de gbmod p lorsque p est grand car la fonction f(x) = gx mod p est une fonction à sens unique.
Les limites du Diffie Hellman ? Si les mathématiques qui sous tendent la méthode sont solides, la procédure d’échange de clé Diffie Hellman est toutefois sensible aux attaques dites homme du milieu* (man in the middle). En effet si Eve ne peut, par la simple interception des échanges « casser » la clé, il lui suffit de calculer sa propre clé k1 et de la transmettre à Alice puis une clé k2 pour la transmission vers Bob. Lorsqu’Alice croyant communiquer avec Bob envoie son message chiffré, Eve le déchiffre, puis le chiffre à nouveau vers Bob. De ce fait, Eve intercepte la totalité du flux chiffré entre Alice et Bob.