Lernziele
- Sie haben mit unserem Vigenère-Cipher einen Schlüsseltausch erlebt und können erklären, wieso beide Parteien am Schluss den gleichen Schlüssel haben.
- Sie können das diskrete Logarithmusproblem beschreiben und was es zu einer "mathematischen Einbahnstrasse" macht. (Die Bedingungen für p und g werden nicht abgefragt.)
- Sie haben einen Diffie-Hellman-Schlüsselaustausch mit einfachen Zahlen absolviert und können ihn erklären.
- Sie verstehen den mathematischen Beweis der modularen Arithmetik und können die Denk-Abkürzung anwenden.
- Sie können zwei konkrete Beispiele nennen, die Diffie-Hellman-Schlüsselaustausche (oder moderne Weiterentwicklungen davon) verwenden.
Wir haben das Kerckhoffs-Prinzip kennengelernt: "Ein kryptografisches System sollte auch dann sicher sein, wenn alles darüber bekannt ist, ausser dem geheimen Schlüssel." Da stellt sich natürlich die Frage: Wie tauschen wir die Schlüssel aus?
Experiment mit unserem Vigenère-Cipher
Testen Ihres Programms
Wir werden die Grundidee zuerst mit unserem Vigenère-Cipher demonstrieren. Testen Sie, ob Sie das Verfahren gleich implementiert haben. Verschlüsseln Sie dazu folgenden Satz mit dem Schlüssel MeinSchluessel.
Wir treffen uns im Cybercafe, follow the white rabbit.
Sie sollten den gleichen Ciphertext wie Ihre Partnerin oder Ihr Partner erhalten. Wenn Sie den Cipher exakt nach der Vorgabe implementiert haben, erhalten Sie Eo|/hvns|k#4{{a&s|sG#o{xwulry&p~`px%6z|y&%Vo~tsvjoxo)B
Demonstration
Zur Veranschaulichung werden in der Kryptologie oft die Pseudonyme "Alice" und "Bob" verwendet. Nehmen wir an, die beiden kommunizieren ausschliesslich über offene Kanäle. Das bedeutet, dass Ihre gesamte Kommunikation ständig abgehört werden könnte! Wie könnten sich zwei Parteien trotzdem auf einen gemeinsamen geheimen Schlüssel einigen?
Befolgen Sie beide folgende Schritte:
- Überlegen Sie sich als Einzelperson einen geheimen Schlüssel. Jede Person hat also einen Schlüssel, den nur sie kennt.
- Vereinbaren Sie ein Startwort über den offenen Kanal. Dieses Startwort kennt also die ganze Welt!
- Verschlüsseln Sie einzeln für sich das Startwort mit Ihrem privaten Schlüssel.
- Schicken Sie Ihrer Partnerin oder Ihrem Partner Ihren Ciphertext. Die ganze Welt hört mit und sieht diesen Ciphertext!
- Verschlüsseln Sie nun den Ciphertext, den Sie erhalten haben, mit Ihrem privaten Schlüssel.
- Vergleichen Sie den Ciphertext, den Sie nun beide generiert haben. Sie sollten beide den gleichen Ciphertext erhalten! Das ist Ihr Schlüssel, den Sie nun beide für Ihre geheime Kommunikation verwenden können.
Besprechen und analysieren Sie!
- Wieso funktioniert das? Diskutieren und erklären Sie sich das.
- Was für Schwächen gibt es?
Lösung
- Warum funktioniert das? Vigenère basiert mathematisch auf der fortlaufenden Verschiebung (Addition) von Zeichen. Die Addition ist kommutativ, d.h. die Reihenfolge spielt keine Rolle, z.B. . Das Endergebnis ist identisch, egal ob zuerst Alices und dann Bobs Schlüssel angewendet wird oder umgekehrt.
- Was für Schwächen gibt es? Unser Vigenère-Cipher ist als Schlüsselaustausch sehr schwach: Mit den ausgetauschten Ciphertexten und dem offenen Originalstartwort ist es ein Leichtes, die privaten Schlüssel von Alice und Bob herzuleiten. Man müsste bloss die Verschiebung der Buchstaben zählen und würde so direkt die geheimen Schlüssel der beiden Parteien erhalten.
Das Diskrete Logarithmusproblem (DLP)
Das Diskrete Logarithmusproblem (DLP) ist ein mathematisches Problem, das im Folgenden und in der Kryptografie generell eine zentrale Rolle spielt. Es besagt, dass es schwierig ist, den Exponenten zu finden, wenn man die Basis , den Modulo und das Ergebnis kennt:
In anderen Worten, selbst wenn man , und kennt, ist es schwierig, herauszufinden. Das DLP ist schwierig, weil es keine effizienten Algorithmen gibt, um den Exponenten zu berechnen, wenn , und bekannt sind. Man kann nicht einfach herleiten, wie oft die Zahl um die Uhr von gedreht hat.
Einfacher gesagt, ist das DLP wie eine Einbahnstrasse: Es ist sehr einfach, in eine Richtung zu kommen. Aber der Rückweg, also wieder herauszufinden, dass , ist aufwendig schwer.
Eine Analogie, die sich anbietet, ist folgende:
- Aus Kaffeebohnen und Milch einen Cappuccino zu machen, ist relativ einfach (wenn man es kann... 🧐).
- Aus einem Cappuccino wieder Kaffeebohnen und Milch zu machen, ist für Menschen unmöglich.
Bedingungen für p und g
Damit diese Einbahnstrasse sicher ist, sollte man p und g wie folgt wählen.
- Die Primzahl sollte gross sein, um die Sicherheit des Verfahrens zu gewährleisten. Eine typische Grösse für ist mindestens 2048 Bits. Das heisst: . Diese Zahlen sind extrem gross und werden in der Kryptografie verwendet, um sicherzustellen, dass es für Angreifer praktisch unmöglich ist, die Zahl zu erraten oder zu berechnen.
als Zahl ausgeschrieben32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230656
Die Zahl hat 617 Stellen.
- Die Basis muss kleiner als .
- sollte ein sogenannter "Generator" für sein. Das bedeutet, dass die Potenzen alle möglichen Reste (die zyklische Gruppe ) durchlaufen sollten.
Zusatz: Wann ist ein Generator ?ist ein Generator , wenn eine "primitive Wurzel" ist. Das bedeutet: Die kleinstmögliche Potenz , für die , muss sein. Wieso? Weil das garantiert, dass alle Potenzen bis dahin unterschiedliche Resultate erzeugen.
Zum Beweis überlegen Sie das kontrafaktisch: Stellen Sie sich vor, es gäbe zwei deckungsgleiche Potenzen im Bereich . Daraus würde folgen, dass , also dass es eine Potenz gäbe, die erfüllt, aber kleiner als ist.
- In unseren Beispielen verwenden wir oft die Zahlen oder , da diese Werte einfach zu berechnen sind und in vielen Fällen als Generatoren funktionieren.
Diffie-Hellman-Key-Exchange
Martin Hellman (links) und Whitfield Diffie (rechts) im Jahr 1977. (Bild: Chuck Painter/Stanford News Service)
Der Diffie-Hellman-Key-Exchange wurde 1976 von Martin Hellman und Whitfield Diffie veröffentlicht und revolutionierte die Kryptografie. Das Verfahren nutzt die Einbahnstrasse des DLP für den Schlüsselaustausch.
Schritte des Diffie-Hellman-Key-Exchanges
-
Vereinbarung der öffentlichen Parameter:
- Eine Primzahl und eine Basis werden öffentlich bekannt gegeben.
- Diese Parameter werden von beiden Parteien verwendet.
-
Erstellung der privaten Schlüssel:
- Jede Partei wählt einen privaten Schlüssel (für Alice) und (für Bob).
- Diese privaten Schlüssel bleiben geheim.
-
Berechnung der öffentlichen Schlüssel:
- Alice berechnet .
- Bob berechnet .
-
Austausch der öffentlichen Schlüssel:
- Alice sendet an Bob.
- Bob sendet an Alice.
-
Berechnung des gemeinsamen geheimen Schlüssels:
- Alice berechnet
- Bob berechnet
- Beide berechnen den gleichen Schlüssel, da
-
Schlussfolgerung und Fragestellung:
- Zusammengefasst heisst das: .
Interaktives Beispiel
Spielen Sie den Schlüsselaustausch gleich selbst durch, indem Sie die Schritte von Alice und Bob nachvollziehen. Bestimmen Sie gemeinsam mit einer Partnerin oder einem Partner die öffentlichen Werte und und definieren Sie dann Ihre eigenen privaten Parameter und . Überprüfen Sie mit dem Modulo-Rechner, ob Sie zum gleichen gemeinsamen Schlüssel gelangen.
Geben Sie dazu im Rechner jeweils Schritt für Schritt die Basis, den Exponenten und die Modulo-Zahl ein.
Wieso funktioniert das?
Wir haben gesehen, dass .
Intuitiv erinnert Sie das vielleicht an das Potenzgesetz: . Aber können wir uns sicher sein, dass das auch mit Modulo funktioniert?
Der Kern, wieso das funktioniert, ist eine Einsicht der modularen Arithmetik. Experimentieren Sie dazu zunächst selbst:
- Wählen Sie eine Zahl auf dieser Modulo-Uhr für und rechnen Sie die Zahl hoch 2. Markieren Sie die Zahl, die Sie erhalten haben.
- Wählen Sie eine zweite Zahl aus dem gleichen Sektor und rechnen Sie die Zahl ebenfalls hoch 2.
- Wählen Sie eine dritte Zahl aus dem gleichen Sektor und rechnen Sie die Zahl ebenfalls hoch 2.
Was fällt auf?
LösungAlle Ergebnisse liegen in ein und demselben Sektor!
Herleitung
Wenn Sie Zahlen aus demselben Ursprungssektor mit der gleichen Zahl potenzieren, werden auch die Ergebnisse immer in einem gemeinsamen Ergebnissektor liegen.
Wieso?
Nehmen wir als Basis die Zahl 2 und potenzieren Sie mit 2.
Wenn wir nun die Zahlen aus demselben Ursprungssektor wie 2 anschauen, sind die alle um ein Vielfaches der Primzahl 7 grösser, z.B.
Alle Zahlen des Sektors sind also ein Vielfaches von Sieben + 2. Der Modulo wird das Vielfache von Sieben immer eliminieren - sodass nach dem Modulo immer alleine stehen bleiben wird.
Mathematisch elegant bewiesen
Schauen wir das mal nicht nur für 7 sondern für alle möglichen Primzahlen an und versuchen wir, unsere These zu beweisen. Wie im 7ner-Beispiel oben unterscheiden sich also alle Zahlen desselben Sektors auf einer Modulo-Uhr um ein Vielfaches von . Ein solches Vielfaches können wir als ausdrücken, wobei eine beliebige ganze Zahl ist ().
Die These lautet also:
Klammern wir dazu mit der binomischen Formel aus:
Der Term ist ein Vielfaches von — er fällt also beim Modulo immer weg. Übrig bleibt immer nur .
Die Schönheit der Mathematik zeigt sich, wenn Sie bemerken:
-
Das gilt ja nicht nur für den Exponenten 2! Für jeden Exponenten ergibt das Ausmultiplizieren von :
Jeder dieser Terme ist also ein Vielfaches von und verschwindet beim Modulo. bleibt immer nur übrig!
-
Das gilt nicht nur für 2 - sondern für alle möglichen Restwerte von ! Mit 3 wäre das:
Abkürzen dank modularer Arithmetik
Wenn Sie dieses Prinzip verinnerlicht haben, können Sie folgende Frage relativ einfach beantworten:
In welchem Sektor der 7-Modulo-Uhr liegt das Ergebnis von ?51 liegt im Sektor 2, weil .
Sie können also auf abkürzen, also .
Diffie-Hellman im Alltag
Nach all dieser Theorie drängt sich die Frage auf: "Wann benutze ich das jemals?" Die Antwort lautet: Jeden Tag, auf unzähligen Geräten! Der Diffie-Hellman-Schlüsselaustausch (oder moderne Weiterentwicklungen davon) ist das Rückgrat unserer alltäglichen digitalen Sicherheit. Schauen wir uns zwei prominente Beispiele aus Ihrer Lebenswelt an, bei denen Sie Kryptologie hautnah erleben.
1. Messenger-Apps (Signal, WhatsApp)
Wenn Sie eine Nachricht über Signal oder WhatsApp verschicken, ist diese „Ende-zu-Ende" verschlüsselt. Das bedeutet, nur Sie und Ihr Chat-Partner können die Nachrichten lesen – nicht einmal die Betreiber der App. Die technische Grundlage dafür bildet das sogenannte „Double Ratchet"-Protokoll. In diesem Protokoll kommt Diffie-Hellman zum Einsatz – aber nicht nur einmal bei der Anmeldung, sondern fortlaufend während des Chatverlaufs.
Das Prinzip lässt sich so zusammenfassen: Jede Nachricht hat ein eigenes Schloss, das danach weggeworfen wird.
Konkret arbeitet das Double Ratchet mit zwei Mechanismen zusammen:
- Erstens einem DH-Ratchet, bei dem periodisch ein neuer Diffie-Hellman-Austausch stattfindet und frisches Schlüsselmaterial erzeugt.
- Zweitens einer symmetrischen Schlüsselkette (KDF-Chain), aus der für jede einzelne Nachricht ein frischer Einmal-Schlüssel deterministisch abgeleitet wird.
Dieser Mechanismus bietet, was man Forward Secrecy nennt („Geheimhaltung nach vorne" in die Zukunft): Selbst wenn eine Angreiferin heute Ihren privaten Schlüssel stiehlt, oder später Ihr Schlüssel bekannt wird, können Ihre vergangene Nachrichten trotzdem nicht entschlüsselt werden! Die alten Schlüssel wurden für immer vernichtet.
2. Sicheres Surfen (HTTPS mit TLS-Handshake)
Jedes Mal, wenn Sie im Internet surfen und oben in der Adresszeile das kleine Schloss-Symbol sehen (HTTPS), baut Ihr Browser eine sichere Verbindung zum Server auf. Hier passiert der sogenannte TLS-Handshake (Transport Layer Security) in den ersten Millisekunden der Verbindung.
Bei praktisch allen modernen Webseiten kommt dabei eine Form des Diffie-Hellman-Austauschs zum Einsatz, am häufigsten ECDHE (Elliptic Curve Diffie-Hellman Ephemeral). Das kleine "E" (Ephemeral = flüchtig, kurzlebig) bedeutet auch hier, dass genau wie bei Signal für jede neue Verbindung ein neuer, einmaliger Schlüssel ausgehandelt wird. Das sichert Forward Secrecy im Browser.
Übung: Schlüsselaustausch live im Browser untersuchenSie müssen das nicht einfach glauben – Sie können diesen unsichtbaren Schlüsselaustausch direkt nachprüfen!
- Öffnen Sie in Ihrem Browser (z.B. Chrome, Edge, Firefox) eine neue Webseite, idealerweise eine mit sensiblen Daten wie Ihre Bank, oder auch einfach Wikipedia.
- Öffnen Sie die Entwicklertools (Chrome/Edge: Drücken Sie
F12oderCtrl+Shift+I/Cmd+Option+Iauf dem Mac).- Suchen Sie oben im neuen Entwickler-Fenster den Reiter Security (Sicherheit). Wenn er nicht direkt sichtbar ist, klicken Sie auf das Doppel-Pfeil-Symbol
>>um weitere Tabs anzuzeigen.- Klicken Sie im linken Menü (falls vorhanden) auf die Haupt-URL (Main origin) der Webseite, um die Verbindungsdetails aufzurufen.
- Schauen Sie unter der Überschrift "Connection" (Verbindung).
- Achten Sie auf den Key Exchange (Schlüsselaustausch). Ziemlich sicher werden Sie dort ein Krypto-Kürzel wie
ECDHEoderX25519finden. Das ist Diffie-Hellman, der gerade eben für Ihren speziellen Aufruf verhandelt wurde!Surfen Sie auf verschiedene Seiten und vergleichen Sie den Key Exchange. Nutzen alle modernste Verfahren? Finden Sie Unterschiede?