web-dev-qa-db-fra.com

Diffie-Hellman Key Exchange Exchange Protocol vulnérable à l'homme à l'attaque intermédiaire?

Protocole d'échange de clé Diffie-Hellman vulnérable à l'homme à l'attaque moyenne? Si oui, alors quel type de mitm est-ce? Je crois que c'est une attaque de relecture ou une attaque de relais, pas sûre cependant.

2
Mohammad

Il est vulnérable dans une version. Juste pour être plus clair, les trois versions de base de Diffie-Hellman sont:

  1. Anonyme dh, où Alice et Bob nous envoient simplement des valeurs non signées;

  2. DH fixe (parfois simplement appelé dh);

  3. Éphémère DH (voir ci-dessous).

anonyme DH est facilement vulnérable à une attaque MITM, comme suit.

Alice génère une valeur X, Bob génère Y, Eve génère Z.

Alice envoie g ^ x mod p. Eve intercepte le message et change avec g ^ z (sa propre valeur aléatoire) Mod p, avant de l'envoyer à Bob.

Bob pense maintenant qu'Alice l'a envoyé g ^ z Mod p, car il n'y a pas de signature ni aucun autre mécanisme d'authentification.

Bob envoie g ^ y mod p. Eve intercepte le message, change avec g ^ z Mod p et l'envoie à Alice.

Alice calcule maintenant (g ^ z mod p) ^ x mod p.

Bob est maintenant calcule (g ^ z mod p) ^ y mod p.

Eve calcule (g ^ x mod p) ^ z mod p, qui est son secret avec Alice, et (g ^ y mod p) ^ z mod p, qui est son secret avec Bob.

Alice crypte "Je t'aime" avec (g ^ x mod p) ^ z Mod p.

Cette clé a été convenu avec Eve, la veille peut donc déchiffrer le message, le changer "je te déteste" et le recrutez avec son secret avec Bob. En d'autres termes, EVE peut agir en tant que proxy en ayant convenu d'une clé différente avec Alice et Bob.

Cela peut être évité à l'aide d'un DH fixe - où g ^ x et g ^ y sont signés par une autorité de certification approuvée - ou, encore meilleure, éphémère éphémère.

Dans Ephemeral DH (DHE) X, y sont changés à chaque fois, c'est-à-dire à chaque session. Ils sont également signés afin d'empêcher le MITM. Cependant, parce qu'ils changent toujours et que la signature change avec le message signé, comment l'autre partie peut-elle vérifier l'authenticité de la signature?

La solution DHE est simple: utilisez un certificat. Si Alice peut signer son propre g ^ x avec une clé privée et prouve que la clé publique correspondante est associée à elle, via un certificat, Bob peut vérifier le certificat et, en le faisant, vérifier l'identité d'Alice et donc l'authenticité de son g ^ X.

Par conséquent, DHE fonctionne comme ceci.

  1. Alice obtient précédemment par une autorité de certification de confiance (AR) disant "Nom: Alice, Publickey: Pkalice. Signé par CA".

Plus officiellement, le certificat est Cert_alice = (Alice, Pkalice) _CA, ce qui signifie qu'il contient la clé publique d'Alice Pkalice et est signé par la ca.

La même chose est faite par Bob, qui obtient un certificat similaire.

  1. Alice génère x et calcule g ^ x mod p.

  2. Alice envoie ensuite deux messages à Bob, M1 = (g ^ x mod p, pkalice) _ALice (signé par Alice) et m2 = cert_alice.

  3. Bob vérifie que M2 a été vraiment signé par la CA de confiance (en utilisant le PKCA connu pour voir si le message signé correspond à la signature) et qu'il appartient vraiment à Alice.

  4. Si M2 a passé les tests précédents, cela signifie qu'il a été envoyé par Alice (à moins que quelqu'un ait volé la clé privée d'Alice et que le certificat est toujours valide). À ce stade, BOB utilise le pkalice certifié, qui était à l'intérieur de M2, pour vérifier la signature de M1. Si tout va bien, Bob stocke G ^ x Mod p.

  5. Bob génère Y et calcule g ^ y mod p.

  6. Bob envoie ensuite deux messages à Alice, M3 = (g ^ y mod p, pkbob) _bob (signé par Bob) et m4 = cert_bob.

  7. Alice vérifie la validité de M4 (voir 4).

  8. Si M4 a été complètement vérifié, Alice utilise le PKBOB certifié, qui était à l'intérieur de M4, pour vérifier la signature de M3. Si tout va bien, Alice stocke G ^ y Mod p.

  9. Alice et Bob calculent séparément (g ^ y mod p) ^ x mod p == (g ^ x mod p) ^ y mod p.

À chaque nouvelle session, redémarrez de 2.

Bien sûr, en utilisant des messages signés après que l'échange DH permettrait de détecter immédiatement que quelque chose de bizarre s'est passé, mais rien dans Anonyme DH elle-même qui empêche les attaques de MITM.

3
A. Darwin