Sie haben kryptografische Verschlüsselungsverfahren zur Geheimhaltung und Signierungsverfahren zur Authentizitätsprüfung in Kommunikationsprozessen kennengelernt. Sehen wir uns nun an, wie diese Methoden ganz praktisch zur sicheren Kommunikation im Internet verwendet werden.
Ich nenne einmal Beispiele für Anwendungen auf drei verschiedenen Ebenen, je nachdem, durch wen die kryptografischen Funktionen verwendet werden: aktiv durch Nutzer/innen, automatisch durch Anwendungen und auf der Transportebene in Netzwerken.
Grenzen wir zunächst ab, welche Bestandteile des Datenverkehrs hier eigentlich verschlüsselt werden. Zur Erinnerung: Die Protokollnachrichten der Anwendungen werden ja nicht einfach so ausgetauscht, sondern in Paketen, die mit zusätzlichen Informationen aller Schichten des Internetprotokollstapels versehen, also mit Protokollinformationen der Netzzugangs-, Vermittlungs- und Transportschicht. Diese Informationen werden nicht verschlüsselt, sondern ausschließlich die in den Paketen enthaltenen Nachrichten der Anwendungsschicht.
Das macht auch Sinn, wenn wir uns zur Veranschaulichung dieses Beispielpaket ansehen: In den Paketen stehen Informationen wie MAC-Adressen, IP-Adressen und Ports von Sender und Empfänger. Diese Informationen werden von Zwischenstationen wie Routern und Switches benötigt, die das Paket durch das Internet weiterreichen und sollten daher nicht verschlüsselt sein. Verschlüsselt werden die Anfragen und Antworten der Anwendungen, hier also die HTTP-Anfrage, so dass eine Person, die Pakete unterwegs abfängt und ausliest, zwar erkennen kann wer Empfänger oder Absender sind, aber den Inhalt der Anfrage selbst nicht entziffern kann, also etwa den Namen des abgefragten Dokuments, Parameter wie Benutzername oder Passwort, die mit der Anfrage mitgeschickt werden, oder auch Cookies, die in der Anfrage enthalten sind. Erst beim Empfänger (hier beim Webserver) wird die Anwendungsnachricht wieder entschlüsselt und verarbeitet.
Die Details werden durch das Protokoll TLS (kurz für Transport Layer Security) geregelt, auch unter der älteren Bezeichnung SSL (Secure Sockets Layer) bekannt. TLS ist ein Verschlüsselungsprotokoll zur sicheren Datenübertragung im Internet. Es verschlüsselt Nachrichten von Anwendungsprotokollen (z. B. HTTP), die über TCP transportiert werden (heißt dann HTTPS).
TSL ordnet sich im Internetprotokollstapel zwischen Transportschicht und Anwendungsschicht ein. Es ergänzt also das Transportprotokoll TCP um zusätzliche Schritte, um die Nachrichteninhalte, die per TCP transportiert werden, vor dem Versand zu verschlüsseln und beim Empfang wieder zu entschlüsseln.
Das Praktische bei TLS ist, das sich mit Hilfe dieses Protokolls prinzipiell jedes Anwendungsprotokoll (das TCP als Transportprotokoll nutzt) verschlüsselt übertragen lässt und sich für die Kommunikation der Anwendungsprogramme untereinander nichts ändert, da sie nach wie vor die gleichen Nachrichten senden und empfangen.
TLS verwendet eine hybrides Verschlüsselungsverfahren, das heißt, zu Beginn des Datenaustauschs wird mittels asymmetrischer Verschlüsselung ein geheimer Schlüssel ausgetauscht, für den eigentliche Datenaustausch wird dann eine symmetrische Verschlüsselung verwendet, die sich ja wie Sie wissen weniger rechenaufwendig ist als eine asymmetrische.
Der Verbindungsaufbau des TCP-Protokoll wird durch TLS um die folgenden drei Schritte erweitert:
In früheren Versionen von TLS wurde der öffentliche Schlüssel des Server verwendet, um den Sitzungsschlüssel asymmetrisch verschlüsselt auszutauchen. In der aktuellen Version wird dagegen ein anderes Schlüsselaustauschverfahren verwendet, der (nach seinen Entwicklern benannte) Diffie-Hellman-Schlüsseltausch. Hier werden quasi spontan kurzfristig gültige asymmetrische Schlüssel erzeugt, die nur für den Austausch des Sitzungsschlüssels verwendet werden und anschließend wieder verfallen, was die Sicherheit gegenüber einem Verfahren mit einem festen, mehrfach verwendeten asymmetrischen Schlüssel erhöht.
Der Diffie-Hellman-Schlüsseltausch verwendet im Prinzip sehr einfache und kurze Berechnungen, allerdings werden dabei als Operationen Potenzierung und Modulo (Divisionsrest) verwendet, weswegen der Algorithmus sich eventuell nicht für die Sekundarstufe I eignet.
Kernstück des Verfahrens ist die modulare Potenzgleichung a hoch x mod b = c, die sich einfach berechnen, aber nur schwer bzgl. x auflösen lässt (bzw. momentan praktisch unmöglich in annehmbarer Zeit) – also eine Einwegfunktion darstellt.
Der Algorithmus lässt sich aber auch gut anschaulich mit Hilfe von Farben als Metapher vermitteln. Als Einwegfunktion dient hier das Mischen von Farben: Wir gehen davon aus, dass wir eine gemischte Farben unmöglich in die beiden Komponenten zerlegen können, aus denen sie zusammengemischt wurden, auch wenn wir eine der beiden Komponenten kennen. Hier ist das Ziel, dass Alice und Bob eine gemeinsame, geheime Farbe festlegen wollen, die außer ihnen niemand kennt. Dazu tauschen sie zuerst eine Farbe c aus, die öffentlich bekannt sein darf. Dann wählen beide zufällige je einer geheime Farbe, Alice die Farbe a und Bob die Farbe b. Beide mischen ihre Farbe zur öffentlichen Farbe c und schicken sich gegenseitig die Resultate zu. Achtung: Einer Person, die den Farbenaustausch verfolgt, ist es nicht möglich, aus den beiden Mischfarben die Komponenten a oder b zu extrahieren, auch wenn sie c kennt. Anschließend mischt Alice ihre Farbe a zur Mischfarbe bc, die sie von Bob erhalten hat, und Bob mischt seine Farbe b zur Farbe ac von Alice. Voilà: Beide erhalten die gleiche Farbe abc.
Wenn wir uns nun vorstellen, dass diese Farben Zahlen sind und statt “Mischen” Potenzrechnung mit Modulo verwendet wird, erhalten wir den Diffie-Hellman-Algorithmus.
Exakte Beschreibung des Diffie-Hellman-Algorithmus ergänzen und auf die entsprechende Stationsaufgabe im Spioncamp verweisen.