it-swarm.com.de

Warum ist ein Schlüsselaustausch überhaupt notwendig?

Angenommen, "Alice" und "Bob" möchten über ein unsicheres Netzwerk miteinander kommunizieren.

Mit dem Diffie-Hellman-Schlüsselaustausch können sie endlich den gleichen symmetrischen Schlüssel erhalten. Soweit ich weiß, müssen sie jedoch überhaupt nicht denselben symmetrischen Schlüssel erhalten, da sie nur asymmetrischen Schlüssel ohne Schlüsselaustausch verwenden können.

Mit dem RSA-Algorithmus können Alice und Bob einfach ihre öffentlichen Schlüssel teilen ( public_a, public_b) und ihre privaten Schlüssel behalten ( private_a, private_b). Alice kann Bob einfach die Nachrichten senden, die mit public_b Verschlüsselt sind, und Bob kann sie mit private_b Entschlüsseln. Sie können weiterhin über ein unsicheres Netzwerk kommunizieren, überhaupt ohne Diffie-Hellman-Schlüsselaustausch.

Ich weiß, dass ich mich irren könnte, aber ich bin mir nicht sicher, wo ich mich geirrt habe. Hat jemand Ideen, warum und wann Diffie-Hellman-Schlüsselaustausch (oder ein Schlüsselaustausch) notwendig ist? Ist es für die oben erwähnte Situation geeignet?

48
Firegun

Wenn der Angreifer in der Lage ist, Daten passiv zu erfassen und später Zugriff auf den privaten Schlüssel der Zertifikate erhält (dh Diebstahl, Heartbleed-Angriff oder Strafverfolgung), kann der Angreifer alle zuvor erfassten Daten entschlüsseln, wenn der Verschlüsselungsschlüssel nur aus dem Zertifikat abgeleitet wird selbst.

Der DH-Schlüsselaustausch ermöglicht die Erstellung eines vom Zertifikat unabhängigen Schlüssels. Auf diese Weise reicht die Kenntnis des Zertifikats allein nicht aus, um zuvor erfasste Daten zu dekodieren. Dies wird als Vorwärtsgeheimnis bezeichnet. Siehe Wikipedia für weitere Informationen.

Abgesehen von der Geheimhaltung mit DH gibt es andere Gründe, symmetrische Kryptographie zu verwenden, anstatt einfach die privaten RSA-Schlüssel zu verwenden. Selbst wenn Sie DH nicht für den Schlüsselaustausch verwenden, erstellt TLS einen symmetrischen Schlüssel, der dann aus dem Zertifikat abgeleitet wird. Weitere Informationen dazu, warum die direkte Verwendung des privaten Schlüssels zum Verschlüsseln nicht ratsam ist, finden Sie unter Warum verwendet PGP symmetrische Verschlüsselung und RSA? .

56
Steffen Ullrich

Es sind viele Schritte erforderlich, um die Gründe zu verstehen, und ich werde versuchen, Sie durch die einzelnen zu führen.

1) Verwenden Sie die Verschlüsselung richtig ...

Mit dem RSA-Algorithmus können Alice und Bob einfach ihre öffentlichen Schlüssel (public_a, public_b) freigeben und ihre privaten Schlüssel (private_a, private_b) behalten. Alice kann Bob einfach die Nachrichten senden, die von private_a verschlüsselt werden, und Bob kann sie von public_a entschlüsseln. Sie können weiterhin über ein unsicheres Netzwerk kommunizieren, ohne dass ein Diffie-Hellman-Schlüsselaustausch erforderlich ist.

Dieser Teil ist einfach falsch. Was Sie in diesem Teil tun, ist Signieren, nicht Verschlüsselung. Da public_key_a öffentlich ist, werden Ihre Nachrichten überhaupt nicht verschlüsselt. Stattdessen sollte A die Nachrichten mit public_key_b verschlüsseln und B kann sie dann mit private_key_b entschlüsseln. Da private_key_b nur B bekannt ist, weiß A, dass nur B es entschlüsseln kann.

Die digitale Signatur beweist, dass eine Nachricht von einer bestimmten Person stammt. Die Verschlüsselung beweist, dass nur Sie, der Schlüsselhalter und die Person, die die Nachricht verschlüsselt hat, der Absender der Nachricht, die Nachricht kennen. Sie müssen sowohl Verschlüsselung als auch Signatur haben, wenn Sie asymmetrische Verschlüsselung verwenden. Verschlüsselung zum Schutz der Vertraulichkeit der Nachricht und Signatur, um zu beweisen, dass Sie derjenige sind, der diese Nachricht gesendet hat.

Aber es steckt noch mehr dahinter ... Zum Beispiel müssen Sie sich noch vor Wiederholungsangriffen schützen.

2) Bob hat normalerweise keinen öffentlichen Schlüssel

Angenommen, Alice (A) ist der Server und Bob (B) ist der Client. Normalerweise hat der Client keinen öffentlichen Schlüssel. Kennen Sie beispielsweise einen öffentlichen Schlüssel? Die Antwort ist höchstwahrscheinlich NEIN. Daher kann Bob eine Nachricht von Alice empfangen und überprüfen, ob sie wirklich von Alice stammen, aber Alice kann nicht sicher sein, ob etwas, das sie von Bob erhält, wirklich von Bob stammt.

Dieses Problem ist eine der Hauptursachen, warum wir ein Schlüsselaustauschprotokoll wie Diffie-Hellman hinzugefügt haben.

3) RSA ist auf einen Block beschränkt.

Es gibt eine Technik zum Verschlüsseln langer Nachrichten, die Verkettung von Chiffrierblöcken heißt. Leider kann diese Technik nicht mit RSA verwendet werden. Es ist nicht so, dass es völlig unmöglich ist, sondern dass niemand weiß, ob es wirklich sicher ist, wenn wir es tun. Daher wird die RSA-Verschlüsselung auf einen Block begrenzt. Auf der anderen Seite funktionieren symmetrische Verschlüsselungsalgorithmen wie AES wie ein Zauber mit Blockverkettung und sind der Grund, warum wir sie verwenden.

Weiterführende Literatur: https://crypto.stackexchange.com/a/126/16369

4) Diffie-Hellman ist ein Schlüsselaustauschprotokoll

Diffie-Hellman ist nur eine Möglichkeit, einen Schlüssel zu "erstellen und zu teilen", der dann für die symmetrische Verschlüsselung verwendet werden kann. Die Stärke von Diffie-Hellman besteht darin, dass die gesamte Konversation zum Erstellen dieses Schlüssels im Klartext stattfinden kann und der Schlüssel weiterhin privat ist.

Hinweis : Diffie-Hellman löst das Problem der MitM-Angriffe nicht, da es die miteinander kommunizierenden Parteien nicht authentifizieren kann. Dieses Problem wird stattdessen mit digitale Signatur gelöst.

5) Ephemere Diffie-Hellman sorgen für perfekte Geheimhaltung

Ephemeral Diffie-Hellman ist nur ein ausgefallener Name, der besagt, dass Sie in jeder Sitzung ein neues Diffie-Hellman-Schlüsselpaar generieren und diese nicht speichern. Da Sie sie niemals speichern, kann ein Angreifer sie niemals abrufen.

Weitere Informationen finden Sie in dieser sehr guten Antwort: https://security.stackexchange.com/a/38142/50051

6) Ephemeral Diffie-Hellman schützt dich vor Wiederholungsangriffen

Ein sehr guter Nebeneffekt bei der Verwendung von Ephemeral Diffie-Hellman ist, dass es Sie auch vor Wiederholungsangriffen schützt. Da der Server und der Client in jeder Sitzung einen neuen zufälligen privaten DH-Schlüssel auswählen, können Sie die Nachricht aus einer anderen Sitzung nicht wiedergeben, um sich als Server oder Client auszugeben.

Schlussfolgerung

Dies ist eine sehr kurze Übersicht über die Funktionsweise von TLS und all diese Teile sind erforderlich, um eine sichere Verbindung herzustellen. Ohne symmetrische Verschlüsselung können Sie keine langen Nachrichten verschlüsseln, und ohne asymmetrische Verschlüsselung können Sie den Verschlüsselungsschlüssel nicht gemeinsam nutzen und eine perfekte Geheimhaltung für die Weiterleitung gewährleisten.

17
Gudradain

Sie gehen davon aus, dass Alice und Bob öffentliche Schlüssel über ein unsicheres Netzwerk zuverlässig austauschen können.

Ohne ein Schlüsselaustauschprotokoll passieren Alice und Bob denken dies: (A = Alices öffentlicher Schlüssel, B = Bobs öffentlicher Schlüssel)

Alice  ---------- A --------------> Bob


Alice  <----------- B ------------- Bob

wenn dies der Fall ist wirklich passiert (M = Mallorys öffentlicher Schlüssel)

Alice  ----- A ------> Mallory --------- M ------> Bob

Alice  <---- M ------- Mallory <-------- B ------- Bob

Bob und Alice denken jetzt, dass sie Nachrichten für einander verschlüsseln; Sie verschlüsseln wirklich nur Nachrichten für Mallory, der Nachrichten mit den beabsichtigten Empfängern real entschlüsselt, liest und neu verschlüsselt

2
chepner

Die Verwendung von RSA für alle Nachrichten ist unerwünscht, da der Algorithmus rechenintensiv ist. Wenn Sie RSA zum Aushandeln eines symmetrischen Schlüssels verwenden, können Sie weitere Nachrichten im Hinblick auf die CPU-Auslastung viel billiger senden.

1
Lexelby