Communication sécurisée Cryptography Next Generation (CNG), exemple
L'exemple de communication sécurisée CNG (Cryptography Next Generation) présente une solution de chiffrement à une attaque de l'intercepteur.Il simule des communications entre trois personnes, Alice, Bob et Mallory, au sein d'une agence de publicité fictive.L'exemple utilise des classes CNG, un transport de canaux nommés et des fenêtres de console interactives pour illustrer les solutions de sécurité en cas d'attaque de l'intercepteur.
Il s'agit d'un exemple avancé qui suppose des connaissances en chiffrement, en communication entre processus et en sécurité réseau.
Notes
Les classes CNG sont uniquement disponibles dans Windows Vista et les systèmes d'exploitation Windows suivants.
Cette rubrique fournit une vue d'ensemble de l'exemple CNG.Elle décrit les éléments suivants :
Scénario de l'exemple
Failles de sécurité de l'outil de messagerie instantanée
Version 1: canaux nommés
Versions 2 à 5 : améliorations incrémentielles de la sécurité
Résultats des tests
Exemple de code
Conventions d'attribution d'un nom
Informations détaillées
Scénario de l'exemple
Une agence de publicité développe un outil de messagerie instantanée qui s'exécute sur le bureau.Tous les employés peuvent consulter les messages entrés dans l'outil.
Alice et Bob travaillent au service commercial.Ils utilisent l'outil de messagerie instantanée pour s'échanger des contacts commerciaux.Mallory est un ingénieur réseau qui travaille aux opérations système.Il surveille secrètement les messages d'Alice et de Bob.Une fois par mois, il copie les contacts commerciaux intéressants et les vend aux concurrents pour son profit personnel.
Après plusieurs mois, la société s'aperçoit que quelqu'un vole des contacts commerciaux et que la communication entre services est compromise.Elle décide de créer de nouvel un outil de messagerie instantanée et commence par analyser la sécurité de l'outil actuel.
Failles de sécurité de l'outil de messagerie instantanée
La société s'aperçoit que l'outil actuel comporte les failles de sécurité suivantes :
Il transfère des messages texte en clair (non chiffrés).
Il diffuse ces messages sur le réseau d'entreprise.
Les messages peuvent être consultés et même enregistrés par n'importe qui.
La société décide que le nouvel outil de messagerie instantanée devra résoudre ces problèmes en permettant la communication point à point sur le réseau d'entreprise.
Version 1: canaux nommés
La société crée un outil de messagerie instantanée qui repose sur les canaux nommés pour la communication entre processus (IPC).Cette version n'utilise pas le chiffrement ni les signatures numériques.
Alice et Bob reçoivent les instructions suivantes :
Créez une connexion initiale sur un canal nommé PublicChannel.
Échangez avec votre correspondant le nom d'un canal privé, puis déconnectez-vous immédiatement de PublicChannel.
Connectez-vous à l'aide du canal privé, puis échangez vos contacts commerciaux.
La société espère que les canaux de communication point à point l'isoleront suffisamment du reste du réseau d'entreprise.Elle comprend rapidement que cette solution est insuffisante.Mallory découvre comment pirater le nouveau système.Il continue à voler des contacts commerciaux et dissimule ses méfaits en modifiant les adresses des contacts.
La société décide d'ajouter des dispositifs de sécurité à l'outil de messagerie instantanée pour mettre fin aux vols.
Versions 2 à 5 : améliorations incrémentielles de la sécurité
Le nouveau logiciel est testé et amélioré pendant plusieurs mois.À la fin des tests, quatre versions supplémentaires de l'outil de messagerie instantanée ont été créées.Chaque version repose sur la version précédente :
La version 2 intègre le chiffrement basé sur CNG qui utilise des paires de clés publiques/privées.
La version 3 utilise une signature numérique pour signer les clés de chiffrement et les messages.
La version 4 ajoute un canal privé afin de transmettre une signature numérique pour signer les clés de chiffrement et les messages.
La version 5 met fin aux intrusions en arrêtant toutes les sessions de messagerie instantanée qui reçoivent des clés signées avec des signatures non valides.
Résultats des tests
La version 2 utilise un algorithme de chiffrement hautement sécurisé.Le déchiffrement nécessite beaucoup de ressources et de temps.La société est donc surprise d'apprendre que cette solution a été détournée.
La version 3, qui utilise des signatures numériques, n'empêche pas non plus le vol.Cette version permet néanmoins à la société de faire une découverte importante : si les clés de chiffrement et la signature numérique sont interceptées et remplacées, le canal utilisé pour les transmettre les clés et la signature est probablement la source du problème.
La société teste l'idée en ajoutant un canal privé à la version 4 pour transmettre une signature numérique.La version 4 affiche également un avertissement lorsqu'une clé ou un message comporte une signature non valide.Seules deux personnes de la société bénéficient de la version 4 : Alice et Bob.Cette version affiche des avertissements de sécurité dès l'envoi des premiers messages d'Alice et Bob.La société finit par comprendre que son réseau fait l'objet d'une attaque de l'intercepteur.
La version 5 est identique la 4 sauf qu'elle arrête la session à la première violation de sécurité.Dès l'installation de cette version, le vol des contacts commerciaux s'arrête.
Exemple de code
Le code fourni dans cet exemple représente les cinq versions de sécurité.Une vue d'ensemble du code est disponible dans Vue d'ensemble du code source (Exemple CNG).
Notes
Cet exemple ne fournit pas de solution de sécurité complète.Son seul objectif est de présenter l'API CNG dans un scénario de sécurité plausible.Une application de sécurité complète n'entre pas dans le cadre de cet exemple.
Conventions d'affectation de noms
La documentation de cet exemple fait référence aux cinq versions du logiciel et aux niveaux de sécurité correspondants selon leurs numéros (par exemple, « version 1 », « version 2 », etc.).
Selon le contexte, les noms « Alice », « Bob » et « Mallory » peuvent faire référence aux trois personnes impliquées dans le scénario de l'exemple ou aux trois applications Visual Studio.Pour des raisons de simplicité, la documentation utilise le même nom pour faire référence aux deux.Par exemple, « Alice charge automatiquement Bob et Mallory » signifie que l'application Alice charge automatiquement les applications Bob et Mallory.
Informations détaillées
Les rubriques suivantes fournissent des informations détaillées concernant le scénario et le code de l'exemple :
Implémentation d'une attaque de l'intercepteur explique comment l'exemple illustre l'emprunt d'identité (attaque de l'intercepteur classique).
Vue d'ensemble de l'algorithme ECDH décrit brièvement le problème mathématique de l'algorithme ECDH (Elliptic Curve Diffie-Hellman).
Échange de clés et de messages étape par étape fournit un guide détaillé des procédures d'échange de clés et de messages utilisées dans les cinq versions de l'exemple.
Comment : créer et exécuter l'exemple CNG décrit l'architecture de l'exemple et fournit des instructions concernant la création, l'exécution et l'utilisation.Cette section contient également des listes de codes sources.
Vue d'ensemble du code source décrit l'interaction et le flux des composants de code.
Analyse du code des classes d'utilitaires décrit le contenu et l'objectif du fichier Utilities.cs.
Analyse du code de la classe ChannelManager décrit le contenu et l'objectif du fichier ChannelManager.cs.
Analyse du code de la classe Communicator décrit le contenu et l'objectif du fichier Communicator.cs.
Sortie attendue affiche la sortie de l'exemple de code.
Voir aussi
Concepts
Modèle de chiffrement de .NET Framework