Dies ist eine alte Version des Dokuments!
Asymmetrische Kryptographie und Digitale Signatur
Nachteile des Schlüsseltauschs nach Diffie-Hellman
Die bisher betrachteten Verschlüsselungsverfahren waren alle symmetrisch: für die Verschlüsselung wird derselbe Schlüssel verwendet wie für die Entschlüsselung. Es ist deshalb entscheidend, dass dieser Schlüssel nur Alice und Bob bekannt ist und dass Eve nicht die Möglichkeit erhält, den Schlüssel herauszufinden.
Mit der Methode von Diffie-Hellman haben wir eine Methode kennengelernt, wie Alice und Bob einen Schlüssel erstellen können, ohne dass es Eve möglich ist, diesen Schlüssel herauszufinden.
Nachteile
Das Schlüsseltauschverfahren hatte aber noch gewisse praktische Nachteile:
- so mussten Alice und Bob beide zum Zeitpunkt des Schlüsseltausches „online“ sein, da die Zahlen $g, p, \alpha$ und $\beta$ ausgetauscht werden mussten. Vor allem, wenn Alice in Amerika und Bob in Europa oder Asien ansässig waren, war dies aufgrund der Zeitverschiebung recht kompliziert. Die zwingende Gleichzeitigkeit des Austauschs waren hier sicher eine Herausforderung.
- Zudem ist man nie ganz sicher, ob die Meldung von Eve nicht abgefangen und verändert wurde, d.h. es stellt sich auch das Problem der Authentifizierung: Man muss sicher sein, dass die erhaltene Meldung auch tatsächlich vom Absender stammt.
Hier hatten W. Diffie und M. Hellman neben einer Lösung für das Schlüsselaustauschproblem eine zweite gute Idee.
Idee von Whitefield Diffie zur asymmetrischen Verschlüsselung
Whitefield Diffie hatte eine Idee, wie man von der symmetrischen Verschlüsselung wegkommen könnte und formulierte die Idee der asymmetrischen Verschlüsselung, welche die moderne Kryptografie revolutionieren sollte. Auch hier gibt es Gedankenexperimente, welche die Grundlage für spätere mathematische Verschlüsselungen bildeten:
Angenommen Alice hat einen Koffer und ein Schloss mit einem passenden Schlüssel. Bob hat seinerseits einen Koffer, ein Schloss und einen passenden Schlüssel. Wie können sie sicher eine Meldung austauschen?
- Alice steckt das Geheimnis in den Koffer, schliesst diesen mit dem Schloss ab und schickt ihn an Bob. Eve sieht den Koffer zwar, kann ihn jedoch nicht öffnen. Auch Bob ist es nicht möglich, den Koffer zu öffnen. Er nimmt sein persönliches Schloss, verschliesst den Koffer damit noch einmal und schickt ihn zurück an Alice. Unterwegs sieht Eve den Koffer den zwei Schlössern, doch sie kann ihn natürlich nicht öffnen. Bei Alice angekommen, entnimmt diese ihr Schloss vom Koffer und schickt ihn erneut an Bob. Dieser kann nun sein Schloss entfernen und den Inhalt bestaunen.
- Bob schickt sein offenes Schloss an Alice. Diese steckt das Geheimnis in ihren Koffer und schliesst ihn mit dem Schloss von Bob ab. Nun kann weder sie noch Eve den Koffer öffnen. Doch nachdem Bob den Koffer erhalten hat, kann er das Schloss mit seinem Schlüssel öffnen.
Vor allem das zweite Gedankenexperiment zeigt das Prinzip der asymmetrischen Verschlüsselung auf: Für die Verschlüsselung wird nicht derselbe Schlüssel verwendet wie für die Entschlüsselung.
Asymmetrische Verschlüsseung
Bei der Asymmetrischen Verschlüsselung gibt es einen öffentlichen Schlüssel, mit welchem Meldungen verschlüsselt werden können und einen privaten Schlüssel, mit dem verschlüsselte Nachrichten wieder entschlüsselt werden können. Mithilfe des öffentlichen Schlüssels kann weder die Nachricht entschlüsselt, noch der private Schlüssel herausgefunden werden.
RSA-Verfahren: das erste asymmetrische Verschlüsselungssystem
Die drei Mathematiker Ron Rivest, Adi Shamir und Leonard Adleman wollten eigentlich die Ideen von Diffie und Hellman zur Möglichkeit eines asymmetrischen Kryptoverfahrens widerlegen und zeigen, dass man ein solches System stets angreifen und knacken kann. Nachdem sie bei einigen Ansätzen beweisen konnten, dass diese nicht funktionierten, stiessen sie schliesslich auf eine Möglichkeit, die keine Schwachstellen aufwies und daraus entstand das auch heute noch angewandte und nach ihnen benannte RSA-Verfahren.
Wir können dieses hier nicht im Detail behandeln, doch es basiert ähnlich wie der Schlüsseltausch nach Diffie-Hellman auf der Modulo-Arithmetik und zusätzlich darauf, dass es sehr schwer ist, eine Zahl in ihre Primfaktoren zu zerlegen, wenn diese das Produkt aus zwei sehr grossen Primzahlen ist.
Als anschauliches Beispiel, welches wir noch im Kopf rechnen können: Die Primfaktoren von 55 sind 11 und 5, diese sind sehr schnell gefunden. Die Primfaktoren von 241103 zu finden, ist wesentlich schwieriger. Es dauert sicher länger, bis die beiden Primfaktoren 461 und 523 gefunden werden. Natürlich wird mit immens grossen Primzahlen operiert. –> grösste bekannte Primzahl.
RSA Verfahren
Das RSA Verfahren wurde 1977 von Rivest, Shamir und Adleman entwickelt. Es ist die mathematische Beschreibung, wie man ein Schlüsselpaar aus einem öffentlichen Schlüssel (Public Key) und einem privaten Schlüssel (Private Key) erstellen kann.
Der öffentliche Schlüssel kann in einem Verzeichnis veröffentlicht werden oder man kann ihn auf seiner Homepage jedem zugänglich machen (siehe z.B. Profil eines Universitäts-Mitarbeiters). Nur mithilfe des geheimen privaten Schlüssels ist es möglich, eine mit dem öffentlichen Schlüssel chiffrierte Nachricht zu dekodieren.
Aufgabe
Erstellen Sie auf dieser Seite Ihren öffentlichen und privaten Schlüssel. Kopieren Sie dann Ihren öffentlichen Schlüssel in die vorgesehene Spalte auf der vorbereiteten „OneNote-Seite“. Schicken Sie nun jemandem aus der Klasse mithilfe dessen öffentlichen Schlüssels eine verschlüsselte Nachricht. Sie erhalten von jemandem anderen eine Nachricht, die sie mit Hilfe Ihres privaten Schhlüssels - nicht des öffentlichen - dechiffrieren können.
Bemerkung
Dies dient natürlich nur zur Veranschaulichung: normalerweise sollte man die Schlüssel nicht online generieren lassen und auch die unverschlüsselte Meldung nicht online eingeben.
Zusatzfrage: Begründen Sie, warum dies keine gute Idee wäre.
Digitale Signatur mit dem RSA Verfahren
Neben dem sicheren Verschlüsseln einer Nachricht interessiert man sich oft auch für die Integrität und die Authentizität einer Nachricht.
Integrität bedeutet: Die Nachricht wurde unterwegs nicht durch eine Drittperson (Eve) verändert.
Authentizität bedeutet: die Nachricht stammt tatsächlich vom vorgegebenen Absender. D.h. Eve kann nicht Nachrichten im Namen von Alice oder Bob verschicken.
Mithilfe der Public-Key-Kryptographie kann sowohl das Problem der Integrität, als auch dasjenige der Authentizität gelöst werden. Vom Prinzip her läuft dies folgendermassen:
Alice verschlüsselt einen kleinen Text (eine Signatur/Unterschrift) mit ihrem privaten Schlüssel und fügt diesen und auch den unverschlüsselten Text zu ihrer Nachricht hinzu. Nun kann jeder mit dem öffentlichen Schlüssel von Alice die Signatur entschlüsseln und dadurch prüfen, ob die Nachricht von Alice stammt, denn nur mit dem öffentlichen Schlüssel von Alice kann dieser Text entschlüsselt werden.
Das Ganze funktioniert, da die Ver- bzw. Entschlüsselung reziprok ist, d.h. wenn man eine Nachricht mit dem öffentlichen Schlüssel verschlüsselt, kann man sie nur durch den privaten Schlüssel entschlüsseln und wenn eine Nachricht mit dem privaten Schlüssel verschlüsselt wird, kann man sie nur durch den öffentlichen Schlüssel entschlüsseln.
Konkrete Verschlüsselung im Internet (SSL/TLS)
Was passiert nun konkret, wenn man sich im Internet bewegt und sensible Daten ausgetauscht werden sollen? Egal ob es sich um Kreditkartennummer, Passwörter, Persönliche Daten in einem Onlineshop, E-Banking etc. handelt, sollten die Daten unbedingt verschlüsselt werden, da sie durchaus von Dritten „angezapft“ und gelesen werden können.
An der Internetadresse ist leicht zu erkennen, ob der Datenaustausch verschlüsselt oder unverschlüsselt passiert, denn die Internetadresse wechselt von http (Hypertext Transfer Protocol) auf https (Hypertext Transfer Protocol Secure). Zudem ist links neben der Internetadresse ein Symbol mit einem geschlossenen Schloss zu sehen. Betrachten wir z.B. den Aufruf der Seite Instagram:
Der Client (mein Browser z.B. Google Chrome/Safari/Firefox) verbindet sich mit dem Server von Instagram und sendet ein so genanntes „Client Hello“. Dies ist eine Startmeldung, die dem Server zu verstehen gibt, dass sich jemand mit ihm verschlüsselt „unterhalten will“. Nun müssen sich Chrome und der Instagram-Server darauf verständigen, welche Verschlüsselungsmethode und welcher Schlüssel verwendet werden. Theoretisch könnte der Server einfach seinen öffentlichen Schlüssel senden und der Client verschlüsselt die gesammten Daten mit diesem öffentlichen Schlüssel und schickt sie dem Server, doch bei grösseren Datenmengen ist dies recht ineffizient da es ziemlich aufwändig ist, viele Daten mit dem RSA-Verfahren auszutauschen.
Es wird daher von beiden Seiten ein symmetrisches Verfahren verwendet, welches zunächst abgemacht wird (DES, 3DES, Idea und RC4). Welches Verfahren verwendet wird, hängt davon ab, welche Verschlüsselung der Client und der Server beherrschen. Bevor aber symmetrisch verschlüsselt werden kann, muss zunächst ein Schlüssel (Session-Key) ausgetauscht werden. Dieser Schlüsseltausch geschieht mit dem RSA- oder mit dem Diffie-Hellman Verfahren. Sobald beiden Parteien den Schlüssel haben wird der gesamte Nachrichtenverkehr mit diesem Schlüssel verschlüsselt und bei jeder Neuverbindung wird ein neuer Schlüssel gewählt.
Damit der Client sicher ist, dass er tatsächlich mit Instagram verbunden ist, schickt der Server noch ein Zertifikat, welches als Digitale Signatur dient. Dieses Zertifikat ist ausserdem bei einer Zertifizierungsstelle registriert, so dass man sicher ist, dass der entsprechende private Schlüssel auch tatsächlich Instagram gehört.
Aufgabe
- Was ist der grosse Unterschied zwischen einem symmetrischen und einem asymmetrischen Verschlüsselungssystem?
- Was versteht man unter Integrität und Authentizität?
- Wie kann man mit der Public-Key Kryptographie (z.B. RSA) eine digitale Unterschrift realisieren?
- Warum benötigt man eine unabhängige Zertifizierungsstelle?
- Klicke in Google Chrome bei einer gesicherten Verbindung rechts oben auf die drei Punkte und dann auf „Weitere Tools“→„Entwicklertools“. Nun kannst du unter „Security“ sehen, ob und wie deine Verbindung gesichert ist. ECDHE_RSA bedeutet z.B., dass (Elliptic-Curve)Diffie Hellman für den Schlüsseltausch und RSA für die Authentifizierung verwendet wird. AES_256 ist eine Spezifikation für die verwendete symmetrische Verschlüsselung.
Hier sieht man, welche Verschlüsselungsverfahren der Browser beherrscht. Die Abkürzungen enthalten sowohl die Methode, wie der Schlüssel ausgetauscht wird, als auch welche Symmetrische Verschlüsselung danach verwendet wird. Z.B. ECDHE = Elliptic Curve Diffie-Hellman (Schlüsseltausch) Komplette Informationen z.B hier: https://ciphersuite.info/cs/TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256/
