Outil pour calculer/simuler les échanges de clés selon le protocole Diffie-Hellman basé sur les mathématiques et l'arithmétique modulaire.
Echange de Clés Diffie-Hellman - dCode
Catégorie(s) : Cryptographie Moderne, Arithmétique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
L'échange de clés Diffie-Hellman est un protocole mathématique/cryptographique permettant à 2 personnes (qui peuvent ne s'être jamais rencontrées) de se mettre d'accord sur un nombre secret (une clé secrète partagée), sans le divulguer lors de leurs échanges (c'est-à-dire qu'une personne qui pourrait surveiller les échanges ne pourrait pas en déduire le nombre secret). Ce nombre peut ensuite être utilisé comme clé de chiffrement pour chiffrer et déchiffrer des messages/informations entre les 2 interlocuteurs.
Deux personnes Alice et Bob entrent en contact et choisissent 2 nombres, un nombre premier $ P $ et un nombre $ G $ (avec $ P > G $). Ce choix peut être communiqué en clair et rendu public.
Alice choisit un nombre $ a $ au hasard, appelé clé privée (conservée secrètement), et réalise le calcul $ A = G^a \mod P $ dont la valeur $ A $ est appelée la clé publique de Alice, qu'il envoie à Bob publiquement.
De façon similaire, Bob choisis un nombre $ b $ au hasard, appelé clé privée (aussi conservée secrètement), et réalise le calcul $ B = G^b \mod P $ dont la valeur $ B $ est appelée la clé publique de Bob, qu'il envoie à Alice publiquement.
Alice a reçu la valeur $ B $ et peut alors calculer la valeur $ S = B^a \mod P $
De même, Bob qui a reçu la valeur $ A $ peut calculer la valeur $ S = A^b \mod P $
Grâce aux mathématiques (et à l'arithmétique modulaire), la valeur $ S $ est identique pour Alice et Bob, c'est leur clé secrète partagée. Ils peuvent alors communiquer en chiffrant leurs messages avec cette clé.
Les valeurs échangées publiquement ($ P $, $ G $, $ A $ et $ B $) ne permettent pas de calculer $ S $ tant que les 2 clés privées $ a $ et $ b $ restent cachées et protégées par leurs propriétaires.
Exemple :
P = | 101 |
G = | 12 |
a = | 123 |
b = | 345 |
A = | G^a%P = 35 |
B = | G^b%P = 60 |
S = | B^a%P = A^b%P = 62 |
Le principal avantage de DH est permettre un échange de clé sécurisé sur un canal non sécurisé.
Le second avantage est la simplicité de l'implémentation de l'algorithme.
Le protocole d'échange DHKE (Diffie-Hellman Key Exchange) est vulnérable à plusieurs types d'attaques :
— Attaques de man-in-the-middle : un attaquant intercepte la communication des 2 parties et prétend être l'autre partie.
— Attaque par réflexion : un attaquant envoi un faux message demandant de réaliser un nouvel échange de clé avec lui-même, l'authentification des parties est donc préférable.
— Attaque par précalcul/factorisation : les clés privées sont généralement inférieures à 1024 bits, un précalcul des combinaisons avec des valeurs faibles est envisageable mais très couteuse en temps et en ressources.
Lorsque P est un nombre premier, les calculs mathématiques sont plus sécurisés. Le groupe des entiers modulo P a de meilleures propriétés si P est premier.
Toutefois, il est possible d'utiliser un P non premier, mais dans ce cas, une personne en connaissant la factorisation pourra casser Diffie-Hellman.
Comme leur nom l'indique les clés sont privées, elles ne sont jamais partagées publiquement.
Le fait de connaitre la clé publique ne permet pas de calculer la clé privée, c'est un célèbre problème mathématique (connu sous le nom de problème du logarithme discret).
Les nombres/clés peuvent être crées avec un générateur de nombre aléatoire.
Il est préférable de changer de clé privée à chaque nouvelle communication.
Whitfield Diffie et Martin Hellman ont présenté leur méthode en 1976
dCode se réserve la propriété du code source pour "Echange de Clés Diffie-Hellman". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Echange de Clés Diffie-Hellman", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Echange de Clés Diffie-Hellman" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Echange de Clés Diffie-Hellman" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Echange de Clés Diffie-Hellman" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Echange de Clés Diffie-Hellman sur dCode.fr [site web en ligne], consulté le 21/12/2024,