Partager via


Implémentation d'une attaque de l'intercepteur (« Man-in-the-Middle ») (Exemple CNG)

L'exemple de communication sécurisée CNG (Cryptography Next Generation) présente une attaque de l'intercepteur dans laquelle un tiers (Mallory) s'insère entre deux points de terminaison de communication (Alice et Bob).

L'exemple CNG utilise des canaux nommés pour fournir une communication entre processus.Alice agit toujours en tant que serveur de canaux nommé et Bob en tant que client de canal nommé.Mallory a un rôle de client avec Alice (il emprunte l'identité de Bob) et un rôle de serveur avec Bob (il emprunte l'identité d'Alice).On parle dans ce cas de substitution, qui constitue une attaque de l'intercepteur classique.

Pour plus d'informations sur ce scénario, consultez Échange de clés et de messages étape par étape (Exemple CNG).

Dans l'exemple CNG, le terme « emprunt d'identité » est utilisé pour désigner le fait que Mallory se substitue à Bob ou à Alice.Toutefois, l'emprunt d'identité a également une signification spécifique lorsqu'il fait référence aux canaux nommés, comme la documentation le décrit pour la méthode NamedPipeServerStream.RunAsClient(PipeStreamImpersonationWorker).

Signatures numériques

Les signatures numériques sont souvent utilisées pour empêcher les attaques de l'intercepteur.En général, les clés de signature sont fournies et gérées par une infrastructure à clé publique (PKI).Cette dernière est rarement locale vis-à-vis de l'ordinateur.Elle est en général prise en charge par un groupe de sécurité ou d'administration ou par une autorité de certification.L'utilisation d'une telle infrastructure n'entre pas dans le cadre de cet exemple.En revanche, l'exemple montre comment utiliser les classes CNG pour créer des clés de signature numérique locales.

Points d'insertion

Une attaque de l'intercepteur requiert un point d'insertion dans la chaîne du signal.Cela peut se produire lorsque des périphériques matériels physiques qui gèrent la messagerie sont mis en péril.Par exemple, les câbles peuvent être intervertis ou redirigés et les serveurs de télécommunication peuvent être piratés et éventuellement reconfigurés au niveau électrique.La reconfiguration du logiciel qui gère le réseau est cependant une technique plus probable.Les ports peuvent par exemple être réaffectés ou redirigés et un point d'insertion de logiciel peut être établi dans l'application de communication.

Une petite vulnérabilité

Lorsqu'un fichier est ouvert en mode écriture, il est verrouillé contre l'utilisation par d'autres applications.De même, lorsqu'un client de canal se connecte à un serveur de canaux, le canal est verrouillé en utilisation exclusive par le client, et ce jusqu'à la déconnexion du client.

Un canal client/serveur établi est très difficile à pirater.Cependant, dans l'exemple CNG, Mallory peut facilement intercepter et modifier les messages échangés par Alice et Bob.En fait, Mallory ne s'introduit pas dans un canal établi.Il utilise une petite vulnérabilité négligée par les protocoles de communication de la société.

Alice et Bob ont reçu pour instruction d'utiliser le canal PublicChannel pour partager le nom d'un canal privé, puis d'utiliser le canal privé pour les contacts commerciaux.Ces instructions permettent à Mallory d'obtenir le nom du canal privé et de s'insérer entre Alice et Bob.Les deux sections suivantes expliquent comment il a procédé.

Minutage

La réussite d'une attaque de l'intercepteur dépend souvent d'un élément subtil, tel que le minutage.L'exemple CNG illustre ce concept.

Mallory sait que le nouveau logiciel de messagerie instantanée développé par la société repose sur des canaux nommés.Il sait qu'Alice et Bob ouvriront un canal nommé PublicChannel.Il sait également qu'Alice enverra le nom d'un deuxième canal à Bob.Alice et Bob fermeront le canal PublicChannel, puis ouvriront et utiliseront le deuxième canal pour échanger des informations concernant les contacts commerciaux.

Pour voler les contacts commerciaux, Mallory doit se procurer le nom du deuxième canal auprès d'Alice et empêcher Bob de l'obtenir.Il lui suffit pour cela d'ouvrir l'extrémité cliente du canal PublicChannel avant Bob.

Le code source utilise une attente de 200 millisecondes dans l'instruction System.Threading.Thread.Sleep(200) de la méthode Run de Bob pour permettre cette interception.L'instruction wait est délibérée et très visible, car l'objectif de l'exemple est de montrer une attaque de l'intercepteur.Dans la réalité, les scénarios de sécurité sont beaucoup plus difficiles à analyser.Ils impliquent des applications logicielles, des protocoles de transmission, des authentifications réseau, des comptes d'utilisateurs, des enregistrements, des autorisations, la formation des utilisateurs, le contrôle de trafic et d'autres techniques d'analyse.

Malgré ces méthodes sophistiquées, un temps de propagation de 200 millisecondes dans un serveur réseau peut facilement passer inaperçu pendant des mois.C'est pourquoi cinq versions distinctes de l'exemple CNG ont été créées avant que le problème d'interception ne soit résolu.

Substitution

En interceptant le nom du deuxième canal (AliceAndBobChannel), Mallory peut espionner les communications d'Alice et de Bob et modifier les messages qu'ils s'envoient.Pour effectuer cette substitution, il procède de la façon suivante :

  1. Alice ouvre le canal PublicChannel en mode serveur et attend que Bob se connecte.

  2. Mallory se connecte au canal PublicChannel en mode client et reçoit le nom du deuxième canal (AliceAndBobChannel) par Alice.

  3. Alice et Mallory ferment le canal PublicChannel.

  4. Alice ouvre le canal AliceAndBobChannel en mode serveur et Mallory s'y connecte en mode client.

  5. Mallory se connecte à Bob en tant que serveur sur le PublicChannel et Bob se connecte en tant que client.

  6. Mallory envoie le nom de canal AliceAndBobChannel1 (il modifie légèrement le nom) à Bob.Bob croit recevoir cette information d'Alice.

  7. Mallory et Bob se déconnectent du canal PublicChannel.

  8. Mallory ouvre le canal AliceAndBobChannel1 en tant que serveur et Bob s'y connecte en tant que client.

Mallory est parvenu à s'insérer entre Alice et Bob.

Mallory continue à agir en tant que client vis-à-vis d'Alice (sur le canal AliceAndBobChannel) et en tant que serveur vis-à-vis de Bob (sur le canal AliceAndBobChannel1).Il peut maintenant lire, modifier, et retransmettre des messages comme il le souhaite.Alice et Bob ne se rendent pas compte que quelqu'un intercepte et modifie leurs messages.

Une attaque de l'intercepteur réussie est souvent subtile.Pour éviter de se faire détecter, Mallory reste discret et ne modifie que légèrement les contacts commerciaux.Il ne souhaite pas que ses modifications soient visibles.

Conclusion

La détection d'une attaque de l'intercepteur exige du temps, de la patience et de la vigilance.Cet exemple ne concerne qu'un simple délai de 200 millisecondes.Un cinquième de seconde suffit à menacer la sécurité de l'ensemble du service commercial.

Voir aussi

Concepts

Services de chiffrement

Modèle de chiffrement de .NET Framework

Services de chiffrement

Autres ressources

Tâches de chiffrement