Articles

Was ist der Diffie-Hellman-Schlüsselaustausch und wie funktioniert er?

Posted on

Was ist der Diffie-Hellman-Schlüsselaustausch (1)

Der Diffie-Hellman-Schlüsselaustausch war eine der wichtigsten Entwicklungen in der Public-Key-Kryptografie und wird auch heute noch häufig in einer Reihe von verschiedenen Sicherheitsprotokollen eingesetzt.

Er ermöglicht es zwei Parteien, die sich vorher nicht getroffen haben, einen Schlüssel sicher zu etablieren, den sie zur Absicherung ihrer Kommunikation verwenden können. In diesem Artikel erklären wir, wofür er verwendet wird, wie er Schritt für Schritt funktioniert, seine verschiedenen Varianten sowie die Sicherheitsaspekte, die beachtet werden müssen, um ihn sicher zu implementieren.

Was ist der Diffie-Hellman-Schlüsselaustausch?

Der Diffie-Hellman-Schlüsselaustausch war die erste weit verbreitete Methode zur sicheren Entwicklung und zum Austausch von Schlüsseln über einen unsicheren Kanal.

Es mag nicht so aufregend oder bahnbrechend erscheinen, also lassen Sie uns anhand eines Beispiels erklären, warum der Diffie-Hellman-Schlüsselaustausch ein so wichtiger Meilenstein in der Welt der Kryptographie war und warum er auch heute noch so häufig verwendet wird.

Angenommen, Sie sind ein streng geheimer Spion und müssen einige wichtige Informationen an Ihr Hauptquartier senden. Wie würden Sie verhindern, dass Ihre Feinde die Nachricht in die Finger bekommen?

Die häufigste Lösung wäre, die Nachricht mit einem Code zu verschlüsseln. Am einfachsten ist es, wenn Sie die Art des Codes und des Schlüssels, die Sie verwenden wollen, im Voraus festlegen oder über einen sicheren Kommunikationskanal durchführen.

Angenommen, Sie sind ein besonders schlechter Spion und Sie und Ihr Hauptquartier entscheiden sich, einen schwachen Shift-Chiffre zu verwenden, um Ihre Nachrichten zu verschlüsseln. In diesem Code wird jedes „a“ zu einem „b“, jedes „b“ zu einem „c“, jedes „c“ zu einem „d“, und so weiter, bis hin zu einem „z“, das zu einem „a“ wird.

Unter dieser Shift-Chiffre wird die Nachricht „Let’s get dinner“ zu „Mfu’t hfu ejoofs“. Glücklicherweise sind Ihre Gegner in unserer hypothetischen Situation genauso inkompetent wie Sie und nicht in der Lage, einen solch einfachen Code zu knacken, was sie davon abhält, auf den Inhalt der Nachricht zuzugreifen.

Aber was passiert, wenn Sie mit Ihrem Empfänger vorher keinen Code vereinbaren konnten?

Angenommen, Sie wollen mit einem Spion einer verbündeten Nation kommunizieren, den Sie noch nie getroffen haben. Sie haben keinen sicheren Kanal, über den Sie mit ihm sprechen können. Wenn Sie Ihre Nachricht nicht verschlüsseln, kann jeder Gegner, der sie abfängt, den Inhalt lesen. Wenn Sie sie verschlüsseln, ohne dem Verbündeten den Code mitzuteilen, dann kann der Gegner sie nicht lesen, aber der Verbündete auch nicht.

Dieses Problem war bis in die 1970er Jahre eines der größten Rätsel in der Kryptographie:

Wie kann man mit jemandem sicher Informationen austauschen, wenn man nicht die Möglichkeit hatte, den Schlüssel vorher zu teilen?

Der Diffie-Hellman-Schlüsselaustausch war der erste öffentlich verwendete Mechanismus zur Lösung dieses Problems. Der Algorithmus erlaubt es Personen, die sich noch nie zuvor getroffen haben, einen gemeinsamen Schlüssel sicher zu erstellen, sogar über einen unsicheren Kanal, den Angreifer möglicherweise überwachen.

Die Geschichte des Diffie-Hellman-Schlüsselaustauschs

Der Diffie-Hellman-Schlüsselaustausch hat seine Wurzeln in den 1970er Jahren. Zwar hatte sich das Gebiet der Kryptographie bereits im frühen zwanzigsten Jahrhundert erheblich weiterentwickelt, aber diese Fortschritte konzentrierten sich hauptsächlich auf den Bereich der symmetrischen Schlüsselkryptographie.

Es dauerte bis 1976, bis Algorithmen mit öffentlichen Schlüsseln in der Öffentlichkeit auftauchten, als Whitfield Diffie und Martin Hellman ihr Papier „New Directions in Cryptography“ veröffentlichten. Die Zusammenarbeit umriss die Mechanismen hinter einem neuen System, das als Diffie-Hellman-Schlüsselaustausch bekannt werden sollte.

Die Arbeit wurde teilweise durch frühere Entwicklungen von Ralph Merkle inspiriert. Bei den sogenannten Merkle’s Puzzles erstellt eine Partei eine Reihe von kryptographischen Puzzles und sendet sie an die andere Partei. Der Empfänger wählt nach dem Zufallsprinzip ein Rätsel aus, das er lösen möchte, und wendet dann den nötigen Aufwand auf, um es zu lösen. Sobald das Rätsel gelöst ist, werden dem Empfänger eine Kennung und ein Sitzungsschlüssel mitgeteilt. Der Empfänger sendet dann die Kennung zurück an den ursprünglichen Absender, wodurch dieser weiß, welches Rätsel gelöst wurde.

Da der ursprüngliche Absender die Rätsel erstellt hat, weiß er durch die Kennung, welchen Sitzungsschlüssel der Empfänger entdeckt hat, und die beiden Parteien können diesen Schlüssel verwenden, um sicherer zu kommunizieren. Wenn ein Angreifer bei der Interaktion mithört, hat er Zugriff auf alle Rätsel sowie auf die Kennung, die der Empfänger an den ursprünglichen Absender zurücksendet.

Die Kennung verrät dem Angreifer nicht, welcher Sitzungsschlüssel verwendet wird, so dass der beste Ansatz zum Entschlüsseln der Informationen darin besteht, alle Rätsel zu lösen, um den richtigen Sitzungsschlüssel aufzudecken. Da der Angreifer im Durchschnitt die Hälfte der Rätsel lösen muss, ist es für ihn wesentlich schwieriger, den Schlüssel zu entschlüsseln, als für den Empfänger.

Dieser Ansatz bietet mehr Sicherheit, ist aber alles andere als eine perfekte Lösung. Der Diffie-Hellman-Schlüsselaustausch nahm einige dieser Ideen auf und machte sie komplexer, um eine sichere Methode der Public-Key-Kryptografie zu schaffen.

Obwohl er als Diffie-Hellman-Schlüsselaustausch bekannt geworden ist, hat Martin Hellman vorgeschlagen, den Algorithmus stattdessen Diffie-Hellman-Merkle-Schlüsselaustausch zu nennen, um die Arbeit zu reflektieren, die Ralph Merkle in die Public-Key-Kryptografie eingebracht hat.

Es wurde öffentlich angenommen, dass Merkle, Hellman und Diffie die ersten waren, die die Public-Key-Kryptographie entwickelt haben, bis 1997, als die britische Regierung die Arbeit von James Ellis, Clifford Cox und Malcolm Williamson aus den frühen 1970er Jahren freigegeben hat.

Es stellte sich heraus, dass das Trio zwischen 1969 und 1973 das erste Public-Key-Verschlüsselungsschema entwickelt hat, aber ihre Arbeit war zwei Jahrzehnte lang geheim. Sie wurde unter dem Government Communication Headquarters (GCHQ), einem britischen Geheimdienst, durchgeführt.

Ihre Entdeckung war eigentlich der RSA-Algorithmus, so dass Diffie, Hellman und Merkle zwar immer noch die ersten waren, die den Diffie-Hellman-Schlüsselaustausch entwickelten, aber nicht mehr die ersten Erfinder der Public-Key-Kryptografie.

Wo wird der Diffie-Hellman-Schlüsselaustausch eingesetzt?

Der Hauptzweck des Diffie-Hellman-Schlüsselaustauschs ist die sichere Entwicklung von gemeinsamen Geheimnissen, aus denen Schlüssel abgeleitet werden können. Diese Schlüssel können dann mit symmetrischen Schlüsselalgorithmen verwendet werden, um Informationen auf geschützte Weise zu übertragen. Symmetrische Algorithmen werden in der Regel verwendet, um den Großteil der Daten zu verschlüsseln, da sie effizienter sind als Public-Key-Algorithmen.

Technisch kann der Diffie-Hellman-Schlüsselaustausch verwendet werden, um öffentliche und private Schlüssel zu erstellen. In der Praxis wird jedoch meist stattdessen RSA verwendet. Das liegt daran, dass der RSA-Algorithmus auch in der Lage ist, Public-Key-Zertifikate zu signieren, während der Diffie-Hellman-Schlüsselaustausch dies nicht kann.

Der ElGamal-Algorithmus, der in PGP stark verwendet wurde, basiert auf dem Diffie-Hellman-Schlüsselaustausch, so dass jedes Protokoll, das ihn verwendet, effektiv eine Art Diffie-Hellman implementiert.

Als eine der gängigsten Methoden zur sicheren Verteilung von Schlüsseln ist der Diffie-Hellman-Schlüsselaustausch häufig in Sicherheitsprotokollen wie TLS, IPsec, SSH, PGP und vielen anderen implementiert. Das macht ihn zu einem integralen Bestandteil unserer sicheren Kommunikation.

Als Teil dieser Protokolle wird der Diffie-Hellman-Schlüsselaustausch oft verwendet, um Ihre Verbindung zu einer Website zu sichern, um aus der Ferne auf einen anderen Computer zuzugreifen und um verschlüsselte E-Mails zu versenden

Wie funktioniert der Diffie-Hellman-Schlüsselaustausch?

Der Diffie-Hellman-Schlüsselaustausch ist komplex und es kann schwierig sein, sich einen Reim darauf zu machen, wie er funktioniert. Er verwendet sehr große Zahlen und viel Mathematik, etwas, das viele von uns noch aus den langen und langweiligen Schulstunden in der High School kennen.

Um die Dinge etwas leichter zu verstehen, beginnen wir damit, den Diffie-Hellman-Schlüsselaustausch anhand einer Analogie zu erklären. Sobald Sie eine Vorstellung davon haben, wie es im Großen und Ganzen funktioniert, gehen wir zu einer technischeren Beschreibung der zugrundeliegenden Prozesse über.

Die beste Analogie für das Diffie-Hellman-Schema ist, sich zwei Leute vorzustellen, die Farbe mischen. Verwenden wir den Kryptographie-Standard und sagen, dass ihre Namen Alice und Bob sind. Sie einigen sich beide auf eine zufällige Farbe, mit der sie beginnen. Nehmen wir an, sie senden sich gegenseitig eine Nachricht und entscheiden sich für Gelb als ihre gemeinsame Farbe, wie im folgenden Diagramm:

diffie-hellman-2

Sie legen ihre eigene Farbe fest. Sie teilen der anderen Partei ihre Wahl nicht mit. Nehmen wir an, Alice wählt Rot, während Bob ein leicht grünliches Blau wählt.

Im nächsten Schritt mischen sowohl Alice als auch Bob ihre geheime Farbe (Rot für Alice, grünlich-blau für Bob) mit dem Gelb, auf das sie sich gemeinsam geeinigt haben. Gemäß dem Diagramm erhält Alice am Ende eine orangefarbene Mischung, während Bobs Ergebnis ein tieferes Blau ist.

Nachdem sie die Mischung beendet haben, senden sie das Ergebnis an die andere Partei. Alice erhält das tiefere Blau, während Bob die orangefarbene Farbe geschickt wird.

Nachdem sie das gemischte Ergebnis von ihrem Partner erhalten haben, fügen sie ihm ihre geheime Farbe hinzu. Alice nimmt das tiefere Blau und fügt ihre geheime rote Farbe hinzu, während Bob seine geheime grünlich-blaue Farbe zu der orangefarbenen Mischung hinzufügt, die er gerade erhalten hat.

Das Ergebnis? Beide kommen mit der gleichen Farbe heraus, die in diesem Fall ein ekelhaftes Braun ist. Es ist zwar nicht die Art von Farbe, mit der man sein Wohnzimmer streichen möchte, aber es ist trotzdem eine gemeinsame Farbe. Diese gemeinsame Farbe wird als gemeinsames Geheimnis bezeichnet.

Der kritische Teil des Diffie-Hellman-Schlüsselaustauschs besteht darin, dass beide Parteien am Ende das gleiche Ergebnis haben, ohne dass sie jemals das gesamte gemeinsame Geheimnis über den Kommunikationskanal senden müssen. Durch die Wahl einer gemeinsamen Farbe, ihrer eigenen geheimen Farben, den Austausch der Mischung und das erneute Hinzufügen der eigenen Farbe kommen beide Parteien zu demselben gemeinsamen Geheimnis, ohne jemals das Ganze senden zu müssen.

Wenn ein Angreifer den Austausch abhört, kann er nur auf die gemeinsame gelbe Farbe zugreifen, mit der Alice und Bob beginnen, sowie auf die gemischten Farben, die ausgetauscht werden. Da dies in Wirklichkeit mit enormen Zahlen anstelle von Farbe geschieht, reichen diese Informationen für den Angreifer nicht aus, um die anfänglichen geheimen Farben oder das gemeinsame Geheimnis zu erkennen (technisch gesehen ist es möglich, das gemeinsame Geheimnis aus diesen Informationen zu berechnen, aber in einer sicheren Implementierung des Diffie-Hellman-Schlüsselaustauschs würde dies eine unzumutbare Menge an Zeit und Rechenressourcen beanspruchen).

Diese Struktur des Diffie-Hellman-Schlüsselaustauschs ist es, die ihn so nützlich macht. Er ermöglicht es den beiden Parteien, über eine potenziell gefährliche Verbindung zu kommunizieren und trotzdem ein gemeinsames Geheimnis zu erhalten, das sie zur Erstellung von Schlüsseln für ihre zukünftige Kommunikation verwenden können. Es spielt keine Rolle, ob Angreifer mithören, da das vollständige gemeinsame Geheimnis nie über die Verbindung gesendet wird.

Die technischen Details des Diffie-Hellman-Schlüsselaustauschs

Zeit für etwas Mathematik…

Keine Sorge, wir gehen es langsam an und versuchen, den ganzen Prozess so einfach wie möglich zu verstehen. Es folgt einer ähnlichen Prämisse wie die oben gezeigte Analogie, aber anstatt Farben zu mischen und zu senden, macht das Diffie-Hellman-Schema tatsächlich Berechnungen, die auf außergewöhnlich großen Primzahlen basieren, und sendet sie dann weiter.

Um die Sicherheit zu gewährleisten, wird empfohlen, dass die Primzahl (p) mindestens 2048 Bit lang ist, was dem binären Äquivalent einer Dezimalzahl von etwa dieser Größe entspricht:

415368757628736598425938247569843765827634879128375827365928736 84273684728938572983759283475934875938475928475928739587249587 29873958729835792875982795837529876348273685729843579348795827 93857928739548772397592837592478593867045986792384737826735267 3547623568734869386945673456827659498063849024875809603947902 7945982730187439759284620950293759287049502938058920983945872 0948602984912837502948019371092480193581037995810937501938507913 95710937597019385089103951073058710393701934701938091803984091804 98109380198501398401983509183501983091079180395810395190395180935 8109385019840193580193840198340918093851098309180019

Um zu verhindern, dass jemandes Kopf explodiert, werden wir diese Erklärung mit viel kleineren Zahlen durchspielen. Beachten Sie, dass der Diffie-Hellman-Schlüsselaustausch unsicher wäre, wenn er so kleine Zahlen wie in unserem Beispiel verwenden würde. Wir verwenden solch kleine Zahlen nur, um das Konzept auf einfachere Weise zu demonstrieren.

In der einfachsten Form des Diffie-Hellman-Schlüsselaustauschs entscheiden sich Alice und Bob zunächst gemeinsam für zwei Zahlen, mit denen sie beginnen, im Gegensatz zu der einzigen gemeinsamen Farbe im obigen Beispiel. Diese sind der Modulus (p) und die Basis (g).

In der praktischen Anwendung ist der Modulus (p) eine sehr große Primzahl, während die Basis (g) relativ klein ist, um die Berechnungen zu vereinfachen. Die Basis (g) wird von einer zyklischen Gruppe (G) abgeleitet, die normalerweise lange vor den anderen Schritten erzeugt wird.

Für unser Beispiel nehmen wir an, dass der Modulus (p) 17 ist, während die Basis (g) 4 ist.

Nachdem sie sich gemeinsam auf diese Zahlen geeinigt haben, legt Alice eine Geheimzahl (a) für sich fest, während Bob seine eigene Geheimzahl (b) wählt. Nehmen wir an, sie wählen:

a = 3

b = 6

Alice führt dann die folgende Berechnung durch, um die Zahl zu erhalten, die sie an Bob senden wird:

A = ga mod p

In der obigen Berechnung steht mod für eine Modulo-Operation. Dies sind im Wesentlichen Berechnungen, um den Rest nach der Division der linken Seite durch die rechte Seite zu ermitteln. Als Beispiel:

15 mod 4 = 3

Wenn Sie verstehen, wie Modulo-Operationen funktionieren, können Sie sie in den folgenden Berechnungen selbst durchführen, andernfalls können Sie einen Online-Rechner verwenden.

Setzen wir also unsere Zahlen in die Formel ein:

A = 43 mod 17

A = 64 mod 17

A = 13

Wenn wir dasselbe für Bob tun, erhalten wir:

B = 46 mod 17

B = 4096 mod 17

B = 16

Alice sendet dann ihr Ergebnis (A) an Bob, während Bob seine Zahl (B) an Alice sendet. Alice berechnet dann das gemeinsame Geheimnis (s) mit Hilfe der Zahl, die sie von Bob erhalten hat (B), und ihrer geheimen Zahl (a) nach der folgenden Formel:

s = Ba mod p

s = 163 mod 17

s = 4,096 mod 17

s = 16

Bob führt dann im Wesentlichen die gleiche Berechnung durch, aber mit der Zahl, die Alice ihm geschickt hat (A), sowie mit seiner eigenen Geheimzahl (b):

s = Ab mod p

s = 136 mod 17

s = 4,826,809 mod 17

s = 16

Wie Sie sehen, haben beide Parteien am Ende das gleiche Ergebnis für s, nämlich 16. Dies ist das gemeinsame Geheimnis, das nur Alice und Bob kennen. Damit können sie einen Schlüssel für die symmetrische Verschlüsselung erstellen, der es ihnen ermöglicht, Informationen sicher und nur für sie zugänglich zwischen ihnen zu übertragen.

Beachten Sie, dass B und s im obigen Beispiel zwar gleich sind, dies aber nur ein Zufall ist, der auf den kleinen Zahlen beruht, die für diese Illustration gewählt wurden. Normalerweise wären diese Werte in einer realen Implementierung des Diffie-Hellman-Schlüsselaustauschs nicht gleich.

Auch wenn viele der oben genannten Daten im Klartext über den Kanal gesendet werden (p, g, A und B) und von potenziellen Angreifern gelesen werden können, wird das gemeinsame Geheimnis (s) nie übertragen. Es wäre für einen Angreifer nicht praktikabel, das gemeinsame Geheimnis (s) oder eine der geheimen Zahlen (a und b) aus den im Klartext gesendeten Informationen zu berechnen.

Natürlich setzt dies voraus, dass der Diffie-Hellman-Schlüsselaustausch korrekt implementiert ist und ausreichend große Zahlen verwendet werden. Solange diese Bestimmungen eingehalten werden, gilt der Diffie-Hellman-Schlüsselaustausch als sicherer Weg, um ein gemeinsames Geheimnis zu etablieren, das zur Absicherung zukünftiger Kommunikationen verwendet werden kann.

Einrichten eines gemeinsamen Schlüssels zwischen mehreren Parteien

Der Diffie-Hellman-Schlüsselaustausch kann auch verwendet werden, um einen gemeinsamen Schlüssel mit einer größeren Anzahl von Teilnehmern einzurichten. Er funktioniert auf die gleiche Weise, nur dass weitere Berechnungsrunden erforderlich sind, damit jede Partei ihre geheime Zahl addieren kann und am Ende dasselbe gemeinsame Geheimnis erhält.

Genauso wie bei der Zwei-Parteien-Version des Diffie-Hellman-Schlüsselaustauschs werden einige Teile der Informationen über unsichere Kanäle gesendet, aber nicht genug, damit ein Angreifer das gemeinsame Geheimnis berechnen kann.

Warum ist der Diffie-Hellman-Schlüsselaustausch sicher?

Auf mathematischer Ebene stützt sich der Diffie-Hellman-Schlüsselaustausch auf Einwegfunktionen als Grundlage für seine Sicherheit. Das sind Berechnungen, die in die eine Richtung einfach zu machen sind, aber in die andere Richtung sehr viel schwieriger zu berechnen sind.

Genauer gesagt, beruht er auf dem Diffie-Hellman-Problem, das davon ausgeht, dass es unter den richtigen Parametern nicht möglich ist, gab aus den einzelnen Werten von g, ga und gb zu berechnen. Es gibt derzeit keine öffentlich bekannte Möglichkeit, gab einfach aus den anderen Werten zu ermitteln, weshalb der Diffie-Hellman-Schlüsselaustausch als sicher gilt, obwohl Angreifer die Werte p, g, A und B abfangen können.

Authentifizierung & des Diffie-Hellman-Schlüsselaustauschs

In der realen Welt wird der Diffie-Hellman-Schlüsselaustausch selten allein verwendet. Der Hauptgrund dafür ist, dass er keine Authentifizierung bietet, was Benutzer anfällig für Man-in-the-Middle-Angriffe macht.

Diese Angriffe können stattfinden, wenn der Diffie-Hellman-Schlüsselaustausch selbst implementiert ist, da er keine Möglichkeit hat, zu überprüfen, ob die andere Partei in einer Verbindung wirklich die ist, die sie vorgibt zu sein. Ohne irgendeine Form der Authentifizierung können Benutzer tatsächlich eine Verbindung mit Angreifern herstellen, obwohl sie denken, dass sie mit einer vertrauenswürdigen Partei kommunizieren.

Aus diesem Grund wird der Diffie-Hellman-Schlüsselaustausch in der Regel zusammen mit einem Mittel zur Authentifizierung implementiert. Dazu werden oft digitale Zertifikate und ein Public-Key-Algorithmus wie RSA verwendet, um die Identität jeder Partei zu verifizieren.

Varianten des Diffie-Hellman-Schlüsselaustauschs

Der Diffie-Hellman-Schlüsselaustausch kann auf verschiedene Weise implementiert werden, und er hat auch die Grundlage für mehrere andere Algorithmen geliefert. Einige dieser Implementierungen bieten eine Autorisierung, während andere verschiedene kryptografische Eigenschaften haben, wie z. B. perfekte Vorwärtsgeheimhaltung.

Elliptic-curve Diffie-Hellman

Elliptic-curve Diffie-Hellman nutzt die algebraische Struktur von elliptischen Kurven, um seinen Implementierungen zu ermöglichen, ein ähnliches Maß an Sicherheit mit einer kleineren Schlüsselgröße zu erreichen. Ein 224-Bit-Schlüssel mit elliptischer Kurve bietet das gleiche Maß an Sicherheit wie ein 2048-Bit-RSA-Schlüssel. Abgesehen von der geringeren Schlüssellänge und der Tatsache, dass es auf den Eigenschaften elliptischer Kurven beruht, funktioniert der Diffie-Hellman-Schlüsselaustausch mit elliptischen Kurven ähnlich wie der Standard-Diffie-Hellman-Schlüsselaustausch.

TLS

TLS, ein Protokoll, das zur Absicherung eines Großteils des Internets verwendet wird, kann den Diffie-Hellman-Austausch auf drei verschiedene Arten nutzen: anonym, statisch und ephemeral. In der Praxis sollte nur ephemerer Diffie-Hellman implementiert werden, da die anderen Optionen Sicherheitsprobleme haben.

  • Anonymer Diffie-Hellman – Diese Version des Diffie-Hellman-Schlüsselaustauschs verwendet keine Authentifizierung, was sie anfällig für Man-in-the-Middle-Angriffe macht. Sie sollte nicht verwendet oder implementiert werden.
  • Static Diffie-Hellman – Static Diffie-Hellman verwendet Zertifikate zur Authentifizierung des Servers. Es authentifiziert den Client standardmäßig nicht und bietet auch kein Vorwärtsgeheimnis.
  • Ephemeral Diffie-Hellman – Dies gilt als die sicherste Implementierung, da sie ein perfektes Vorwärtsgeheimnis bietet. Sie wird normalerweise mit einem Algorithmus wie DSA oder RSA kombiniert, um eine oder beide Parteien in der Verbindung zu authentifizieren. Ephemeral Diffie-Hellman verwendet jedes Mal, wenn das Protokoll ausgeführt wird, andere Schlüsselpaare. Dadurch erhält die Verbindung eine perfekte Geheimhaltung, denn selbst wenn ein Schlüssel in der Zukunft kompromittiert wird, kann er nicht verwendet werden, um alle vergangenen Nachrichten zu entschlüsseln.

ElGamal

ElGamal ist ein Public-Key-Algorithmus, der auf dem Diffie-Hellman-Schlüsselaustausch aufbaut. Wie Diffie-Hellman enthält er keine eigenen Vorkehrungen zur Authentifizierung und wird zu diesem Zweck in der Regel mit anderen Mechanismen kombiniert.

ElGamal wurde hauptsächlich in PGP, GNU Privacy Guard und anderen Systemen verwendet, weil sein Hauptkonkurrent RSA patentiert war. Das Patent von RSA lief im Jahr 2000 aus, so dass es ab diesem Zeitpunkt frei implementiert werden konnte. Seitdem wurde ElGamal nicht mehr so häufig implementiert.

STS

Das Station-to-Station (STS) Protokoll basiert ebenfalls auf dem Diffie-Hellman-Schlüsselaustausch. Es ist ein weiteres Schlüsselvereinbarungsschema, bietet jedoch Schutz gegen Man-in-the-Middle-Angriffe sowie perfekte Forward Secrecy.

Es setzt voraus, dass beide Parteien in der Verbindung bereits ein Schlüsselpaar besitzen, das zur Authentifizierung jeder Seite verwendet wird. Wenn die Parteien einander noch nicht bekannt sind, können Zertifikate verwendet werden, um die Identität beider Parteien zu bestätigen.

Der Diffie-Hellman-Schlüsselaustausch & RSA

Wie bereits erwähnt, wird der Diffie-Hellman-Schlüsselaustausch oft zusammen mit RSA oder anderen Algorithmen implementiert, um die Authentifizierung der Verbindung zu gewährleisten. Wenn Sie mit RSA vertraut sind, werden Sie sich vielleicht fragen, warum sich jemand die Mühe macht, auch den Diffie-Hellman-Schlüsselaustausch zu verwenden, da RSA es Parteien ermöglicht, die sich noch nie zuvor getroffen haben, sicher zu kommunizieren.

RSA erlaubt seinen Benutzern, Nachrichten mit dem öffentlichen Schlüssel ihres Gegenübers zu verschlüsseln, so dass sie nur mit dem passenden privaten Schlüssel entschlüsselt werden können. In der Praxis wird RSA jedoch nicht verwendet, um die gesamte Kommunikation zu verschlüsseln – das wäre viel zu ineffizient.

Stattdessen wird RSA oft nur als Mittel zur Authentifizierung der beiden Parteien verwendet. Dies geschieht mit den digitalen Zertifikaten jeder Partei, die von einer Zertifizierungsstelle überprüft wurden, um zu beweisen, dass der Zertifikatsinhaber wirklich derjenige ist, der er vorgibt zu sein, und dass der öffentliche Schlüssel auf dem Zertifikat tatsächlich ihm gehört.

Für die gegenseitige Authentifizierung signiert jede Partei eine Nachricht mit ihrem privaten Schlüssel und sendet sie dann an ihren Kommunikationspartner. Jeder Empfänger kann dann die Identität der anderen Partei überprüfen, indem er die signierten Nachrichten mit dem öffentlichen Schlüssel auf dem digitalen Zertifikat seines Kommunikationspartners vergleicht (siehe den oben erwähnten Artikel über RSA für weitere Details, wie dies funktioniert, insbesondere den Abschnitt Signieren von Nachrichten).

Nachdem nun beide Parteien authentifiziert wurden, ist es technisch möglich, RSA weiter zu verwenden, um verschlüsselte Nachrichten sicher untereinander zu senden, allerdings wäre dies am Ende zu ineffizient.

Um diese Ineffizienz zu umgehen, verwenden viele Sicherheitsprotokolle einen Algorithmus wie den Diffie-Hellman-Schlüsselaustausch, um ein gemeinsames Geheimnis zu finden, das verwendet werden kann, um einen gemeinsamen symmetrischen Schlüssel zu erstellen. Dieser symmetrische Schlüssel wird dann in einem symmetrischen Schlüsselalgorithmus wie AES verwendet, um die Daten zu verschlüsseln, die die beiden Parteien sicher miteinander austauschen wollen.

Es mag wie ein komplexer und verworrener Prozess erscheinen, aber im Vergleich zur Verwendung eines Public-Key-Algorithmus für den gesamten Austausch ist er letztendlich viel schneller und ressourcenschonender. Das liegt daran, dass die symmetrische Verschlüsselung um Größenordnungen effizienter ist als die Public-Key-Verschlüsselung.

Zusätzlich zu den gerade erwähnten Ineffizienzen gibt es noch einige andere Nachteile, die sich aus der ausschließlichen Verwendung von RSA ergeben würden. RSA braucht ein Padding, um sicher zu sein, also müsste ein zusätzlicher Algorithmus entsprechend daneben implementiert werden, um es sicher zu machen.

RSA bietet auch keine perfekte Forward Secrecy, was ein weiterer Nachteil im Vergleich zum ephemeren Diffie-Hellman-Schlüsselaustausch ist. Aus diesen Gründen ist es in vielen Situationen am besten, RSA nur in Verbindung mit dem Diffie-Hellman-Schlüsselaustausch einzusetzen.

Alternativ kann der Diffie-Hellman-Schlüsselaustausch mit einem Algorithmus wie dem Digital Signature Standard (DSS) kombiniert werden, um die Authentifizierung, den Schlüsselaustausch, die Vertraulichkeit und die Überprüfung der Integrität der Daten zu gewährleisten. In einer solchen Situation ist RSA für die Absicherung der Verbindung nicht notwendig.

Sicherheitsprobleme des Diffie-Hellman-Schlüsselaustauschs

Die Sicherheit des Diffie-Hellman-Schlüsselaustauschs hängt davon ab, wie er implementiert wird, sowie von den Zahlen, die dafür gewählt werden. Wie wir oben festgestellt haben, hat er selbst keine Möglichkeit, die andere Partei zu authentifizieren, aber in der Praxis werden andere Mechanismen verwendet, um sicherzustellen, dass die andere Partei in einer Verbindung kein Betrüger ist.

Parameter für die Zahlenauswahl

Wenn eine reale Implementierung des Diffie-Hellman-Schlüsselaustauschs so kleine Zahlen wie in unserem Beispiel verwenden würde, wäre der Austauschprozess für einen Angreifer trivial zu knacken. Aber es kommt nicht nur auf die Größe der Zahlen an – die Zahlen müssen auch ausreichend zufällig sein. Wenn ein Zufallszahlengenerator eine vorhersehbare Ausgabe erzeugt, kann er die Sicherheit des Diffie-Hellman-Schlüsselaustauschs komplett untergraben.

Die Zahl p sollte 2048 Bit lang sein, um Sicherheit zu gewährleisten. Die Basis, g, kann eine relativ kleine Zahl wie 2 sein, aber sie muss aus einer Ordnung von G stammen, die einen großen Primfaktor hat

Der Logjam-Angriff

Der Diffie-Hellman-Schlüsselaustausch wurde auf der Grundlage des schwer zu lösenden Problems des diskreten Logarithmus entworfen. Der effektivste öffentlich bekannte Mechanismus zur Lösung ist der Zahlenfeld-Sieb-Algorithmus.

Die Fähigkeiten dieses Algorithmus wurden beim Entwurf des Diffie-Hellman-Schlüsselaustauschs berücksichtigt. Bereits 1992 war bekannt, dass für eine gegebene Gruppe G drei der vier Schritte des Algorithmus potenziell im Voraus berechnet werden können. Wenn dieser Fortschritt gespeichert wurde, konnte der letzte Schritt in vergleichsweise kurzer Zeit berechnet werden.

Dies war nicht allzu besorgniserregend, bis man feststellte, dass ein erheblicher Teil des Internetverkehrs dieselben Gruppen verwendet, die 1024 Bit oder kleiner sind. Im Jahr 2015 führte ein akademisches Team die Berechnungen für die gängigste 512-Bit-Primzahl durch, die vom Diffie-Hellman-Schlüsselaustausch in TLS verwendet wird.

Sie waren auch in der Lage, 80 % der TLS-Server, die DHE-EXPORT unterstützten, so herunterzustufen, dass sie einen 512-Bit-Export-Diffie-Hellman-Schlüsselaustausch für die Verbindung akzeptieren würden. Das bedeutet, dass jeder dieser Server für einen Angriff eines gut ausgerüsteten Angreifers verwundbar ist.

Die Forscher extrapolierten ihre Ergebnisse und schätzten, dass ein Nationalstaat eine 1024-Bit-Primzahl brechen könnte. Durch das Brechen der am häufigsten verwendeten 1024-Bit-Primzahl schätzte das akademische Team, dass ein Angreifer 18 % der eine Million populärsten HTTPS-Websites überwachen könnte.

Sie sagten weiter, dass eine zweite Primzahl dem Angreifer ermöglichen würde, die Verbindungen von 66 % der VPN-Server und 26 % der SSH-Server zu entschlüsseln. Später in dem Bericht deuten die Wissenschaftler an, dass die NSA möglicherweise bereits über diese Fähigkeiten verfügt.

„Eine genaue Lektüre der veröffentlichten NSA-Leaks zeigt, dass die Angriffe der Behörde auf VPNs konsistent mit dem Erreichen eines solchen Bruchs sind.“

Trotz dieser Schwachstelle kann der Diffie-Hellman-Schlüsselaustausch immer noch sicher sein, wenn er korrekt implementiert ist. Solange ein 2048-Bit-Schlüssel verwendet wird, funktioniert der Logjam-Angriff nicht. Aktualisierte Browser sind auch vor diesem Angriff sicher.

Ist der Diffie-Hellman-Schlüsselaustausch sicher?

Der Diffie-Hellman-Schlüsselaustausch mag zwar komplex erscheinen, ist aber ein grundlegender Bestandteil des sicheren Online-Datenaustauschs. Solange er zusammen mit einer geeigneten Authentifizierungsmethode implementiert wird und die Zahlen richtig gewählt wurden, gilt er nicht als angreifbar.

Der Diffie-Hellman-Schlüsselaustausch war eine innovative Methode, um zwei unbekannten Parteien zu helfen, sicher zu kommunizieren, als er in den 1970er Jahren entwickelt wurde. Während wir jetzt neuere Versionen mit größeren Schlüsseln implementieren, um uns vor moderner Technologie zu schützen, sieht das Protokoll selbst so aus, als ob es weiterhin sicher sein wird, bis zur Ankunft des Quantencomputers und den fortgeschrittenen Angriffen, die damit einhergehen werden.

Wie wird sich Quantencomputing auf den Diffie-Hellman-Schlüsselaustausch auswirken?

Quantencomputing ist ein aufstrebender Zweig der Informatik, der weiterhin Durchbrüche erzielt. Die Besonderheiten der Funktionsweise von Quantencomputern sind kompliziert und würden den Rahmen dieses Artikels sprengen, aber die Technologie stellt den Bereich der Kryptographie vor erhebliche Probleme.

Die einfache Erklärung ist, dass man erwartet, dass Quantencomputer in der Lage sein werden, bestimmte Probleme zu lösen, die derzeit für klassische Computer nicht machbar sind. Das wird viele Türen öffnen und neue Möglichkeiten mit sich bringen. Ausreichend leistungsfähige Quantencomputer werden in der Lage sein, Quantenalgorithmen auszuführen, die verschiedene mathematische Probleme effektiver lösen können.

Während dies großartig klingen mag, beruht die Sicherheit vieler unserer aktuellen kryptographischen Mechanismen darauf, dass diese Probleme schwer zu lösen sind. Wenn diese mathematischen Probleme leichter zu berechnen sind, wird es auch leichter, diese kryptographischen Mechanismen zu brechen.

Einer dieser Quantenalgorithmen ist der Grover-Algorithmus. Wenn Quantencomputer leistungsfähig genug werden, wird er Angriffe gegen symmetrische Schlüsselchiffren wie AES beschleunigen. Die größte Sorge ist, wie Shors Algorithmus die Public-Key-Kryptographie beeinflussen wird. Das liegt daran, dass die Sicherheit der meisten gängigen Public-Key-Algorithmen auf der immensen Schwierigkeit beruht, eine dieser drei Berechnungen zu lösen:

  • Das diskrete Logarithmus-Problem
  • Das Integer-Faktorisierungs-Problem
  • Das diskrete Logarithmus-Problem mit elliptischen Kurven

Die Spezifika der einzelnen Algorithmen sind nicht wirklich wichtig, aber Sie können den Links folgen, wenn Sie zusätzliche Informationen wünschen. Wichtig ist, dass es, sobald ausreichend leistungsfähige Quantencomputer verfügbar sind, viel praktischer wird, diese Probleme mit dem Shor-Algorithmus zu lösen. Je einfacher diese Probleme zu lösen sind, desto unsicherer werden die kryptographischen Systeme, die auf ihnen beruhen.

Die Public-Key-Kryptographie spielt eine fundamentale Rolle beim Schutz unserer Kommunikation, weshalb Quantencomputer eine große Herausforderung für Kryptographen darstellen.

Im Fall des Diffie-Hellman-Schlüsselaustauschs beruht seine Sicherheit auf der Unmöglichkeit, das Problem des diskreten Logarithmus mit der aktuellen Technologie und den aktuellen Ressourcen zu lösen. Die Bedrohung durch den Shor-Algorithmus rückt jedoch mit jedem Fortschritt in der Quanteninformatik näher.

Es ist schwer, einen groben Zeitplan zu erstellen, wann die Quanteninformatik den Diffie-Hellman-Schlüsselaustausch ernsthaft bedrohen wird, da einige Forscher viel optimistischer sind als andere. Trotzdem werden Ersatzlösungen für den Diffie-Hellman-Schlüsselaustausch und andere Public-Key-Algorithmen entwickelt, um sicherzustellen, dass wir vorbereitet sind, wenn die Zeit gekommen ist.

Potenzielle Ersatzlösungen für den Diffie-Hellman-Schlüsselaustausch

Die Gefahr, die von Quantencomputern ausgeht, ist nicht unmittelbar, daher muss sich die kryptografische Gemeinschaft noch auf spezifische Alternativen zum Diffie-Hellman-Schlüsselaustausch einigen. Es werden jedoch zahlreiche Wege verfolgt. Dazu gehören:

  • Gitterbasierte Kryptographie
  • Multivariate Kryptographie
  • Elliptic-curve isogeny cryptography

Wir wissen immer noch nicht genau, wie die Post-Quantum-Welt für die Kryptographie aussehen wird, aber die Sicherheitsgemeinschaft arbeitet aktiv an den Problemen und hält mit den Fortschritten in der Welt der Quantencomputer Schritt. Es wird zwar große Veränderungen in der Zukunft geben, aber nichts, wovor sich der Durchschnittsbürger fürchten müsste – er wird wahrscheinlich nicht einmal bemerken, wenn es zu Veränderungen kommt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.