Question:
"Échange de clés Diffie-Hellman" en anglais simple
user15119
2013-11-24 07:10:08 UTC
view on stackexchange narkive permalink

Quelqu'un peut-il m'expliquer ce qu'est Diffie-Hellman Key Exchange en anglais simple? J'ai lu dans une page d'actualités non technologique que Twitter vient de mettre en œuvre cette technologie qui permet à deux personnes d'échanger des messages cryptés sur un canal non sécurisé. Comment est-ce (si c'est vrai)?

Wikipedia a une [explication illustrée] (https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#Description).
YouTube a une (belle et simple) [explication vidéo] (https://www.youtube.com/watch?v=YEBfamv-_do&list=PL87386AD236727A1B&index=8) :)
J'ai trouvé cette vidéo utile pour comprendre - https://www.youtube.com/watch?v=YEBfamv-_do
Ma vidéo DH préférée: https://www.youtube.com/watch?v=NmM9HA2MQGI
Je trouve l'analogie des couleurs imparfaite (wikipedia et youtube).Mélanger la couleur "privée" avec la couleur de l'autre partie ne rend pas la même couleur secrète.J'ai fait le mixage.
Onze réponses:
tylerl
2013-11-24 13:28:12 UTC
view on stackexchange narkive permalink

Diffie-Hellman est un moyen de générer un secret partagé entre deux personnes de telle sorte que le secret ne peut pas être vu en observant la communication. C'est une distinction importante: Vous ne partagez pas d'informations pendant l'échange de clés, vous créez une clé ensemble.

Ceci est particulièrement utile car vous pouvez utiliser cette technique pour créer une clé de chiffrement avec quelqu'un, puis commencer à chiffrer votre trafic avec cette clé. Et même si le trafic est enregistré et analysé plus tard, il n'y a absolument aucun moyen de savoir quelle était la clé, même si les échanges qui l'ont créée ont pu être visibles. C'est de là que vient le perfect forward secrecy. Personne qui analyse le trafic à une date ultérieure ne peut entrer par effraction car la clé n'a jamais été enregistrée, jamais transmise et jamais rendue visible nulle part.

La façon dont cela fonctionne est assez simple. Une grande partie des calculs est la même que celle que vous voyez dans la cryptographie à clé publique dans la mesure où une fonction de trappe est utilisée. Et alors que le problème du logarithme discret est traditionnellement utilisé (l’activité x y mod p ), le processus général peut être modifié pour utiliser également la cryptographie à courbe elliptique.

Mais même si elle utilise les mêmes principes sous-jacents que la cryptographie à clé publique, ce n'est pas une cryptographie asymétrique car rien n'est jamais crypté ou décrypté pendant l'échange. C'est, cependant, un élément essentiel, et était en fait la base sur laquelle la crypto asymétrique a été construite plus tard.

L'idée de base fonctionne comme ceci:

  1. trouvez un nombre premier p et un nombre g qui est le premier à p-1 et vous dire ce qu'ils sont.
  2. Vous choisissez ensuite un numéro secret ( a ), mais vous ne le dites à personne. Au lieu de cela, vous calculez ga mod p et me renvoyez ce résultat. (Nous appellerons ça A car il vient de a
  3. Je fais la même chose, mais nous appellerons mon numéro secret b et le nombre calculé B . Je calcule donc gb mod p et vous envoie le résultat (appelé " B ")
  4. Maintenant, vous prenez le numéro que je vous ai envoyé et faites exactement la même opération avec it . C'est donc Ba mod p .
  5. Je fais la même opération avec le résultat que vous m'avez envoyé, donc: Ab mod p le même nombre que vous avez obtenu à l'étape 4. Maintenant, ce n'est pas vraiment magie, ce n'est que des mathématiques, et cela revient à une propriété sophistiquée des exposants modulo. Plus précisément:

    a

    mod p) b mod p = gab mod p
    (gb mod p)a mod p = gba mod p

    Ce qui, si vous examinez de plus près, signifie que vous obtiendrez la même réponse quel que soit l'ordre dans lequel vous faites l'exponentiation. Donc je le fais dans un ordre, et vous le faites dans l'autre. Je ne sais jamais quel numéro secret vous avez utilisé pour obtenir le résultat et vous ne savez jamais quel numéro j'ai utilisé, mais nous arrivons toujours au même résultat.

    Ce résultat, ce nombre sur lequel nous sommes tous deux tombés par hasard aux étapes 4 et 5, est notre clé secrète partagée. Nous pouvons l'utiliser comme mot de passe pour AES ou Blowfish, ou tout autre algorithme utilisant des secrets partagés. Et nous pouvons être certains que personne d'autre, personne à part nous, ne connaît la clé que nous avons créée ensemble.

DH est une clé publique / asymétrique * crypto * mais pas * cryptage *.
Je pense qu'il vaut la peine de mentionner que la raison pour laquelle cela est sécurisé est que, contrairement au journal normal (x), le journal modulaire (x) est considéré comme difficile à calculer. Sinon, nous pourrions simplement faire `log_g (A)` et `log_g (B)` pour obtenir `a` et` b`.
Je pense que vous voudrez peut-être aussi ajouter que ** `g` ** n'est pas n'importe quel premier mais un générateur (ou une racine primitive) de **` p` **
@TheRookierLearner cette réponse est une * explication simplifiée * de DH; il y a pas mal de détails importants omis pour plus de simplicité. Cela ne doit pas être considéré comme un tutoriel d'implémentation.
Mais en supposant qu'il s'agit d'un réseau non sécurisé, ne puis-je pas simplement trouver la racine de «A» et donc de «a».et voila!désolé pour ma question amateur mais je dois apprendre: p
@Mero55 Vous ne trouvez pas seulement la racine de A, vous trouvez les racines de A, A + p, A + 2p, A + 3p, ... jusqu'à ce que le résultat soit un entier.
Brillamment expliqué!Merci beaucoup pour la réponse claire: D.
pourquoi est-ce la pierre angulaire de la crypto asymétrique?si les clés découvertes et utilisées de chaque côté sont les mêmes, ces clés ne sont-elles pas symétriques?
Pourquoi $ g $ doit-il être premier?Par exemple, si $ g \ neq2 $ fonctionne alors $ p-g $ fonctionne également (et n'est même pas premier).Le fait de stipuler que $ g $ est le premier réduit vos options ... (et rend donc la clé "plus facile" à deviner).
merci beaucoup pour cette explication claire de DH :)
Pour des raisons de sécurité, les nombres premiers ** a ** et ** b ** doivent tous deux être des nombres raisonnablement * élevés * et avoir une certaine distance l'un par rapport à l'autre.
@whytheq oui, après la procédure DH, les deux parties obtiennent la même clé secrète.Cette clé peut ensuite être (et est généralement) utilisée pour crypter des messages à l'aide d'un algorithme symétrique.Le chiffrement asymétrique étant beaucoup plus lent que symétrique, cela est souvent fait.De plus, DH est considéré comme la pierre angulaire de la crypto asymétrique car il est très similaire à RSA (qui a été développé plus tard) et un algorithme de cryptage à part entière peut être dérivé de DH.
que se passe-t-il si quelqu'un utilise notre clé secrète pour nous tromper sur son identité.Si quelqu'un connaît ce secret, il peut l'utiliser pour cacher son identité
@tylerl Vous pourriez juste * noter * que ** g ** et ** p ** ont des propriétés supplémentaires.Par exemple, "Je propose deux nombres premiers (qui ont des propriétés supplémentaires que nous n'entrerons pas dans) ** g ** et ** p ** et vous dis ce qu'ils sont."
@tylerl Je ne suis pas sûr que ce soit la bonne utilisation de Perfect Forward Secrecy (PFS).De votre réponse, il est déduit que PFS est livré avec l'échange de clés DH, mais cela ne devrait pas être le cas.Par exemple, ECDH et ECDHE sont tous deux déréviés de DH mais seul ce dernier a PFS en raison de la génération d'une clé éphémère dans chaque session.
@Makif DH est ce qui rend PFS possible, mais ECDH (pas éphémère) stocke et réutilise les clés, ce qui va à l'encontre de l'objectif si PFS est votre objectif.
Je pense qu'une manière moins déroutante d'énoncer l'équation est que "(g ^ a) ^ b = g ^ ab" et "(g ^ b) ^ a = g ^ ba", le tout fait dans modulo p.De cette façon, il y a moins de "mod" partout.
Duncan Jones
2014-06-09 19:30:29 UTC
view on stackexchange narkive permalink

Les autres réponses font un excellent travail en expliquant les mathématiques derrière l'échange de clés. Si vous souhaitez une représentation plus picturale, rien ne vaut l'excellente analogie avec la peinture présentée dans échange de clés Diffie-Hellman sur Wikipédia:


DH key exchange image

L'image est dans le domaine public

Cette image est excellente pour expliquer ce qu'elle fait.Mon seul problème était "Si l'attaquant connaît la peinture commune et il connaît les mélanges finaux, pourquoi ne peut-il pas trouver la couleur d'origine?".La réponse est bien sûr que ce n'est pas la couleur qu'il a besoin de connaître, mais le mélange d'origine, et comme vous l'avez mentionné, la séparation du mélange coûte cher. Il serait également intéressant de connaître brièvement les mathématiques réelles qui permettent cela.
Le calcul a été expliqué ailleurs mais pensez-y comme ceci: disons que la "fonction de mélange de peinture" est f (a, b) = (a + b)% 1000.Toi et moi annonçons "le secret partagé est 793".Alors je vous dis f (my_secret, 793) = 172. Quel est mon secret?Notez que f (a, f (b, 793)) == f (b, f (a, 793)).La fonction réelle utilisée par DH n'est pas si simple, mais tout ce qui est important est que l'information soit perdue et que cette propriété commutative soit valable.
L'exemple de couleur est seulement illustratif.Évidemment, le calcul des mélanges de couleurs est trivial;le problème de journal discret utilisé par DH ne l'est pas.Voir https://en.wikipedia.org/wiki/Discrete_logarithm.
C'est un moyen très intelligent et facile de faire comprendre aux autres les principes fondamentaux.
Et soit Bob ou Alice commence par envoyer publiquement la peinture commune à l'autre?
@LightCC La peinture commune est généralement standardisée, de sorte qu'ils savent tous les deux à l'avance ce que l'autre utilise.Il n'est pas nécessaire pour eux de l'envoyer.En DH, cette couleur commune est appelée le "générateur", ou _g_, et est généralement le nombre 2 ou 5. L'opération "+" en DH réel est l'exponentiation modulo un public premier _p_ (qui peut ou non être connu à l'avance à la placed'échange, selon la mise en œuvre).C'est à cela que se réfère le mélange de peinture.Annuler cette exponentiation modulaire est difficile et c'est ce qui rend DH sécurisé.
@forest Ainsi, le fait que le monde puisse savoir ce qu'est la "peinture commune" les empêche toujours de découvrir ce qu'est la peinture secrète individuelle?Ou si vous l'implémentez de cette façon, devez-vous choisir à chaque fois des couleurs de peinture secrètes aléatoires?Mon hypothèse est que si vous gardez les couleurs de peinture communes et secrètes constantes tout le temps, cela devient piratable (grâce à un effort déterminé et à long terme), et que faire varier au hasard une (ou les deux) et rétablir les sessions de temps en temps, résoudra celaproblème.
@LightCC La peinture commune n'a pas besoin d'être changée et il n'y a aucun problème de sécurité à la garder la même.L'analogie implique le mixage, mais en réalité, c'est l'exponentiation modulaire.Il calcule "g ^ x mod p", où _g_ est la peinture commune, _x_ est la peinture secrète et _p_ est un nombre premier nécessaire pour rendre l'opération de mélange irréversible.Bien qu'il _ soit_ vrai que l'utilisation du même _p_ encore et encore peut _potentiellement_ entraîner la rupture du système après un effort déterminé et de longue date.Le [site faibledh] (https://weakdh.org/) en explique plus.
En cryptographie, parfois ce qui est intuitif n'est pas nécessairement correct.Prenons le cryptosystème Rabin par exemple, qui crypte avec un message _m_ en calculant "m ^ 2 mod pq" pour les nombres premiers secrets _p_ et _q_.Ce nombre 2 est une constante et ne change jamais, et pourtant le système de Rabin a été prouvé pour être aussi dur que la factorisation entière.Vous avez raison de dire que la peinture secrète doit être changée souvent.Pour le DH standard «éphémère» (généralement appelé DHE dans les suites TLS), il change pour chaque échange de clé.
user10211
2013-11-24 08:35:19 UTC
view on stackexchange narkive permalink

Diffie-Hellman est un algorithme utilisé pour établir un secret partagé entre deux parties. Il est principalement utilisé comme méthode d'échange de clés de cryptographie pour une utilisation dans des algorithmes de cryptage symétrique comme AES.

L'algorithme en lui-même est très simple. Supposons qu'Alice veuille établir un secret partagé avec Bob.

  1. Alice et Bob s'accordent sur un nombre premier, p , et une base, g , à l'avance. Pour notre exemple, supposons que p = 23 et g=5.
  2. Alice choisit un entier secret a dont la valeur est 6 et calcule A = g ^ un mod p . Dans cet exemple, A a la valeur 8.
  3. Bob choisit un entier secret b dont la valeur est 15 et calcule B = g ^ b mod p . Dans cet exemple, B a la valeur 19.
  4. Alice envoie A à Bob et Bob envoie B à Alice.
  5. Pour obtenir le secret partagé, Alice calcule s = B ^ un mod p . Dans cet exemple, Alice obtient la valeur de s=2
  6. Pour obtenir le secret partagé, Bob calcule s = A ^ b mod p . Dans cet exemple, Bob obtient la valeur de s=2.

L'algorithme est sécurisé car les valeurs de a et b , qui sont nécessaires pour dériver les s ne sont pas du tout transmis sur le câble.

C'est bien, mais vous auriez pu aussi citer que c'est de [Wikipedia] (https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange#Cryptographic_explanation).
Dan Is Fiddling By Firelight
2013-11-24 21:41:47 UTC
view on stackexchange narkive permalink

Si vous voulez une explication plus simple en anglais de DH qui puisse être facilement comprise par des personnes même non techniques, il y a l'analogie avec la double boîte verrouillée.

  1. Alice met un secret dans une boîte et la verrouille avec un cadenas qu'elle a la seule clé à ouvrir. Elle expédie ensuite la boîte à Bob.

  2. Bob reçoit la boîte, pose un deuxième cadenas dont lui seul a la clé et la renvoie à Alice.

  3. Alice enlève sa serrure et expédie la boîte à Bob une deuxième fois.

  4. Bob retire sa serrure, ouvre la boîte et a accès au secret qu'Alice lui a envoyé.

Étant donné que la boîte a toujours eu au moins un verrou pendant le transport, Eve n'a jamais la possibilité de voir ce qu'il y a à côté et et voler le secret: en cela, une clé cryptographique qui sera utilisée pour crypter le reste des communications d'Alice et Bob.

Maintenant, c'est ce que j'appelle une explication en anglais simple. je t'aime mec.
Bien que l'anglais simple, cela ne décrit pas Diffie-Hellman. Il décrit le [protocole à trois passes] (http://en.wikipedia.org/wiki/Three-pass_protocol) qui a des propriétés significativement différentes de DH. Par exemple, il nécessite trois passages, alors que DH ne nécessite qu'un seul passage.
Je pense que CodesInChaos attend beaucoup de précision d'une analogie volontairement simplifiée.Cela m'a aidé à mieux comprendre l'analogie de la peinture, ce qui m'a aidé à mieux comprendre les plus précises.(Notez que les boîtes ont des trous de déverrouillage trop petits pour faire sortir les cookies de la boîte la plus intérieure. C'est ce qui m'a jeté au début.)
Ce n'est pas une question de "beaucoup de précision".L'analogie de la boîte verrouillée ne ressemble pas du tout à Diffie Hellman.
Cela montre au moins que c'est possible.Au départ, certaines personnes pensent qu'une clé partagée sur un canal observable ne peut pas être créée en principe.
@NanbanJim Il ne représente pas du tout Diffie Hellman, il montre juste une autre méthode, d'échange de secret.
DH n'échange pas de secrets comme cela, il les génère, mais c'est une lecture amusante
Merci!c'est une analogie très bonne et sensée!(sans expliquer DHE)
si vous ne pouviez pas visualiser cette explication simple dans votre tête sans la lire une deuxième fois (je l'ai fait), voici une vidéo d'une impressionnante série de conférences scientifiques publiques de la Royal Institution expliquant cela https://youtu.be/U62S8SchxX4?t=85 youpeut clairement compter les trois passes @CodesInChaos mentionnés.
aiao
2015-12-16 05:54:51 UTC
view on stackexchange narkive permalink

Le problème d'échange de clés

Une connexion sécurisée nécessite l'échange de clés, mais les clés elles-mêmes devraient être transférées sur une connexion sécurisée.

Il existe deux solutions possibles:

  1. échanger la clé en se réunissant physiquement et en partageant les clés.
  2. En quelque sorte établi un secret partagé sur un canal public non sécurisé. C'est plus facile à dire qu'à faire, et la première implémentation de ce type est le schéma Diffie-Hellman.

Propriétés

Diffie-Hellman utilise une fonction mathématique avec les propriétés suivantes:

  1. Il est FACILE de calculer f [x] (à partir de x)
  2. C'est DIFFICILE pour inverser f [x] pour obtenir x
  3. Il est FACILE de calculer S à partir de A et f[BITED
  4. Il est FACILE de calculer S à partir de B et f [ A]
  5. Il est DIFFICILE de calculer S sans A ou B (même avec f [A] et f[B )

Comment fonctionne le schéma DH

  1. Alice sort avec un nombre aléatoire A . Elle calcule f [A] et envoie f [A] à Bob. Alice ne divulgue jamais son A , pas même à Bob.
  2. Bob sort avec un autre nombre aléatoire B . Il calcule f [B] , et envoie f [B] à Alice. Bob ne divulgue jamais son B , pas même à Alice.
  3. Alice calcule S en utilisant A et f [ B] . Bob calcule S en utilisant B et f[A
  4. Mallory, qui est Eavesdropping, n'a que f [A] et f [B] , et il est donc DIFFICILE pour elle de calculer S.
  5. Alice et Bob partagent maintenant un secret commun qui peut être utilisé comme (ou pour trouver) une clé pour établir une connexion sécurisée.

Remarque:

Le schéma Diffie-Hellman ne fournit aucune authentification. Il n'autorise que 2 parties anonymes à partager un secret commun. Mais pour tout ce qu'Alice sait, elle pourrait serrer la main du diable (au lieu de Bob). C'est pourquoi nous avons besoin d'au moins une partie pour être authentifiée.

Par exemple: SSL (https), le serveur Web est authentifié à l'aide de PKI (Public Key Infrastructure), puis une connexion sécurisée est établie (DH) entre le site Web et le client. Puisque le site Web a été authentifié, le client peut faire confiance au site Web, mais le site Web ne peut pas faire confiance au client. Le client peut désormais fournir ses propres informations d'authentification sur la page Web en toute sécurité.

J'apprécie vraiment la note d'accompagnement ici, elle a répondu à une question lancinante que j'avais mais je ne pouvais pas tout à fait élucider.
Eddie
2018-10-27 00:59:11 UTC
view on stackexchange narkive permalink

La sécurisation des données lors de leur transit sur Internet nécessite généralement de les protéger de deux manières:

  • Confidentialité - ne garantir personne sauf les destinataires prévus peuvent lire les données
  • Intégrité - garantissant que personne ne peut modifier ou falsifier les données en transit

La confidentialité est assurée à l'aide du cryptage symétrique et l'intégrité est assurée à l'aide d'un code d'authentification de message (MAC).

Le cryptage symétrique et les MAC exigent que les deux parties aient des clés identiques et secrètes (une "clé" dans ce sens étant simplement un nombre, converti en binaire).

Le problème est alors de Comment les deux parties établissent-elles des clés identiques et secrètes sur Internet? (ou tout autre support non sécurisé). C'est ce qu'on appelle " le problème d'échange de clés ".

Une des solutions à ce problème est l'algorithme Diffie-Hellman.


Diffie-Hellman permet à deux parties de établir un secret partagé sur un support non sécurisé . Ou, pour le dire plus simplement ...

Imaginez que vous et votre ami vous trouviez dans une pièce bondée, entourés de personnes à l'air douteux. Supposons que vous et votre ami deviez vous mettre d'accord sur un nombre identique, mais que personne d'autre dans la pièce ne sache de quel numéro il s'agit. Diffie-Hellman vous permettrait, à vous et à votre ami, d'échanger intelligemment certains numéros, et à partir de ces numéros, calculez un autre numéro qui est identique. Et même si tout le monde dans la salle a entendu les numéros échangés, ils n'ont aucun moyen de déterminer le numéro final auquel vous et votre ami êtes arrivés.

Nous pouvons voir un exemple de cela se produire dans l'image ci-dessous. Alice et Bob utiliseront l'échange de clés Diffie-Hellman pour établir un secret partagé.

Diffie-Hellman Key Exchange -- pracnet.net/crypto

Quiconque "écoutant" la conversation "entend" uniquement les numéros échangés au milieu: 13 , 6 , 2 , 9 . Il n'y a pas de moyen cohérent de combiner ces quatre nombres pour atteindre le secret partagé final: 3 sans connaître l'une des valeurs privées d'Alice ou de Bob ( 5 ou 4 ) qui n'ont jamais été partagés.

C'est la beauté de Diffie-Hellman.

Les nombres utilisés dans l'exemple ci-dessus sont petits pour garder les mathématiques simples. En réalité, les nombres utilisés dans les échanges Diffie-Hellman modernes ont (ou devraient être) au minimum 2048 bits de long - ce qui nécessiterait environ 617 chiffres pour l'écriture !!


Après avoir terminé l'échange de clés Diffie-Hellman, les deux parties possèdent désormais une valeur identique, connue uniquement de chaque partie.

Cette valeur devient le "point de départ" à partir duquel des clés supplémentaires peuvent être générées.

Plus tôt, nous avons mentionné que les codes de cryptage symétrique et d'authentification de message nécessitent chacun une clé secrète. Eh bien, prenez votre DH Shared Secret et combinez-le avec quelques autres valeurs et maintenant vous avez les clés de cryptage et MAC dont vous avez besoin.

L'avantage supplémentaire est de combiner des valeurs pour créer des clés est facile ... Cela peut être fait autant de fois que nécessaire.

En fait, de nombreux protocoles de sécurité (SSL / TLS, IPsec, etc.) génèrent un jeu de clés pour sécuriser le trafic dans chaque direction - un total de quatre clés (MAC + cryptage dans un sens, MAC + cryptage dans l'autre sens). Les quatre clés générées à partir de la même valeur de départ initiale, dérivée de Diffie-Hellman.

+1 pour un échantillon illustré!Avez-vous dessiné ceci ou les avez-vous choisis ailleurs?Si oui, pouvez-vous publier l'origine de cette image?
@F.Hauri Je l'ai dessiné =).Il est initialement publié sur mon blog: https://www.practicalnetworking.net/series/cryptography/diffie-hellman/
Beau travail, bien fait!Je suis intéressé par les sources de traduction!
Lucas Kauffman
2013-11-24 07:20:00 UTC
view on stackexchange narkive permalink

Diffie-Hellman est un algorithme mathématique permettant d'échanger un secret partagé entre deux parties. Ce secret partagé peut être utilisé pour crypter les messages entre ces deux parties. Notez que l'algorithme Diffie-Hellman ne fournit pas d'authentification entre ces deux parties.

Cela manque d'explication, j'aimerais que vous puissiez en expliquer un peu plus ...
Vous vouliez une explication en anglais sans maths.
Dans le cas d'une connexion HTTPS, l'authentification est gérée par le framework de certificat SSL. Vous pouvez être certain (comme vous pouvez l'être) que vous communiquez avec les parties visées par la vérification et la confiance. La prise de contact / négociation d'une connexion SSL est coûteuse en termes de surcharge. L'algorithme DH permet aux deux parties de négocier en toute sécurité une clé symétrique pour le cryptage / décryptage qui est beaucoup plus efficace.
securityOrange
2018-10-27 06:27:53 UTC
view on stackexchange narkive permalink

Les vidéos Diffie-Hellman de Computerphile sont absolument spectaculaires en ce qui concerne les explications de cet échange de clés. Leur vidéo " Secret Key Exchange (Diffie-Hellman)" est assez complète, mais leur explication des mathématiques derrière DH est la meilleure que j'ai rencontrée jusqu'à présent sur tous les supports (et certainement meilleure que ce que je pourrais personnellement écrire pour vous ici). Regardez ici.

Stanislav Bashkyrtsev
2019-12-09 00:51:17 UTC
view on stackexchange narkive permalink

Objectif de Diffie – Hellman: partager secrètement un numéro entre deux parties via une chaîne ouverte.

Premier rappel de l'école ces règles d'exponentiation: (xᵃ) ᵇ = xᵃᵇ = xᵇᵃ par exemple (2³) ⁴ = (2⁴) ³ = 4096 . L'idée est que si Alice envoie x et xᵃ à Bob, alors ni Bob ni personne d'autre ne peut calculer a . Il est facile de dire ce qu'est 2³, mais étant donné 8, il est difficile de dire à quelle puissance 2 doit être amenée pour obtenir 8. Cela se résume donc à:

  1. Alice et Bob sont d'accord sur un nombre x qui peut être connu de n'importe qui, disons 2
  2. Alice génère a = 3 et envoie 2³ = 8 à Bob
  3. Bob génère le numéro b = 4 et envoie 2⁴ = 16 à Alice
  4. Alice calcule 16³ = 4096 et Bob calcule 8⁴=4096

Donc Alice & Bob connaît tous les deux 4096, mais personne d'autre ne sait a et b donc impossible de calculer xᵃᵇ.

En réalité, calculer les logarithmes n'est pas si compliqué. Mais cela devient compliqué une fois que l ' arithmétique modulaire est incluse.

eigenfield
2019-12-19 15:51:10 UTC
view on stackexchange narkive permalink

En anglais simple sans utiliser d'expressions mathématiques comme dans les réponses ci-dessus, l ' Diffie-Hellman Key Exchange est une invention de Diffie et Hellman.

L'invention concerne un moyen pour deux personnes de s'entendre sur le même nombre. Ce numéro commun convenu sera alors utilisé à toutes fins souhaitées par les deux personnes. Par exemple, après avoir suivi les étapes DH Key Exchange , le résultat final est que les deux personnes arrivent maintenant sur le même numéro. Aucune des deux personnes n'a le contrôle sur ce que sera ce numéro commun. L'invention DH Key Exchange garantit uniquement que les deux personnes arriveront à un numéro commun. Un exemple d'utilisation une fois que ce numéro commun est atteint est de transmettre les lettres de l'alphabet en utilisant ce numéro. Par exemple, si le nombre commun est 5, la lettre A devient F, la lettre B devient G et ainsi de suite lors de l'envoi d'un message. L'autre personne qui reçoit le message recule ensuite chaque lettre du message pour le lire.

Person-A et person-B ne pouvaient pas simplement parler fort pour se mettre d'accord sur un numéro commun car une troisième personne-C l'entendra. Si person-C connaît le numéro convenu, alors il peut également lire le message secret. DH Key Exchange nécessite toujours qu'il y ait toujours une troisième personne-C qui puisse écouter les messages entre personne-A et personne-B et ce scénario de trois personnes est tout le but de l'invention sur la façon de rendre personne-C incapable de lire les messages codés secrets entre personne-A et personne-B .

Lors des premières étapes de l ' échange de clés DH , personne-A et personne-B enverront des numéros dans les deux sens cette phase précoce person-C peut lire ces premiers messages. Dans la deuxième phase, personne-A et personne-B enverront des messages chiffrés que personne-C ne pourra plus lire. Bien que personne-C puisse entendre les messages initiaux lors des premières étapes, personne-C ne peut pas arriver au numéro convenu que personne-A et person-B ont maintenant.

Diffie et Hellman ont reçu le Turing Award en 2015 pour cette invention.

Luc
2020-01-20 03:14:14 UTC
view on stackexchange narkive permalink

J'ai écrit ceci une fois comme concept d'une conférence que je n'ai jamais donnée. Il démontre une vraie cryptographie en utilisant un niveau de mathématiques que tout le monde peut faire après le lycée.

Comme il est écrit comme un discours, c'est Diffie-Hellman en anglais simple!

Salut toi! Configurons un canal crypté. Je vous enverrai ma clé et vous m'enverrez la vôtre, puis nous pourrons parler en privé.

Qu'avez-vous dit? Tout le monde peut nous entendre? Oui, ce n'est pas un problème!

Nous pouvons utiliser Diffie-Hellman. Pensez simplement à un nombre aléatoire et augmentez 5 à la puissance de ce nombre aléatoire. Divisez le résultat par 23 et prenez le reste. Donne moi ça. Le nombre aléatoire original, vous devez garder le secret, les autres nombres sont tous connus du public.

Votre reste est 8? D'accord. Mon reste est de 10. Maintenant, élevez à nouveau mon reste à la puissance de votre nombre aléatoire secret, et divisez à nouveau par 23, et prenez le reste. Même chose, facile. Je ferai la même chose avec votre numéro et mon numéro aléatoire secret.

Vous avez le résultat? Bien moi aussi! Je sais que vous en avez 6, tout comme moi, et pourtant personne d'autre dans cette salle n'aurait pu calculer cela. Ils auraient pu essayer toutes les combinaisons possibles jusqu'à trouver les nombres aléatoires qui correspondent à ce qu'ils ont entendu (8 de votre côté et 10 du mien), mais il n'y a aucun moyen de calculer cela plus efficacement qu'en essayant toutes les possibilités. Nous aurions pu utiliser le résultat, 6, comme mot de passe. Personne n'aurait connu le mot de passe que nous utilisons, malgré l'échange. Mais c'est un mot de passe très faible. La prochaine fois, nous devrions choisir des nombres plus grands et utiliser une calculatrice pour créer un mot de passe plus long et plus fort.

Notez que cela a fonctionné parce que nous pouvons nous voir. Je sais que ce n'est pas quelqu'un d'autre qui parle quand tu me dis que ton chiffre est 8 parce que je peux voir tes lèvres bouger. Sur Internet, quelqu'un pourrait lancer des attaques contre cela en prétendant être l'autre côté et en nous donnant de faux numéros. Comment nous prévenons ces attaques est un sujet pour un autre jour.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...