Skip to content

Verfahren der Kryptographie, Teil 12: Der Diffie-Hellman-Schlüsselaustausch

Der Diffie-Hellman-Schlüsselaustausch wurde von Whitfield Diffie und Martin E. Hellman 1976 in ihrem Paper "New Directions in Cryptography" (PDF) vorgestellt, der ersten Arbeit über asymmetrische Kryptographie.

Das britische 'Government Communications Headquarters' (GCHQ) behauptete 1997, schon davor das RSA- und Diffie-Hellman-Verfahren erfunden, aber geheim gehalten zu haben. Das ist durchaus plausibel, die Ehre gebührt aber üblicherweise dem, der etwas zuerst veröffentlicht. Siehe dazu auch Bruce Schneiers Crypto-Gram Newsletter vom 15. Mai 1998.

Das Prinzip des Diffie-Hellman-Schlüsselaustauschs besteht darin, dass sich die Kommunikationspartner über eine unsichere Verbindung je eine Nachricht zusenden, aus denen sie dann einen gemeinsamen Schlüssel berechnen können. Ein Dritter, der die Nachrichten belauscht, ist dazu nicht in der Lage. Das Verfahren ist allerdings unsicher, wenn der Dritte als Man-in-the-Middle die Nachrichten manipulieren kann.

Die mathematische Beschreibung

Im Folgenden wird von zwei Kommunikationspartnern ausgegangen, den traditionellen Alice und Bob.

  1. Alice und Bob einigen sich auf eine Primzahl p und eine Primitivwurzel (*) g mod p mit 1 < g < p-1.
    p und g müssen nicht geheim bleiben, können also über eine unsichere Verbindung übertragen werden. Außerdem können sie vorab vereinbart und immer wieder verwendet werden.
  2. Alice wählt eine geheime Zahl a < p und sendet Bob A = ga mod p
  3. Bob wählt eine geheime Zahl b < p und sendet Alice B = gb mod p
    A und B müssen nicht geheim bleiben, können also über eine unsichere Verbindung übertragen werden.
  4. Alice berechnet k = Ba mod p (und kann danach a löschen).
  5. Bob berechnet k' = Ab mod p (und kann danach b löschen).

(*) g ist eine Primitivwurzel von p, wenn sich alle Zahlen von 1 bis p-1 als Reste der Form gi mod p darstellen lassen.

k und k' sind identisch, denn es gilt
k = gba mod p = gab mod p = k'
und können als Sitzungsschlüssel für ein symmetrisches Verfahren verwendet werden.

Ein lauschender Angreifer (üblicherweise Eve genannt) kennt zwar p, g, A und B, aber um den Schlüssel k zu ermitteln muss er das so genannte Diffie-Hellman-Problem lösen:

Bekannt sind g, gx und gy.
Welchen Wert hat gxy?

Dazu muss er diskrete Logarithmen berechnen können:
Er benötigt das x aus gx mod p (oder das y aus gy mod p).

Dies ist ein mathematisch hartes Problem und ähnlich schwer wie die Faktorisierung.

Die Sicherheit des Verfahrens hängt entscheidend von der Größe von p ab. Außerdem sollte (p-1)/2 ebenfalls eine Primzahl sein. g kann beliebig groß gewählt werden, es muss nur eine Primitivwurzel modulo p sein. Es spricht nichts dagegen, das kleinstmögliche g zu wählen.

Ein Man-in-the-Middle-Angriff

Kann der Angreifer Mallory als Man-in-the-Middle die ausgetauschten Nachrichten manipulieren, kann er den Schlüsselaustausch unterlaufen: Er fängt die Nachrichten ab und sendet seinen eigenen Wert M = gm mod p mit einem beliebigen m statt A und B. Es findet also je ein Schlüsselaustausch zwischen Alice und Mallory und zwischen Mallory und Bob statt – ohne dass Alice und Bob etwas von Mallory wissen. Damit ergeben sich folgende Schlüssel:

Alice: kA = Ma mod p = gma mod p
Bob: kB = Mb mod p = gmb mod p
Mallory: kA = Am mod p = gam mod p und kB = Bm mod p = gbm mod p

Mallory fängt danach die symmetrisch verschlüsselten Daten ab, entschlüsselt sie mit dem zum jeweiligen Absender gehörenden Schlüssel und verschlüsselt sie vor dem Weiterleiten mit dem zum Empfänger gehörenden Schlüssel. Dabei kann er die entschlüsselten Daten beliebig manipulieren.

Um diesen Angriff zu verhindern, müssen die ausgetauschten Nachrichten durch eine digitale Signatur oder einen Message Authentication Code authentisiert werden.

Zwei Zahlen-Beispiele

Das Verfahren ist mit Zahlen leichter zu verstehen, daher nun zwei Beispiele für den Diffie-Hellman-Schlüsselaustausch. Einmal mit einem nur lauschenden Angreifer, einmal mit einem die Nachrichten auch manipulierenden Man-in-the-Middle.

Diffie-Hellman-Schlüsselaustausch mit Lauscher

Alice Eve Bob
Lass uns p=23 nehmen.
p=23 p=23
Einverstanden. Und g=5.
g=5 g=5
  • Wählt geheime Zahl
    a=6
  • Berechnet
    56 mod 23 = 8 = A
Meine Zahl: A=8
A=8 A=8
  • Wählt geheime Zahl
    b=15
  • Berechnet
    515 mod 23 = 19 = B
Meine Zahl: B=19
B=19 B=19
  • Berechnet
    196 mod 23 = 2 = k
Geheimer Symmetrischer Schlüssel: k = 2
  • Berechnet
    815 mod 23 = 2 = k
Geheimer Symmetrischer Schlüssel: k = 2
k=???

Diffie-Hellman-Schlüsselaustausch mit Nachrichten manipulierenden Man-in-the-Middle

Alice Mallory Bob
Lass uns p=23 nehmen.
p=23 p=23
Einverstanden. Und g=5.
g=5 g=5
  • Wählt geheime Zahl
    a=6
  • Berechnet
    56 mod 23 = 8 = A
Meine Zahl: A=8
A=8
  • Wählt
    m=3
  • Berechnet
    M = 53 mod 23 = 10
Fälscht A=10
A=10
  • Wählt geheime Zahl
    b=15
  • Berechnet
    515 mod 23 = 19 = B
Meine Zahl: B=19
B=19
Fälscht B=10
B=10
  • Berechnet
    106 mod 23 = 6 = kA
  • Berechnet
    83 mod 23 = 6 = kA
    (Schlüssel mit Alice)
  • Berechnet
    193 mod 23 = 5 = kB
    (Schlüssel mit Bob)
  • Berechnet
    1015 mod 23 = 5 = kB

Diffie-Hellman-Schlüsselaustausch mit mehr als 2 Partnern

Das Protokoll lässt sich auch so erweitern, dass mehr als 2 Kommunikationspartner einen Schlüssel austauschen können. Im Folgenden wird das Verfahren für drei Partner beschrieben: Alice, Bob und Carol. Entsprechend kann es auch auf mehr Partner erweitert werden.

  1. Alice wählt a und sendet Bob A = ga mod p
  2. Bob wählt b und sendet Carol B = gb mod p
  3. Carol wählt c und sendet Alice C = gc mod p
  4. Alice sendet Bob C' = Ca mod p
  5. Bob sendet Carol A' = Ab mod p
  6. Carol sendet Alice B' = Bc mod p
  7. Alice berechnet k = B' a mod p
  8. Bob berechnet k = C' b mod p
  9. Carol berechnet k = A' c mod p

Der gemeinsame geheime Schlüssel k ist gabc mod p.

In der nächsten Folge wird eine Anwendung des Diffie-Hellman-Schlüsselaustauschs vorgestellt: SSL/TLS mit Perfect Forward Secrecy.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : Verfahren der Kryptographie, Teil 13: Perfect Forward Secrecy

Vorschau anzeigen
Ein großer Schwachpunkt des bisher beschriebenen Einsatzes von SSL/TLS ist der Austausch des Sitzungsschlüssels bzw. des für seine Berechnung verwendeten Pre-Master-Secrets. Zeichnet ein Angreifer die gesamte Kommunikation

Dipl.-Inform. Carsten Eilers am : Kryptographie - Ein Überblick

Vorschau anzeigen
Die Kryptographie ist ein ein sehr umfangreiches Themengebiet, und obwohl ich mich jetzt seit 30 Artikeln damit befasst habe sind längst nicht alle Themen vorgestellt worden. Aber zumindest die wichtigsten habe ich beschrieben, und damit soll e

Dipl.-Inform. Carsten Eilers am : RSA und die schwachen Schlüssel, Teil 3: Die Gefahren

Vorschau anzeigen
Im ersten Teil haben Sie erfahren, wie RSA funktioniert, im zweiten Teil wurden die Forschungsergebnisse von Arjen K. Lenstra und seinen Kollegen vorgestellt. Im Folgenden werden weitere Forschungsergebnisse vorgestellt, außerdem geht es u

Dipl.-Inform. Carsten Eilers am : Drucksache: Windows Developer 7.17 - Post-Quanten-Kryptographie

Vorschau anzeigen
Im windows.developer 7.17 ist ein Artikel über Post-Quanten-Kryptographie erschienen. Die Quantencomputer stecken noch nicht mal in den Kinderschuhen, die rutschen noch im Stampelanzug durch die Gegend, wenn sie sich überhaupt schon