Qu'est-ce que l'échange de clés Diffie-Hellman et comment fonctionne-t-il ?
L'échange de clés Diffie-Hellman a eu lieul'un des développements les plus importants dans la cryptographie à clé publiqueet il est encore fréquemment implémenté dans une gamme de différents protocoles de sécurité actuels.
Il permet à deux parties qui ne se sont jamais rencontrées auparavant d'établir en toute sécurité une clé qu'elles peuvent utiliser pour sécuriser leurs communications. Dans cet article, nous expliquerons à quoi il sert, comment il fonctionne étape par étape, ses différentes variantes, ainsi que les considérations de sécurité à prendre en compte afin de le mettre en œuvre en toute sécurité.
Qu'est-ce que l'échange de clés Diffie-Hellman ?
L'échange de clés Diffie-Hellman a été lepremière méthode largement utilisée pour développer et échanger des clés en toute sécurité sur un canal non sécurisé.
Cela ne semble peut-être pas si excitant ou révolutionnaire dans les termes ci-dessus, donnons donc un exemple qui explique pourquoi l'échange de clés Diffie-Hellman a été une étape si importante dans le monde de la cryptographie et pourquoi il est encore si fréquemment utilisé aujourd'hui.
Disons que vous êtes un espion top secret et que vous devez envoyer des informations importantes à votre siège.Comment empêcheriez-vous vos ennemis de s’emparer du message ?
La solution la plus courante serait de chiffrer le message avec un code. Le moyen le plus simple consiste à organiser à l'avance le type de code et de clé que vous envisagez d'utiliser, ou à le faire via un canal de communication sécurisé.
Disons que vous êtes un espion particulièrement mauvais et que vous et votre siège décidez d’utiliser un chiffrement par décalage faible pour coder vos messages. Dans ce code, chaque « a » devient « b », chaque « b » devient « c », chaque « c » devient « d », et ainsi de suite, jusqu'à ce que le « z » devienne un « a ».
Sous ce chiffre de décalage, le message « Allons dîner » devient « Mfu’t hfu ejoofs ». Heureusement, dans notre situation hypothétique, vos adversaires sont tout aussi incompétents que vous et sont incapables de déchiffrer un code aussi simple, ce qui les empêche d'accéder au contenu du message.
Mais que se passe-t-il si vous ne pouvez pas convenir au préalable d’un code avec votre destinataire ?
Disons que vous souhaitez communiquer avec un espion d’une nation alliée que vous n’avez jamais rencontré auparavant. Vous ne disposez pas d’un canal sécurisé pour leur parler. Si vous ne cryptez pas votre message, tout adversaire qui l’intercepter pourra en lire le contenu. Si vous le cryptez sans communiquer le code à l’allié, l’ennemi ne pourra pas le lire, mais l’allié non plus.
Ce problème était l’une des plus grandes énigmes de la cryptographie jusque dans les années 1970 :
Comment pouvez-vous échanger des informations en toute sécurité avec quelqu’un si vous n’avez pas eu la possibilité de partager la clé à l’avance ?
L'échange de clés Diffie-Hellman a été le premier mécanisme utilisé publiquement pour résoudre ce problème. L'algorithme permet à ceux qui ne se sont jamais rencontrés auparavant de créer en toute sécurité une clé partagée, même sur un canal non sécurisé que des adversaires peuvent surveiller.
L'histoire de l'échange de clés Diffie-Hellman
L'échange de clés Diffie-Hellman trouve ses racines dans les années 1970. Bien que le domaine de la cryptographie se soit considérablement développé au début du XXe siècle, ces progrès se sont principalement concentrés dans le domaine de la cryptographie à clé symétrique.
Ce n’est qu’en 1976 que les algorithmes à clé publique ont émergé dans la sphère publique, lorsque Whitfield Diffie et Martin Hellman ont publié leur papier ,Nouvelles orientations en cryptographie. La collaboration a décrit les mécanismes derrière un nouveau système, qui serait connu sous le nom deÉchange de clés Diffie-Hellman.
Le travail s'inspire en partie des développements antérieurs réalisés par Ralph Merkle. La dite Les énigmes de Merkle impliquent qu’une partie crée et envoie un certain nombre d’énigmes cryptographiques à l’autre. La résolution de ces énigmes nécessiterait une quantité modérée de ressources informatiques.
Le destinataire choisirait au hasard un puzzle à résoudre, puis déploierait les efforts nécessaires pour le terminer.Une fois l'énigme résolue, un identifiant et une clé de session sont révélés au destinataire. Le destinataire transmet ensuite l'identifiant à l'expéditeur d'origine, ce qui permet à l'expéditeur de savoir quelle énigme a été résolue.
Puisque l'expéditeur d'origine a créé les énigmes, l'identifiant lui permet de savoir quelle clé de session le destinataire a découverte, et les deux parties peuvent utiliser cette clé pour communiquer de manière plus sécurisée. Si un attaquant écoute l'interaction, il aura accès à toutes les énigmes, ainsi qu'à l'identifiant que le destinataire transmet à l'expéditeur d'origine.
L'identifiant n'indique pas à l'attaquant quelle clé de session est utilisée, la meilleure approche pour déchiffrer les informations est donc derésolvez toutes les énigmes pour découvrir la bonne clé de session. Étant donné que l’attaquant devra résoudre en moyenne la moitié des énigmes, il lui sera beaucoup plus difficile de découvrir la clé que pour le destinataire.
Cette approche offre plus de sécurité, mais elle est loin d’être une solution parfaite. L'échange de clés Diffie-Hellman a repris certaines de ces idées et les a rendues plus complexes afin de créer une méthode sécurisée de cryptographie à clé publique.
Bien qu'il soit désormais connu sous le nom d'échange de clés Diffie-Hellman, Martin Hellmann a proposé que l'algorithme soit plutôt nommé échange de clés Diffie-Hellman-Merkle, pour refléter le travail effectué par Ralph Merkle en faveur de la cryptographie à clé publique.
On pensait publiquement que Merkle, Hellman et Diffie étaient les premiers à avoir développé la cryptographie à clé publique jusqu'en 1997, lorsque le gouvernement britannique a déclassifié les travaux réalisés au début des années 1970 parJames Ellis, Clifford Cox et Malcolm Williamson.
Il s'avère que le trio a proposé le premier schéma de chiffrement à clé publique entre 1969 et 1973, mais leur travail est resté classifié pendant deux décennies. Elle a été menée sous l’égide du Government Communication Quarters (GCHQ), une agence de renseignement britannique.
Leur découverte était en fait la Algorithme RSA , donc Diffie, Hellman et Merkle étaient toujours les premiers à développer l'échange de clés Diffie-Hellman, mais ne sont plus les premiers inventeurs de la cryptographie à clé publique.
Où l'échange de clés Diffie-Hellman est-il utilisé ?
L'objectif principal de l'échange de clés Diffie-Hellman est dedévelopper en toute sécurité des secrets partagés qui peuvent être utilisés pour dériver des clés. Ces clés peuvent ensuite être utilisées avec des algorithmes à clés symétriques pour transmettre des informations de manière protégée.. Les algorithmes symétriques ont tendance à être utilisés pour chiffrer la majeure partie des données car ils sont plus efficaces que les algorithmes à clé publique.
Techniquement, l'échange de clés Diffie-Hellman peut être utilisé pour établir des clés publiques et privées. Cependant, dans la pratique, c’est le RSA qui a tendance à être utilisé à sa place. En effet, l'algorithme RSA est également capable de signer des certificats de clé publique, alors que l'échange de clés Diffie-Hellman ne l'est pas.
L'algorithme ElGamal, qui a été largement utilisé dans PGP, est basé sur l'échange de clés Diffie-Hellman, donc tout protocole qui l'utilise implémente effectivement une sorte de Diffie-Hellman.
L'échange de clés Diffie-Hellman est l'une des méthodes les plus courantes pour distribuer des clés en toute sécurité.fréquemment implémenté dans les protocoles de sécurité tels que TLS, IPsec, SSH, PGP et bien d'autres. Cela en fait une partie intégrante de nos communications sécurisées.
Dans le cadre de ces protocoles, l'échange de clés Diffie-Hellman est souvent utilisé pour sécuriser votre connexion à un site Web, pour accéder à distance à un autre ordinateur et pour envoyer des e-mails cryptés.
Comment fonctionne l'échange de clés Diffie-Hellman ?
L'échange de clés Diffie-Hellman est complexe et il peut être difficile de comprendre comment il fonctionne.Il utilise de très grands nombres et beaucoup de mathématiques, quelque chose que beaucoup d'entre nous redoutent encore après ces longues et ennuyeuses leçons de lycée.
Pour rendre les choses un peu plus faciles à comprendre,nous commencerons par expliquer l'échange de clés Diffie-Hellman avec une analogie. Une fois que vous aurez une idée globale de son fonctionnement, nous passerons à une description plus technique des processus sous-jacents.
La meilleure analogie avec le schéma Diffie-Hellman est de penser àdeux personnes mélangeant de la peinture. Utilisons le standard de cryptographie et disons que leurs noms sont Alice et Bob.Ils sont tous les deux d'accord sur une couleur aléatoire pour commencer. Disons qu'ils s'envoient un message etchoisir le jaune comme couleur commune, tout comme dans le schéma ci-dessous :
Ils définissent leur propre couleur. Ils ne disent pas à l’autre partie leur choix. Disons qu'Alice choisit rouge , tandis que Bob choisit un bleu légèrement verdâtre .
L'étape suivante consiste pour Alice et Bob à mélanger leur couleur secrète (rouge pour Alice, bleu verdâtre pour Bob) avec le jaune sur lequel ils se sont mis d'accord. D'après le schéma, Alice se retrouve avec un mélange orangé , alors que le résultat de Bob est un bleu plus profond .
Une fois le mixage terminé, ils envoient le résultat à l’autre partie.Alice reçoit le bleu plus profond, alors queBob reçoit la peinture orange.
Une fois qu’ils ont reçu le résultat mitigé de leur partenaire, ils y ajoutent ensuite leur couleur secrète.Alice prend le bleu plus profond et ajoute sa peinture rouge secrète, alors queBob ajoute son bleu verdâtre secret au mélange orange qu'il vient de recevoir.
Le résultat?Ils sortent tous les deux de la même couleur, qui dans ce cas est un brun dégoûtant. Ce n’est peut-être pas le genre de couleur avec laquelle vous voudriez peindre votre salon, mais c’est néanmoins une couleur partagée. Cette couleur partagée est appelée secret commun .
La partie essentielle de l'échange de clés Diffie-Hellman est que les deux parties aboutissent au même résultat, sans jamais avoir besoin d'envoyer l'intégralité du secret commun via le canal de communication.. Choisir une couleur commune, leurs propres couleurs secrètes, échanger le mélange puis ajouter à nouveau leur propre couleur, donne aux deux parties un moyen d'arriver au même secret commun sans jamais avoir à tout transmettre.
Si un attaquant écoute l'échange, tout ce à quoi il peut accéder est la couleur jaune commune avec laquelle Alice et Bob commencent, ainsi que les couleurs mélangées échangées. Puisque cela se fait en réalité avec des chiffres énormes au lieu de peinture,ces informations ne suffisent pas à l’attaque pour discerner soit les couleurs secrètes initiales, soit le secret commun(techniquement, il est possible de calculer le secret commun à partir de ces informations, mais dans une implémentation sécurisée de l'échange de clés Diffie-Hellman, cela prendrait un temps et des ressources informatiques irréalisables pour le faire).
Cette structure de l’échange de clés Diffie-Hellman est ce qui le rend si utile.Il permet aux deux parties de communiquer via une connexion potentiellement dangereuse tout en trouvant un secret partagé qu'elles peuvent utiliser pour créer des clés de cryptage pour leurs futures communications.. Peu importe si des attaquants écoutent, car le secret partagé complet n’est jamais envoyé via la connexion.
Les détails techniques de l'échange de clés Diffie-Hellman
Il est temps de faire quelques mathématiques…
Ne vous inquiétez pas, nous allons y aller lentement et essayer de rendre l’ensemble du processus aussi facile à comprendre que possible. Cela suit un principe similaire à l'analogie présentée ci-dessus, mais au lieu de mélanger et d'envoyer des couleurs,le schéma Diffie-Hellman effectue en fait des calculs basés sur des nombres premiers exceptionnellement grands, puis les envoie.
Pour garantir la sécurité, il est recommandé que leprime (p) fait au moins 2048 bits, qui est l'équivalent binaire d'un nombre décimal d'environ cette taille :
415368757628736598425938247569843765827634879128375827365928736 842736847289385729837592834759348759384759284759287395872 49587 29873958729835792875982795837529876348273685729843579348795827 93857928739548772397592837592478593867045986792384737 8 26735267 3547623568734869386945673456827659498063849024875809603947902 79459827301874397592846209502937592870495029380589 20 983945872 0948602984912837502948019371092480193581037995810937501938507913 957109375970193850891039510730587103937019347 019 38091803984091804 98109380198501398401983509183501983091079180395810395190395180935 81093850198401935801938401983409180 9385 1098309180019
Pour éviter que la tête de quiconque n’explose, nous allons parcourir cette explication avec des nombres beaucoup plus petits. Soit conscient quel'échange de clés Diffie-Hellman ne serait pas sécurisé s'il utilisait des nombres aussi petits que ceux de notre exemple. Nous n'utilisons que de très petits nombres pour démontrer le concept de manière plus simple.
Dans la forme la plus élémentaire de l'échange de clés Diffie-Hellman,Alice et Bob commencent par décider mutuellement de deux numéros pour commencer., par opposition à la peinture commune unique dans l'exemple ci-dessus. Ceux-ci sontle module (p) et le socle (g).
En utilisation pratique,le module (p) est un très grand nombre premier, alors quela base (g) est relativement petit pour simplifier les calculs. La base (g) est dérivé d'un groupe cyclique (g) qui est normalement généré bien avant que les autres étapes n'aient lieu.
Pour notre exemple, disons que le module (p) est 17 , tandis que la base (g) est 4 .
Une fois qu'ils ont décidé d'un commun accord de ces numéros, Alice choisit un numéro secret ( un ) pour elle-même, tandis que Bob choisit son propre numéro secret ( b ). Disons qu'ils choisissent :
un= 3
b= 6
Alice effectue alors le calcul suivant pour lui donner le numéro qu'elle enverra à Bob :
A = guncontrep
Dans le calcul ci-dessus, contre signifie une opération modulo. Il s’agit essentiellement de calculs permettant de déterminer le reste après avoir divisé le côté gauche par le côté droit. Par exemple:
15 contre 4 = 3
Si vous comprenez comment fonctionnent les opérations modulo, vous pouvez les effectuer vous-même dans les calculs suivants, sinon vous pouvez utiliser un calculateur en ligne .
Alors mettons nos chiffres dans la formule :
UN= 43vers le 17
UN= 64 contre 17
UN= 13
Quand on fait la même chose pour Bob, on obtient :
B= 46vers le 17
B= 4096 contre 17
B= 16
Alice envoie ensuite son résultat (UN) à Bob, tandis que Bob envoie sa figurine (B) à Alice. Alice calcule ensuite le secret partagé (s) en utilisant le numéro qu'elle a reçu de Bob (B) et son numéro secret (un), en utilisant la formule suivante :
s=Buncontrep
s= 163vers le 17
s= 4,096 contre 17
s= 16
Bob effectue alors ce qui est essentiellement le même calcul, mais avec le numéro qu'Alice lui a envoyé (UN), ainsi que son propre numéro secret (b) :
s=UNbcontrep
s= 136vers le 17
s= 4 826 809 contre 17
s= 16
Comme vous pouvez le constater, les deux parties ont obtenu le même résultat pours, 16 . C'est le secret partagé, que seuls Alice et Bob connaissent. Ils peuvent ensuite l'utiliser pour configurer une clé de cryptage symétrique, leur permettant d'envoyer des informations entre eux en toute sécurité de manière à ce qu'eux seuls puissent y accéder.
Notez que même si B et s sont les mêmes dans l'exemple ci-dessus, ce n'est qu'une coïncidence basée sur les petits nombres qui ont été choisis pour cette illustration. Normalement, ces valeurs ne seraient pas les mêmes dans une implémentation réelle de l'échange de clés Diffie-Hellman.
Même si une grande partie des données ci-dessus sont envoyées à travers le canal en texte clair (p, g, AetB) et peut être lu par des attaquants potentiels, le secret partagé (s) n'est jamais transmis. Il ne serait pas pratique pour un attaquant de calculer le secret partagé (s) ou l'un des numéros secrets (unetb) à partir des informations envoyées en texte clair.
Bien entendu, cela suppose que l’échange de clés Diffie-Hellman soit correctement implémenté et que des nombres suffisamment grands soient utilisés. Tant que ces dispositions sont respectées, l'échange de clés Diffie-Hellman est considéré comme un moyen sûr d'établir un secret partagé pouvant être utilisé pour sécuriser les communications futures.
Établir une clé partagée entre plusieurs parties
L'échange de clés Diffie-Hellman peut également être utilisé pour mettre en place une clé partagée avec un plus grand nombre de participants. Cela fonctionne de la même manière, sauf que d'autres cycles de calculs sont nécessaires pour que chaque partie ajoute son numéro secret et se retrouve avec le même secret partagé.
Tout comme dans la version bipartite de l'échange de clés Diffie-Hellman, certaines parties des informations sont envoyées via des canaux non sécurisés, mais pas suffisamment pour qu'un attaquant puisse calculer le secret partagé.
Pourquoi l'échange de clés Diffie-Hellman est-il sécurisé ?
Sur le plan mathématique, l'échange de clés Diffie-Hellman repose sur des fonctions unidirectionnelles comme base de sa sécurité. Ce sont des calculs simples à faire dans un sens, mais beaucoup plus difficiles à effectuer dans l'autre sens.
Plus précisément, il s'appuie sur le problème de Diffie-Hellman, qui suppose que avec les bons paramètres, il est impossible de calculergun Bà partir des valeurs distinctes deg,gunetgb. Il n'existe actuellement aucun moyen publiquement connu de trouver facilementgun Bdes autres valeurs, c'est pourquoi l'échange de clés Diffie-Hellman est considéré comme sécurisé, malgré le fait que les attaquants peuvent intercepter les valeursp,g,UN, etB.
Authentification et échange de clés Diffie-Hellman
Dans le monde réel, l’échange de clés Diffie-Hellman est rarement utilisé seul. La principale raison derrière cela est queil ne fournit aucune authentification, ce qui rend les utilisateurs vulnérables aux attaques de l'homme du milieu.
Ces attaques peuvent avoir lieu lorsque l'échange de clés Diffie-Hellman est implémenté seul, caril n'a aucun moyen de vérifier si l'autre partie dans une relation est réellement celle qu'elle prétend être. Sans aucune forme d'authentification,les utilisateurs peuvent en fait se connecter avec des attaquantslorsqu'ils pensent communiquer avec une personne de confiance.
Pour cette raison, l’échange de clés Diffie-Hellman est généralement mis en œuvre parallèlement à certains moyens d’authentification. Cela implique souvent l'utilisation de certificats numériques et d'un algorithme à clé publique, tel que RSA, pour vérifier l'identité de chaque partie.
Variations de l'échange de clés Diffie-Hellman
L'échange de clés Diffie-Hellman peut être mis en œuvre de différentes manières et a également servi de base à plusieurs autres algorithmes. Certaines de ces implémentations fournissent une autorisation, tandis que d’autres disposent de diverses fonctionnalités cryptographiques telles que la confidentialité parfaite.
Diffie-Hellman à courbe elliptique
Courbe elliptique Diffie-Hellman tire parti de la structure algébrique des courbes elliptiques pour permettre à ses implémentations d'atteindre un niveau de sécurité similaire avec une taille de clé plus petite. Une clé à courbe elliptique de 224 bits fournit le même niveau de sécurité en tant que clé RSA de 2048 bits. Cela peut rendre les échanges plus efficaces et réduire les besoins de stockage.
Outre la longueur de clé plus petite et le fait qu'il repose sur les propriétés des courbes elliptiques, le Diffie-Hellman à courbe elliptique fonctionne de la même manière que l'échange de clés Diffie-Hellman standard.
TLS
TLS , qui est un protocole utilisé pour sécuriser une grande partie d'Internet, peut utiliser l'échange Diffie-Hellman de trois manières différentes : anonyme, statique et éphémère. En pratique, seul le Diffie-Hellman éphémère devrait être implémenté, car les autres options présentent des problèmes de sécurité.
- Anonyme Diffie-Hellman – Cette version de l’échange de clés Diffie-Hellman n’utilise aucune authentification, ce qui la rend vulnérable aux attaques de l’homme du milieu. Il ne doit pas être utilisé ou mis en œuvre.
- Diffie-Hellman statique – Static Diffie-Hellman utilise des certificats pour authentifier le serveur. Il n'authentifie pas le client par défaut et ne fournit pas non plus de secret permanent.
- Diffie-Hellman éphémère – Ceci est considéré comme l’implémentation la plus sécurisée car elle offre une parfaite confidentialité transmise. Il est généralement combiné à un algorithme tel que DSA ou RSA pour authentifier l'une ou les deux parties à la connexion. Ephemeral Diffie-Hellman utilise des paires de clés différentes à chaque fois que le protocole est exécuté. Cela confère à la connexion une confidentialité parfaite, car même si une clé est compromise à l’avenir, elle ne peut pas être utilisée pour déchiffrer tous les messages passés.
ElGamal
ElGamal est un algorithme à clé publique construit sur l'échange de clés Diffie-Hellman. Comme Diffie-Hellman, il ne contient aucune disposition relative à l'authentification en soi et est généralement combiné avec d'autres mécanismes à cette fin.
ElGamal était principalement utilisé dans PGP, GNU Privacy Guard et d'autres systèmes car son principal rival, RSA, était breveté. Le brevet de RSA a expiré en 2000, ce qui a permis sa mise en œuvre libre après cette date. Depuis lors, ElGamal n’a pas été mis en œuvre aussi fréquemment.
STS
Le protocole Station-to-Station (STS) est également basé sur l'échange de clés Diffie-Hellman. Il s’agit d’un autre système d’accord clé, mais il offre une protection contre les attaques de l’homme du milieu ainsi qu’une parfaite confidentialité.
Cela nécessite que les deux parties à la connexion disposent déjà d’une paire de clés, qui est utilisée pour authentifier chaque partie. Si les parties ne se connaissent pas déjà, les certificats peuvent être utilisés pour valider l’identité des deux parties.
L'échange de clés Diffie-Hellman et RSA
Comme nous en avons discuté plus tôt,l'échange de clés Diffie-Hellman est souvent implémenté aux côtés de RSA ou d'autres algorithmes pour assurer l'authentification de la connexion.Si vous connaissez RSA , vous vous demandez peut-êtrepourquoi quelqu'un prendrait-il également la peine d'utiliser l'échange de clés Diffie-Hellman, puisque RSA permet à des parties qui ne se sont jamais rencontrées auparavant de communiquer en toute sécurité.
RSA permet à ses utilisateurs de chiffrer les messages avec la clé publique de leur correspondant, afin qu'ils ne puissent être déchiffrés que par la clé privée correspondante. Or, en pratique,RSA n’est pas utilisé pour chiffrer l’intégralité des communications, ce serait bien trop inefficace.
Au lieu de cela, le RSA n’est souvent utilisé que comme moyen d’authentifier les deux parties. Il fait cela avecles certificats numériques de chaque partie, qui auront été vérifiés par une autorité de certificationpour prouver qu'un propriétaire de certificat est véritablement celui qu'il prétend être et que la clé publique figurant sur le certificat lui appartient réellement.
Pour une authentification mutuelle,chaque partie signera un message à l'aide de sa clé privée puis l'enverra à son partenaire de communication.Chaque destinataire peut alorsvérifier l’identité de l’autre partie en vérifiant les messages signés par rapport à la clé publique figurant sur le certificat numérique de son partenaire de communication(voir l'article mentionné ci-dessus sur le RSA pour plus de détails sur son fonctionnement, en particulier le Signer des messages section).
Maintenant que les deux parties ont été authentifiées, il est techniquement possible de continuer à utiliser RSA pour envoyer des messages cryptés entre elles en toute sécurité, mais cela finirait par être trop inefficace.
Pour contourner cette inefficacité, de nombreux protocoles de sécurité utilisent un algorithme tel quel'échange de clés Diffie-Hellman pour trouver un secret commun pouvant être utilisé pour établir une clé symétrique partagée. Cette clé symétrique est ensuite utilisée dans un algorithme à clé symétrique, tel que AES , pour chiffrer les donnéesque les deux parties entendent s'envoyer en toute sécurité entre elles.
Cela peut sembler un processus complexe et alambiqué, mais il finit par être beaucoup plus rapide et moins exigeant en ressources que l'utilisation d'un algorithme à clé publique pour l'ensemble de l'échange. Ceci est dû au faitLe chiffrement à clé symétrique est bien plus efficace que le chiffrement à clé publique..
En plus des inefficacités que nous venons de mentionner, l’utilisation exclusive de RSA présente d’autres inconvénients.RSA a besoin d'un rembourrage pour le rendre sécurisé,un algorithme supplémentaire devrait donc être implémenté de manière appropriée pour le rendre sûr.
RSA ne fournit pas une confidentialité parfaite, ce qui constitue un autre inconvénient par rapport à l'échange de clés éphémère Diffie-Hellman. Collectivement, ces raisons expliquent pourquoi, dans de nombreuses situations, il est préférable d’appliquer RSA uniquement en conjonction avec l’échange de clés Diffie-Hellman.
Alternativement, l'échange de clés Diffie-Hellman peut être combiné avec un algorithme tel que le Digital Signature Standard (DSS) pour assurer l'authentification, l'échange de clés, la confidentialité et vérifier l'intégrité des données. Dans une telle situation, RSA n’est pas nécessaire pour sécuriser la connexion.
Problèmes de sécurité de l'échange de clés Diffie-Hellman
La sécurité de l'échange de clés Diffie-Hellman dépend de la manière dont il est mis en œuvre, ainsi que des numéros choisis pour cela. Comme nous l'avons indiqué plus haut, il ne dispose d'aucun moyen d'authentifier l'autre partie par lui-même, mais en pratique, d'autres mécanismes sont utilisés pour garantir que l'autre partie dans une connexion n'est pas un imposteur.
Paramètres de sélection des numéros
Si une implémentation réelle de l’échange de clés Diffie-Hellman utilisait des nombres aussi petits que ceux de notre exemple, le processus d’échange serait facile à pirater pour un attaquant. Mais ce n’est pas seulement la taille des chiffres qui compte : les chiffres doivent également être suffisamment aléatoires. Si un générateur de nombres aléatoires produit un résultat prévisible, il peut complètement compromettre la sécurité de l'échange de clés Diffie-Hellman.
Le nombrepdevrait faire 2048 bitspour assurer la sécurité.La base,g, peut être un nombre relativement petit comme 2, mais il faut que cela vienne d'un ordre deg qui a un grand facteur premier
L’attaque Logjam
L'échange de clés Diffie-Hellman a été conçu sur la base du problème du logarithme discret difficile à résoudre.. Le mécanisme le plus efficace, connu publiquement, pour trouver une solution est le algorithme de tamisage de champ numérique .
Les capacités de cet algorithme ont été prises en compte lors de la conception de l'échange de clés Diffie-Hellman. Dès 1992, on savait que pour un groupe donné,g, trois des quatre étapes impliquées dans l'algorithme pourraient potentiellement être calculé à l'avance . Si ces progrès étaient sauvegardés, la dernière étape pourrait être calculée dans un temps relativement court.
Ce n’était pas trop préoccupant jusqu’à ce qu’on se rende compte qu’une partie importante du trafic Internet utilise les mêmes groupes de 1 024 bits ou moins. En 2015, un équipe académique a exécuté les calculs pour le nombre premier de 512 bits le plus courant utilisé par l'échange de clés Diffie-Hellman dans TLS.
Ils ont également pu rétrograder 80 % des serveurs TLS prenant en charge DHE-EXPORT, afin qu'ils acceptent un échange de clé Diffie-Hellman de 512 bits pour l'exportation pour la connexion. Cela signifie quechacun de ces serveurs est vulnérable à une attaque d'un adversaire disposant de ressources suffisantes.
Les chercheurs ont ensuite extrapolé leurs résultats,estimant qu'un État-nation pourrait dépasser un nombre premier de 1024 bits. En brisant le chiffre premier de 1 024 bits le plus couramment utilisé, l’équipe universitaire a estimé qu’un adversaire pourrait surveiller 18 % du million de sites Web HTTPS les plus populaires.
Ils ont ajouté qu'un deuxième prime permettrait à l'adversaire de décrypter les connexions de 66 % des serveurs VPN et de 26 % des serveurs SSH. Plus loin dans le rapport, les universitaires suggèrent que la NSA pourrait déjà disposer de ces capacités.
'Une lecture attentive des fuites publiées par la NSA montre que les attaques de l'agence contre les VPN sont cohérentes avec une telle rupture.'
Malgré cette vulnérabilité, l'échange de clés Diffie-Hellman peut toujours être sécurisé s'il est correctement implémenté. Tant qu'une clé de 2048 bits est utilisée, l'attaque Logjam ne fonctionnera pas. Les navigateurs mis à jour sont également à l'abri de cette attaque.
L'échange de clés Diffie-Hellman est-il sûr ?
Même si l’échange de clés Diffie-Hellman peut sembler complexe, il s’agit d’un élément fondamental de l’échange sécurisé de données en ligne. Tant qu’il est mis en œuvre parallèlement à une méthode d’authentification appropriée et que les numéros ont été correctement sélectionnés, il n’est pas considéré comme vulnérable aux attaques.
L'échange de clés Diffie-Hellman était une méthode innovante permettant à deux interlocuteurs inconnus de communiquer en toute sécurité lorsqu'elle a été développée dans les années 1970. Alors que nous implémentons désormais des versions plus récentes avec des clés plus grandes pour nous protéger contre la technologie modernele protocole lui-même semble continuer à être sécurisé jusqu'à l'arrivée de l'informatique quantiqueet les attaques avancées qui l'accompagneront.
Comment l’informatique quantique affectera-t-elle l’échange de clés Diffie-Hellman ?
L’informatique quantique est une branche émergente de l’informatique qui continue de faire des percées. Les spécificités du fonctionnement des ordinateurs quantiques sont compliquées et sortent du cadre de cet article. Toutefois, la technologie présente des problèmes importants dans le domaine de la cryptographie.
L’explication simple est que les ordinateurs quantiques devraient être capables de résoudre certains problèmes qui ne sont actuellement pas réalisables avec les ordinateurs classiques. Cela ouvrira de nombreuses portes et apportera de nouvelles possibilités. Des ordinateurs quantiques suffisamment puissants seront capables d’exécuter des algorithmes quantiques capables de résoudre plus efficacement divers problèmes mathématiques.
Même si cela peut paraître formidable, la sécurité de bon nombre de nos mécanismes cryptographiques actuels repose sur la difficulté de résoudre ces problèmes. Si ces problèmes mathématiques deviennent plus faciles à calculer, il devient également plus facile de briser ces mécanismes cryptographiques.
L'un de ces algorithmes quantiques est L'algorithme de Grover . Lorsque les ordinateurs quantiques deviendront suffisamment puissants, ils accéléreront les attaques contre les chiffrements à clé symétrique comme AES . Cependant, cela peut facilement être atténué en doublant la taille de la clé.
La plus grande préoccupation est de savoir comment L'algorithme de Shor affectera la cryptographie à clé publique. En effet, la sécurité des algorithmes à clé publique les plus courants repose sur l’immense difficulté de résoudre l’un de ces trois calculs :
- Le problème de logarithme discret
- Le problème de factorisation entière
- Le problème de logarithme discret à courbe elliptique
Les spécificités de chacun n’ont pas vraiment d’importance, mais vous pouvez suivre les liens si vous souhaitez des informations supplémentaires. L’important est qu’une fois que des ordinateurs quantiques suffisamment puissants arriveront, il deviendra beaucoup plus pratique de résoudre ces problèmes avec l’algorithme de Shor. À mesure que ces problèmes deviennent plus faciles à résoudre, les systèmes cryptographiques qui en dépendent deviendront moins sécurisés.
La cryptographie à clé publique joue un rôle fondamental dans la protection de nos communications. C’est pourquoi l’informatique quantique représente un énorme défi pour les cryptographes.
Dans le cas de l’échange de clés Diffie-Hellman, sa sécurité repose sur l’impossibilité de résoudre le problème du logarithme discret avec la technologie et les ressources actuelles. Cependant, les menaces posées par l’algorithme de Shor se rapprochent à chaque avancée de l’informatique quantique.
Il est difficile d’établir un calendrier approximatif du moment où l’informatique quantique menacera sérieusement l’échange de clés Diffie-Hellman, car certains chercheurs sont beaucoup plus optimistes que d’autres. Malgré cela, des remplacements de l'échange de clés Diffie-Hellman et d'autres algorithmes à clé publique sont en cours de développement pour garantir que nous serons prêts le moment venu.
Remplacements potentiels pour l'échange de clés Diffie-Hellman
Le danger posé par les ordinateurs quantiques n’est pas immédiat, c’est pourquoi la communauté cryptographique n’a pas encore trouvé d’alternatives spécifiques à l’échange de clés Diffie-Hellman. Cependant, de nombreuses voies sont explorées. Ceux-ci inclus:
- Cryptographie basée sur un réseau
- Cryptographie multivariée
- Cryptographie isogénétique à courbe elliptique
Nous ne savons toujours pas exactement à quoi ressemblera le monde post-quantique en matière de cryptographie, mais la communauté de la sécurité travaille activement sur les problèmes et suit les progrès du monde de l’informatique quantique. Même s’il y aura de grands changements à l’avenir, la personne moyenne n’a rien à craindre : vous ne remarquerez probablement même pas quand des changements auront lieu.