Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation
Aktualisiert: Juli 2008
Im Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation wird eine kryptografische Lösung für einen Man-in-the-middle-Angriff modelliert. Es wird die Kommunikation zwischen den drei Personen Alice, Bob und Melvin in einem fiktiven Werbeunternehmen simuliert. Im Beispiel werden CNG-Klassen, Transport über Named Pipes sowie interaktive Konsolenfenster verwendet, um eine sichere Lösung für einen Man-in-the-middle-Angriff darzustellen.
Dies ist ein fortgeschrittenes Beispiel und setzt Kenntnisse in Kryptografie, prozessübergreifender Kommunikation und Netzwerksicherheit voraus.
Dieses Kapitel bietet eine Übersicht über das CNG-Beispiel. Es werden folgende Punkte diskutiert:
Das Beispielszenario
Sicherheitsrisiken des IM-Tools
Version 1: Named Pipes
Versionen 2 bis 5: Inkrementelle Sicherheitsverbesserungen
Testergebnisse
Der Beispielcode
Namenskonventionen
Ausführliche Informationen
Das Beispielszenario
Ein Werbeunternehmen entwickelt ein Instant Messaging (IM)-Tool, das auf dem Desktop ausgeführt wird. Alle Mitarbeiter können die in das Tool eingegebenen Nachrichten anzeigen.
Alice und Bob arbeiten im Vertrieb. Sie verwenden das IM-Tool, um einander Vertriebskontakte zu senden. Mallory ist ein Netzwerkingenieur, der an Systemoperationen arbeitet. Er überwacht heimlich die Nachrichten von Alice und Bob. Einmal im Monat kopiert er wertvolle Vertriebskontakte und verkauft sie zur persönlichen Bereicherung an Konkurrenten des Unternehmens.
Nach mehreren Monaten bemerkt das Unternehmen, dass jemand Vertriebskontakte stiehlt und die Kommunikation innerhalb der Abteilung kompromittiert ist. Man entscheidet sich, ein neues IM-Tool zu erstellen und beginnt mit der Sicherheitsanalyse des aktuellen Tools.
Sicherheitsrisiken des IM-Tools
Das Unternehmen stellt fest, dass das aktuelle IM-Tool die folgenden Sicherheitsrisiken aufweist:
Es überträgt Klartext-Nachrichten (unverschlüsselte Nachrichten).
Es überträgt diese Nachrichten über das Unternehmensnetzwerk.
Die Nachrichten können von jedem Mitarbeiter angezeigt und sogar aufgezeichnet werden.
Das Unternehmen kommt zu dem Schluss, dass das neue IM-Tool diese Probleme lösen kann, indem es eine Punkt-zu-Punkt-Kommunikation im Unternehmensnetzwerk ermöglicht.
Version 1: Named Pipes
Das Unternehmen erstellt ein neues IM-Tool, das auf Named Pipes (oder Channels) für die prozessübergreifende Kommunikation (Interprocess Communication, IPC) beruht. In dieser Version werden keine Verschlüsselung oder digitalen Signaturen verwendet.
Alice und Bob erhalten die folgenden Anweisungen:
Erstellen Sie eine erste Verbindung über einen Channel mit dem Namen PublicChannel.
Senden Sie einander den Namen eines privaten Channels, und trennen Sie dann sofort die Verbindung mit PublicChannel.
Stellen Sie über den privaten Channel eine Verbindung her, und senden Sie einander Vertriebskontakte.
Das Unternehmen hofft, dass der Channel der Punkt-zu-Punkt-Kommunikation hinreichend gegen das übrige Unternehmensnetzwerk abgeschirmt ist. Bald wird deutlich, dass diese Lösung unzureichend ist. Mallory findet heraus, wie er das neue System unterlaufen kann. Er fährt fort, Vertriebskontakte zu stehlen und kaschiert seine Handlungen durch sorgfältiges Ändern der Kontaktadressen.
Das Unternehmen entscheidet sich, das IM-Tool mit Sicherheitsvorkehrungen auszustatten, um die Diebstähle zu beenden.
Versionen 2 bis 5: Inkrementelle Sicherheitsverbesserungen
Die neue Software wird mehrere Monate lang getestet und verbessert. Bis zum Abschluss der Tests werden vier weitere Versionen des IM-Tools erstellt. Jede Version wird auf Grundlage der vorherigen Version erstellt:
Version 2 integriert CNG-basierte Verschlüsselung, bei der öffentliche/private Schlüsselpaare verwendet werden.
Version 3 verwendet eine digitale Signatur zum Signieren von kryptografischen Schlüsseln und Nachrichten.
Version 4 fügt einen privaten Channel hinzu, um eine digitale Signatur zur Signierung kryptografischer Schlüssel und Nachrichten zu senden.
Version 5 verhindert Eingriffe, indem alle IM-Sitzungen beendet werden, die signierte Schlüssel mit ungültigen Signaturen empfangen.
Testergebnisse
Version 2 verwendet einen Verschlüsselungsalgorithmus von hoher Sicherheit. Die Entschlüsselung erfordert umfangreiche Ressourcen und viel Zeit. Aus diesem Grund ist das Unternehmen überrascht, dass die Verschlüsselung das Problem nicht löst.
Auch Version 3, die digitale Signaturen verwendet, verhindert den Diebstahl nicht. Jedoch hilft diese Version dem Unternehmen, eine wichtige Entdeckung zu machen: Wenn der kryptografische Schlüssel und die digitale Signatur abgefangen und ersetzt werden, muss die Ursache des Problems der Channel sein, auf dem der Schlüssel und die Signatur gesendet werden.
Dieser Verdacht wird getestet, indem zu Version 4 ein nicht öffentlicher Channel zum Senden einer digitalen Signatur hinzugefügt wird. Version 4 zeigt zudem eine Warnung an, wenn ein Schlüssel oder eine Nachricht über eine ungültige Signatur verfügt. Version 4 wird innerhalb des Unternehmens nur an Alice und Bob ausgegeben. In dieser Version werden Sicherheitswarnungen angezeigt, sobald Alice und Bob ihre ersten Nachrichten senden. Das Unternehmen erkennt schließlich, dass das Netzwerk einem Man-in-the-middle-Angriff ausgesetzt ist.
Version 5 ist mit Version 4 bis auf den Unterschied, dass die Sitzung beim ersten Fehler beendet wird, identisch. Der Diebstahl von Vertriebskontakten endet, sobald diese Version installiert ist.
Der Beispielcode
Der mit diesem Beispiel bereitgestellte Code zeigt die fünf Sicherheitsversionen. Ein Überblick über den Code wird unter Quellcodeübersicht (CNG-Beispiel) gegeben.
Hinweis: |
---|
Dieses Beispiel liefert keine Gesamtlösung für Sicherheitsprobleme. Der Zweck des Beispiels ist, die CNG-API in einem verständlichen Sicherheitsszenario zu veranschaulichen. Eine vollständige Sicherheitsanwendung überschreitet den Rahmen dieses Beispiels. |
Namenskonventionen
Die Dokumentation des Beispiels verweist mit Nummern auf die fünf Software-Versionen und die entsprechenden Sicherheitsstufen (zum Beispiel "Version 1", "Version 2" usw.).
Die Namen "Alice", "Bob" und "Mallory" verweisen je nach Kontext auf die drei Personen aus dem Beispiel oder auf die drei Visual Studio-Anwendungen. Der Einfachheit halber verwendet die Dokumentation jeweils denselben Namen, um auf beides zu verweisen. "Alice lädt Bob and Mallory automatisch" bedeutet beispielsweise, dass die Alice-Anwendung automatisch die Anwendungen Bob und Mallory lädt.
Ausführliche Informationen
Die folgenden Themen enthalten ausführliche Informationen zum Beispielszenario und -code:
In Implementieren eines Man-in-the-Middle-Angriffs wird beschrieben, wie das Beispiel den Identitätswechsel als typische Form eines Man-in-the-middle-Angriffs demonstriert.
In Übersicht über den ECDH-Algorithmus wird kurz die Mathematik des Elliptic Curve Diffie-Hellman (ECDH)-Algorithmus erläutert.
In Schrittweiser Austausch von Schlüsseln und Nachrichten wird eine Schritt-für-Schritt-Anleitung für die Prozeduren des Schlüssel- und Nachrichtenaustauschs bereitgestellt, die in den fünf Versionen des Beispiels verwendet werden.
In Gewusst wie: Erstellen und Ausführen des CNG-Beispiels wird die Architektur des Beispiels beschrieben und Hinweise zu Aufbau, Laufzeit und Benutzung gegeben. Dieser Abschnitt enthält zudem Quellcodeauflistungen.
In Quellcodeübersicht wird die Interaktion und der Fluss der Codekomponenten beschrieben.
In Codeanalyse der Dienstprogrammklassen werden Inhalt und Zweck der Utilities.cs-Datei beschrieben.
In Codeanalyse der ChannelManager-Klasse werden Inhalt und Ziel der ChannelManager.cs-Datei beschrieben.
In Codeanalyse der Communicator-Klasse werden Inhalt und Zweck der Datei Communicator.cs beschrieben.
In Erwartete Ausgabe wird die Ausgabe des Beispielcodes dargestellt.
Siehe auch
Konzepte
Das Kryptografiemodell in .NET Framework
Weitere Ressourcen
Änderungsprotokoll
Date |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Thema hinzugefügt. |
Informationsergänzung. |