Ein zentrales Problem der Kryptographie ist die Verteilung der verwendeten Schlüssel. Mit Hilfe des Diffie-Hellman-Schlüsselaustausch-verfahrens erzeugen zwei Kommunikationspartner einen geheimen Schlüssel, den nur diese beiden kennen. Dieser Schlüssel wird üblicherweise verwendet, um verschlüsselte Nachrichten mittels eines symmetrischen Kryptosystems zu übertragen.
Ein solches Verfahren muss zum Einsatz kommen, wenn man PFS ("Perfect Forward Secrecy") erreichen möchte.
Die Funktionsweise erklärt die folgende Präsentation ab Folie 7, der Originalcomic findet sich dort, das Bild zu Diffie-Hellman Verfahren ist dieses.
Filename | Filesize | Last modified |
---|---|---|
2020_klarsoweit-sicher-ist-sicher.odp | 1.4 MiB | 28.05.2020 14:14 |
2020_klarsoweit-sicher-ist-sicher.pdf | 853.2 KiB | 28.05.2020 14:14 |
Alice und Bob möchten miteinander verschlüsselt kommunizieren. Dazu möchten sie gern die Schlüssel für den Verschlüsselungsvorgang miteinander austauschen. Leider besteht keine gesicherte Verbindung zwischen beiden (z.B. das Internet) und ein persönliches Treffen als sicherste Alternative ist nicht möglich. Also wählen sie die folgende Vorgehensweise:
Nun denkt sich jeder der beiden eine geheime Zahl aus; Alice nimmt a, Bob wählt b. a und b sind die geheimen Schlüssel, diese werden niemals über den unsicheren Kanal gesendet!
Jetzt berechnen beide den zu Ihrem geheimen Schlüssel gehörigen öffentlichen Schlüssel:
Alice: | Sa=ga mod P |
Bob: | Sb=gb mod P |
Diese öffentlichen Schlüssel tauschen Sie nun aus, so dass Alice Sb kennt und Bob Sa. Aus diesen öffentlichen Schlüsseln errechnen beid nun unter Verwendung Ihrer "geheimen" Zahl 3), den gemeinsamen Schlüssel, mit dem Sie jetzt Ihre Nachrichten verschlüsseln können.
Alice: | G=Sba mod P |
Bob: | G=Sab mod P |
Anmerkung: "mod" bezeichnet die Berechnung des Restes bei ganzzahliger Division. ( 7 mod 3 = 1, da 7:3=2 Rest 1)
1) Vollziehe den Schlüsselaustausch mit deinem Nebensitzer mit Papier und Bleistift (und einem Taschenrechner) und kleinen Zahlen nach. Mache dir klar, dass der geheime Schlüssel niemals über die unsichere Leitung übertragen werden muss.
2) Bonus: Programmiere ein kleines Programm, mit dem der Schlüsselaustauch veranschaulicht wird. (PHP/Java/Python)