Attaque de l'homme du milieu

Un article de Wikipédia, l'encyclopédie libre.

L'attaque de l'homme du milieu (HDM) ou man in the middle attack (MITM) en cryptographie, est une attaque dans laquelle l'attaquant est capable de lire, insérer et modifier comme il le souhaite les messages chiffrés entre deux parties, sans que ni l'un ni l'autre ne puisse se douter que la ligne entre eux a été compromise. L'attaquant doit d'abord être capable d'observer et d'intercepter les messages d'une victime à l'autre. L'attaque HDM est particulièrement applicable dans le protocole original d'échange de clés Diffie-Hellman, quand il est utilisé sans authentification.

Sommaire

[modifier] Le problème de l'échange des clés

Un des problèmes majeurs lorsque deux personnes veulent échanger des données chiffrées, est celui de la transmission des clés : pour s'assurer d'être les seuls à connaître ces informations secrètes, les correspondants doivent pouvoir l'échanger de façon confidentielle. Dans le cadre de la cryptographie symétrique, il faut disposer d'un canal sécurisé qui lui même nécessite une clé pour être établi. Le problème entre ainsi dans un cercle vicieux.

Il a été en grande partie résolu grâce à l'introduction de la cryptographie asymétrique. Dans ce cas, les deux personnes possèdent chacune leur clé publique (qui sert à chiffrer) et leur clé privée (qui sert à déchiffrer). Ainsi, seules les clés publiques sont échangées. Même si quelqu'un réussissait à intercepter et à lire ces clés publiques, elles ne lui seraient d'aucune utilité pour déchiffrer, en partant du principe que l'algorithme de chiffrement est cryptographiquement sûr.

[modifier] L'attaque de l'homme du milieu

L'attaque de l'homme du milieu ajoute comme condition supplémentaire que l'attaquant ait la possibilité non seulement de lire, mais de modifier les messages. Dans ce cas, même le chiffrement asymétrique est vulnérable. Toutefois, l'habilitation à modifier l'intégralité des messages qui transitent est en général très difficile à obtenir.

Le but de l'attaquant est de se faire passer pour l'un (voire les 2) des correspondants, en utilisant, par exemple :

  • L'ARP Spoofing : c'est probablement le cas le plus fréquent. Si l'un des interlocuteurs et l'attaquant se trouvent sur le même réseau local, il est possible, voire relativement aisé, pour l'attaquant de forcer les communications à transiter par son ordinateur en se faisant passer pour un « relais » (routeur, passerelle) indispensable. Il est alors assez simple de modifier ces communications.
  • Le Spoofing de DNS : L'attaquant altère le ou les serveur(s) DNS des parties de façon à rediriger vers lui leurs communications sans qu'elles s'en aperçoivent.
  • L'analyse de trafic et possiblement la vue non cryptée des transmissions
  • Le déni de service : l'attaquant peut par exemple bloquer toutes les communications avant d'attaquer un parti. L'ordinateur ne peut donc plus répondre et l'attaquant a la possibilité de prendre sa place.

[modifier] Déroulement

Alice et Bob veulent échanger des données confidentielles, et Charles veut les intercepter. Ils possèdent chacun une clé privée (resp. As, Bs et Cs) et une clé publique (resp Ap, Bp et Cp).

[modifier] Cas normal

Échange classique : Bob envoie un message à Alice
Échange classique : Bob envoie un message à Alice
  • Alice et Bob échangent leur clé publique. Charles peut les lire, il connaît donc Ap et Bp.
  • Si Alice veut envoyer un message à Bob, elle chiffre ce message avec Bp. Bob le déchiffre avec Bs.
  • Charles, qui ne possède que Bp, ne peut pas lire le message.

[modifier] Attaque

Admettons maintenant que Charles soit en mesure de modifier les échanges entre Alice et Bob.

  • Bob envoie sa clé publique à Alice. Charles l'intercepte, et renvoie à Alice sa propre clé publique (Cp) en se faisant passer pour Bob.
  • Lorsque Alice veut envoyer un message à Bob, elle utilise donc, sans le savoir, la clé de Charles.
  • Alice chiffre le message avec la clé publique de Charles et l'envoie à celui qu'elle croit être Bob.
  • Charles intercepte le message, le déchiffre avec sa clé privée (Cs) et peut lire le message.
  • Puis il chiffre à nouveau le message avec la clé publique de Bob (Bp), après l'avoir éventuellement modifié.
  • Bob déchiffre son message avec sa clé privée, et ne se doute de rien puisque cela fonctionne.

Ainsi, Alice et Bob sont chacun persuadés d'utiliser la clé de l'autre, alors qu'ils utilisent en réalité tous les deux la clé de Charles.

[modifier] Solutions

Il existe différents moyens pour se prémunir de cette attaque :

  • Obtenir la clé publique de son interlocuteur par un tiers de confiance. Si les deux interlocuteurs possèdent un contact en commun (le tiers de confiance) alors ce dernier peut servir d'intermédiaire pour transmettre les clés. Les infrastructures à clés publiques sont des systèmes ou des organismes qui permettent de vérifier la validité des clés en se basant principalement sur des certificats.
  • Échanger les clés par un moyen qui ne permet pas cette attaque : en main propre, par téléphone, etc.
  • Vérifier le niveau de confiance qui a été accordée à la clé que l'on a en sa possession : certains logiciels comme GnuPG proposent de mettre la clé publique en ligne sur un serveur. Sur ce serveur, d'autres utilisateurs peuvent faire connaître le degré de confiance qu'ils accordent à une clé. On obtient ainsi un graphe qui relie les différents utilisateurs.
  • Authentification avec un mot de passe ou autre système avancé, comme la reconnaissance vocale ou biologique.

Un « degré de certitude » est obtenu en appliquant des règles en fonction des valeurs présentes sur le chemin entre deux utilisateurs. Ce degré est informel, mais permet d'avoir une estimation de la pertinence d'une clé et l'identité qui lui est associée. Il ne doit toutefois pas être considéré comme une preuve de sécurité absolue.

[modifier] Voir aussi

[modifier] Lien externe


Mesures de sécurité cryptographique
Cryptographie : Preuve de sécurité | Sécurité inconditionnelle | IND-CPA | IND-CCA | Kerckhoffs | Malléabilité | Sécurité calculatoire | Hypothèses calculatoires | Confusion et diffusion
Cryptanalyse de base : Biais statistique | Corrélation | Dictionnaire | Force brute | Fréquence | Indice de coïncidence | Interpolation | Mot probable
Cryptanalyse par canal auxiliaire : Canaux auxiliaires : Acoustique | Consommation | Émanations EM | Faute | Sondage | Temporel
Cryptanalyse ciblée : Clé apparentée | Clé faible | EFF | Enigma | Glissement | Intégrale | Linéaire / Différentielle / Différentielle impossible / Différentielle-linéaire / Boomerang | Modes opératoires | Modulo n | Quadratique | Rectangle | Rencontre au milieu | Vigenère | χ²
Systèmes asymétriques : Clé apparentée | Clé faible | Homme au milieu | Sécurité sémantique
Fonctions de hachage : Effet avalanche | Linéaire / Différentielle | Paradoxe des anniversaires | Pseudo-collision
Autres : Anonymat | Confidentialité | Intégrité | Sécurité par l'obscurité


Audit de sécurité informatique
Test : Test | Génie logiciel | Prise d'empreinte de la pile TCP/IP
Outils : Fuzzing | Rétro-ingénierie | Boîte blanche | Boîte noire | Cryptanalyse
Attaque : Dépassement de tampon | Attaque de l'homme du milieu
Protection : Sécurité par l'obscurité
Audit : ISO/CEI 27001 | ISO/CEI 17799