Diffie-Hellman
Das System basiert auf der Idee, dass zwei Gesprächspartner gemeinsam einen gemeinsamen Schlüssel generieren können, ohne dass ein Eindringling, der die Kommunikation abhört, ihn erhalten kann.
Hierfür werden zwei öffentliche Nummern und jeder Gesprächspartner eine Geheimnummer ausgewählt. Unter Verwendung einer mathematischen Formel, die eine Potenzierung enthält, führt jeder Gesprächspartner eine Reihe von Operationen mit den beiden öffentlichen Nummern und ihrer Geheimnummer durch. Dann tauschen die Gesprächspartner die Ergebnisse öffentlich aus. Theoretisch ist die Umkehrung dieser Funktion so schwierig wie die Berechnung eines diskreten Logarithmus (eine Sextillion mal teurer als die Potenzierung, die zur Transformation der Zahlen verwendet wird). Deshalb wird gesagt, dass diese Nummer das Ergebnis der Anwendung einer Einwegfunktion auf die Geheimnummer ist.
Dann verwenden beide Gesprächspartner getrennt eine mathematische Formel, die die beiden transformierten Zahlen mit ihrer Geheimnummer kombiniert, und am Ende erhalten die beiden dieselbe Ergebnisnummer, die der gemeinsame Schlüssel ist.
Detaillierte Beschreibungbearbeiten
Für zwei Parteien Alice und Bob, die versuchen, einen geheimen Schlüssel zu etablieren, und einen Gegner Mallory, ist die Basisversion wie folgt:
- setze einen Cousin p {\displaystyle p}
und ein Generator g ∈ Z p ∗ {\displaystyle g\in \mathbf {Z} _{p}^{*}}
(). Diese sind öffentlich, nicht nur den Parteien Alice und Bob, sondern auch dem Gegner Mallory bekannt.
- Alice wählt a ∈ Z p – 1 {\displaystyle a\in \mathbf {Z} _{p-1}}
nach dem Zufallsprinzip berechnet A = g a mod p {\displaystyle A=g^{a}\;{\bmod {\;}}p}
und sendet A {\displaystyle A}
Bob
- Bob wählt b ∈ Z p – 1 {\displaystyle b\in \mathbf {Z} _{p-1}}
random berechnet B = g b mod p {\displaystyle B=g^{b}\;{\bmod {\;}}p}
und sendet B {\displaystyle B}
B
Beachten Sie, dass sowohl A als auch B durch den Wert K = g ⋅ b mod p {\displaystyle K=g^{a\cdot b}\;{\bmod {\;}}p berechnet werden können}
. En efecto, lo podemos demostrar usando las propiedades del grupo Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}
: Para Alice: B a mod p = ( g b mod p ) a mod p = ( ( g b mod p ) ( g b mod p ) ⋯ ( g b mod p ) ⏞ a ) mod p = g b ⋅ a mod p = g a ⋅ b mod p = K {\displaystyle B^{a}\;\;{\bmod {\;}}\;p=(g^{b}\;{\bmod {\;}}p)^{a}\;{\bmod {\;}}p=(\overbrace {(g^{b}\;{\bmod {\;}}p)(g^{b}\;{\bmod {\;}}p)\cdots (g^{b}\;{\bmod {\;}}p)} ^{a})\;{\bmod {\;}}p=g^{b\cdot a}\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}
Para Bob: A b mod p = ( g a mod p ) b mod p = ( ( g a mod p ) ( g a mod p ) ⋯ ( g a mod p ) ⏞ b ) mod p = g a ⋅ b mod p = K {\displaystyle A^{b}\;{\bmod {\;}}p=(g^{a}\;{\bmod {\;}}p)^{b}\;{\bmod {\;}}p=(\overbrace {(g^{a}\;{\bmod {\;}}p)(g^{a}\;{\bmod {\;}}p)\cdots (g^{a}\;{\bmod {\;}}p)} ^{b})\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}
Da beide Parteien ein K {\displaystyle K} berechnen können}
, dann können wir es als gemeinsamen Schlüssel verwenden.
attacksEdit
Passive attacksEdit
Ein Mallory-Gegner, der p, g, A und B besitzt, könnte das gemeinsame Geheimnis berechnen, wenn er auch einen der privaten Werte (a oder b) hätte. Erhalten Sie ein a oder b von A oder B Umkehrfunktion ( a = l o g d i s c p ( A ) {\displaystyle a=\operatorname {log\;disc} _{p}(A)}
und b = l o g d i s c p ( B ) {\displaystyle b=\operatorname {log\;Scheibe} _{p}(B)}
) ist das Problem des diskreten Logarithmus in Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}
, ein Problem, das rechnerisch als unlösbar angesehen wird, wenn p eine Primzahl ist, die größer als 200 oder mehr Ziffern ist, und das bestimmte schwächende Eigenschaften nicht erfüllt.
Aktive Angriffebearbeiten
Das Protokoll reagiert empfindlich auf aktive Man-in-the-Middle-Angriffe. Wenn die Kommunikation von einem Dritten abgefangen wird, kann dies als Absender gegenüber dem Empfänger und umgekehrt weitergegeben werden, da kein Mechanismus zur Überprüfung der Identität der Teilnehmer an der Kommunikation verfügbar ist. So konnte sich der “Mann in der Mitte” mit jedem Teilnehmer auf einen Schlüssel einigen und die Daten zwischen ihnen weiterleiten, wobei er das Gespräch in beide Richtungen hörte. Sobald die symmetrische Kommunikation hergestellt wurde, muss der Angreifer den Datenverkehr in der Mitte weiter abfangen und ändern, damit er es nicht bemerkt. Beachten Sie, dass der Angreifer die symmetrische Verschlüsselungsmethode kennen muss, die verwendet wird, damit der Angriff ausgeführt werden kann. Sich auf die Verschleierung des symmetrischen Verschlüsselungsalgorithmus zu verlassen, entspricht nicht den Prinzipien von Kerckhoffs (die Wirksamkeit des Systems sollte nicht von seinem Design abhängen, das geheim bleibt).
Um diese Art von Angriff zu vermeiden, werden normalerweise eine oder mehrere der folgenden Techniken verwendet:
- Zeitsteuerung.
- Vorauthentifizierung der Parteien. Verwenden Sie beispielsweise die Protokollauthentifizierung der zugrunde liegenden Schicht. Wir könnten zuerst eine TLS-Verbindung herstellen und den Diffie-Hellman-Algorithmus auf diese Ebene anwenden.
- Authentifizierung des Inhalts. Zum Beispiel könnten wir MAC über den Inhalt von Nachrichten verwenden.
- Verschlüsselung der öffentlichen Schlüssel mit einem (asymmetrischen) öffentlichen Schlüsselalgorithmus, Vermeidung des Man-in-the-Middle-Problems und Überprüfung, ob der öffentliche Schlüssel anders als 0 und 1 ist.
- Mit einem Dritten (Carol), mit dem entweder Alice oder Bob einen sicheren Kanal unterhalten. Dieser Dritte kann den Man-in-the-Middle
erkennen, wenn Alice oder Bob angehört / geändert werden, indem er einfach beide zu einem Test herausfordert, der in diesem Test den öffentlichen Schlüssel des otro.Si Mallory stellt die Alice-Bob-Kommunikation und auch die Alice-Carol falsch dar, er kann den sicheren Bob-Carol-Kanal nicht falsch darstellen und wird erkannt.Und wenn er den Alice-Bob und das Bob-Carol falsch darstellt, kann er das Alice-Carol nicht falsch darstellen (per Definition muss es einen sicheren Kanal zwischen zwei der drei geben, obwohl die anderen beiden Kanäle von Mallory falsch dargestellt werden). Dies bedeutet, dass die Diffie-Hellman-Methode 100% sichere Mehrknotennetzwerke erstellen kann, beginnend mit nur zwei zuvor sicheren Knoten. Diese Methode wird auch verwendet, um Kanäle zu testen, die im Verdacht stehen, unsicher zu sein.
EjemploEditar
|
|
|
Beispiel mit Verschlüsselung implementationEdit
Die Notwendigkeit für dieses Beispiel ist: Bob muss einen Chiffretext an Alice senden, aber ohne den Verschlüsselungsschlüssel zu teilen. Wie macht er das?
- Alice wählt eine Geheimzahl a=6, die Primzahl p=23 und die Basis g=5. Dann sendet er Bob Alices öffentlichen Schlüssel (ga mod p), p und g:
- 56 mod 23 = 8.
- 23
- 5
- Bob wählt eine Geheimzahl b=15, dann berechnet Bob den gemeinsamen Verschlüsselungsschlüssel (ga mod p) b mod p
- 815 mod 23 = 2.
- Bob verschlüsselt den Klartext mit einer symmetrischen Chiffre wie AES unter Verwendung des generierten Verschlüsselungsschlüssels.
- Verschlüsselter Text = Symmetrische Chiffre (Klartext, 2)
- Bob sendet Alice den verschlüsselten Text und Bobs öffentlichen Schlüssel (gb mod p)
- 515 mod 23 = 19.
- Verschlüsselter Text
- Alice berechnet (gb mod p) zu mod p
- 196 mod 23 = 2.
- Alice verwendet diesen generierten Verschlüsselungsschlüssel, um die von Bob gesendeten Daten zu entschlüsseln
- Cleartext = Symmetric Decryptor (Verschlüsselter Text, 2 )
Viel größere Werte von a, b und p wären erforderlich, um dieses Beispiel sicher zu machen. Da es sehr einfach ist, alle möglichen Werte von gab mod 23 zu testen (es gibt höchstens 22 Werte, auch wenn a und b große Zahlen sind).
Offensichtlich wird Alices Notwendigkeit, Bob die verschlüsselten Informationen zu senden, auch durch die Implementierung abgedeckt.
Leave a Reply