Übersicht über den ECDH-Algorithmus (CNG-Beispiel)
Aktualisiert: Juli 2008
Das Elliptic Curve Diffie-Hellman (ECDH)-Schlüsselvereinbarungsprotokoll ermöglicht zwei Benutzern die Erstellung eines gemeinsamen Geheimvertrags. Dies kann über ein nicht gesichertes, öffentliches Medium erfolgen, ohne dass zuvor private Informationen ausgetauscht wurden. Der gemeinsame Geheimvertrag wird üblicherweise zur Ableitung von Schlüsselmaterial verwendet. Ein symmetrischer Algorithmus wie der erweiterte Verschlüsselungsstandard Advanced Encryption Standard (AES)-Algorithmus kann mit dem Schlüsselmaterial nachfolgende Nachrichten verschlüsseln.
Im Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation werden die CNG-Implementierungen des ECDH-Algorithmus und des AES-Algorithmus dargestellt. Alice, Bob und Mallory erstellen bei der Erstellung von Communicator-Objekte kryptografische Schlüssel in ihren Run-Methoden.
ECDH-Mathematik
Das ECDH-Protokoll beruht auf den beiden öffentlichen Parametern p und g. Beim Parameter p handelt es sich um eine große Primzahl, während der Parameter g eine ganze Zahl ist, die kleiner als p ist. Diese beiden Parameter werden über einen nicht gesicherten Kanal ausgetauscht. Nachdem Alice und Bob die beiden öffentlichen Parameter empfangen haben, wählen sie private ganze Zahlen aus. Alice wählt a aus, und Bob wählt b aus. Diese Werte werden als private Schlüssel bezeichnet.
Alice und Bob erstellen dann mithilfe der öffentlichen Parameter und ihrer privaten Schlüssel öffentliche Schlüssel. Alice verwendet (g^a) mod p, und Bob verwendet (g^b) mod p. Dies sind asymmetrische Schlüssel, da sie nicht übereinstimmen.
Alice und Bob tauschen diese öffentlichen Schlüssel aus und verwenden sie, um ihren gemeinsamen Geheimvertrag zu berechnen. Durch die Mathematik, die hinter ECDH steht, wird sichergestellt, dass Alice und Bob denselben gemeinsamen Geheimvertrag errechnen, obwohl beide den privaten Schlüssel des anderen nicht kennen.
Hinweis: |
---|
Nur a, b und g^ab = g^ba werden geheim gehalten. Alle anderen Werte sind öffentlich. |
Jeder, der den Austausch abfängt, kann p, g und beide öffentlichen Schlüssel kopieren. Die Erstellung eines gemeinsamen Geheimvertrags aus den vier öffentlich geteilten Werten ist jedoch ohne die Kenntnis der privaten Schlüssel von Alice und Bob rechentechnisch undurchführbar.
Der Aufwand der Entschlüsselung einer ECDH-verschlüsselten Nachricht durch einen Brute-Force-Angriff (d. h. durch den Versuch der Entschlüsselung mit allen möglichen Schlüsseln) ist von derselben Größenordnung wie das Problem des diskreten Logarithmus. Mit dem ECDH-Algorithmus wird dasselbe Maß an Sicherheit jedoch mit kürzeren Schlüsseln erreicht, da er auf elliptischen Kurven anstelle von logarithmischen Kurven beruht.
Beispiel für ECDH
Im folgenden Beispiel werden kleine ganze Zahlen verwendet, um den ECDH-Algorithmus zu veranschaulichen.
Alice und Bob einigen sich auf eine Primzahl p und eine ganze Basiszahl g:
p = 83, g = 8
Alice wählt eine geheime ganze Zahl a = 9 aus und sendet Bob dann (g^a) mod p:
(8^9) mod 83 = 5
Bob wählt eine geheime ganze Zahl b = 21 aus und sendet Alice dann (g^b) mod p:
(8^21) mod 83 = 18
Alice berechnet ( ( (g^b) mod p)^a) mod p:
(18^9) mod 83 = 24
Bob berechnet ( ( (g^a) mod p)^b) mod p:
(5^21) mod 83 = 24
Alice und Bob berechnen denselben Wert (24), da g^(ab) = g^(ba). Dieser Wert ist der gemeinsame Geheimvertrag. Alice und Bob leiten mit diesem Wert das Schlüsselmaterial ab, das vom AES-Algorithmus zum Verschlüsseln ihrer Nachrichten verwendet wird.
In diesem Beispiel wird ein gemeinsamer Geheimvertrag mit dem Wert 24 erstellt. Da dies ein kleiner Wert ist, könnte eine damit verschlüsselte Nachricht mit wenig Aufwand durch einen Brute-Force-Angriff entschlüsselt werden. In einem realen Szenario würden für p, g, a und b viel größere Zahlen verwendet, und es wäre ein Computer zum Erstellen des entsprechenden gemeinsamen Geheimvertrags nötig.
Die im Beispiel für sichere Kommunikation verwendeten CNG-Klassen abstrahieren die komplexe Mathematik. Mit ihrer Hilfe können Sie sich auf die Implementierung von Sicherheitslösungen konzentrieren, statt sich mit dem Multiplizieren großer Zahlen zu beschäftigen.
Einschränkungen des Protokolls
Das ECDH-Schlüsselaustauschprotokoll schützt nicht vor "Man-in-the-Middle"-Angriffen, da die Absender der öffentlichen Schlüssel nicht authentifiziert werden. Wenn der abhörende Mallory Alices öffentlichen Schlüssel abfängt, kann er ihn durch seinen eigenen öffentlichen Schlüssel ersetzen und diesen an Bob senden. Mallory kann auch Bobs öffentlichen Schlüssel abfangen, ihn durch seinen eigenen ersetzen und diesen an Alice senden. Mallory kann dann problemlos alle zwischen Alice und Bob gesendeten Nachrichten entschlüsseln. Er kann die Nachrichten verändern, mit seinen eigenen Schlüsseln neu verschlüsseln und sie dann an den jeweiligen Empfänger senden.
Um dieses Problem zu umgehen, können Alice und Bob die öffentlichen Schlüssel vor dem Austausch mit digitalen Signaturen signieren. Hierfür gibt es zwei Möglichkeiten:
Die Verwendung eines sicheren Mediums, wie ein Gespräch oder einen vertrauenswürdigen Kurier, zum Übermitteln eines digitalen Signaturschlüssels zwischen den beiden Parteien.
Die Verwendung einer öffentlichen Zertifizierungsstelle (CA), um beiden Seiten einen vertrauenswürdigen digitalen Signaturschlüssel bereitzustellen.
In beiden Fällen muss ein externes Authentifizierungsschema verwendet werden, um die Identität der Absender der öffentlichen Schlüssel zu überprüfen. Im CNG-Beispiel wird dargestellt, was geschehen kann, wenn die Absender der Schlüssel nicht authentifiziert werden. Es ist absichtlich so verfasst, dass eine Sicherheitslücke vorhanden ist.
Symmetrische und asymmetrische Schlüssel
Asymmetrische Systeme wie ECDH sind sehr langsam. Daher werden sie nicht zum Verschlüsseln großer Nachrichten verwendet. Stattdessen werden symmetrische Systeme wie AES verwendet, die häufig viel schneller sind.
In einer typischen kryptografischen Lösung wird mithilfe eines asymmetrischen Systems ein symmetrischer gemeinsamer Geheimvertrag abgeleitet. Mit dem gemeinsamen Geheimvertrag wird dann Schlüsselmaterial für die Verschlüsselung der Nachrichten mit einem symmetrischen Algorithmus abgeleitet.
Im CNG-Beispiel für sichere Kommunikation wird dieses Verhalten wie folgt modelliert:
Es wird ein asymmetrischer Algorithmus, die CNG-Implementierung des ECDH-Algorithmus (die ECDiffieHellmanCng-Klasse), zum Ableiten eines symmetrischen Verschlüsselungsschlüssels (des gemeinsamen Geheimvertrags) verwendet.
Dieser Schlüssel wird dann von der ECDiffieHellmanCng.DeriveKeyMaterial-Methode von CNG verwendet, um Schlüsselmaterial abzuleiten. Die CNG-Implementierung des symmetrischen AES-Algorithmus (die Aes-Klasse) verwendet das Schlüsselmaterial zum Verschlüsseln der Nachrichten.
Siehe auch
Konzepte
Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation
Änderungsprotokoll
Date |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2008 |
Thema hinzugefügt. |
Informationsergänzung. |