L'attaque de l'homme du milieu (HDM) ou man in the middle attack (MITM) en cryptographie est une attaque qui a pour but d'intercepter les communications entre deux parties, sans que ni l'une ni l'autre ne puisse se douter que le canal de communication entre elles a été compromis. L'attaquant doit d'abord être capable d'observer et d'intercepter les messages d'une victime à l'autre. L'attaque "homme du milieu" est particulièrement applicable dans le protocole original d'échange de clés Diffie-Hellman, quand il est utilisé sans authentification.
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.
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 :
Il existe différents moyens pour se prémunir de cette attaque :
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.