Dies ist eine alte Version des Dokuments!


IV. Asymmetrische Kryptographie

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.

Das Schlüsseltauschverfahren hatte gewisse Nachteile

  • Alice und Bob müssen 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.
  • Man ist nie ganz sicher, ob die Meldung von Eve nicht abgefangen und verändert wurde, d.h. es stellt sich auch das Problem der Authentifizierung. Eve könnte bei der Reinform des Diffie-Hellman-Verfahrens eine Man-In-The-Middle-Attacke ausführen.

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 Nachrichten 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.

Das aktuell am häufigsten eingesetzte asymmetrische Verschlüsselungsverfahren ist das RSA-Verfahren, welches darauf beruht, dass man sehr einfach zwei sehr grosse Primzahlen multiplizieren kann, dass es aber fast unmöglich ist, das Produkt zweier sehr grossen Primzahlen wieder zu faktorisieren. Auch der Diffie-Hellman-Schlüsseltausch ist in gewisser Weise ein asymmetrisches Verfahren, da ja Alice und Bob einen öffentlichen Schlüssel austauschen (g,p) und jeder seinen eigenen privaten Schlüssel für sich behält (A,B). Hier geht es jedoch nicht um die Verschlüsselung, sondern um die Erzeugung eines Schlüssels.

Die Asymmetrische Kryptographie ist oft sehr rechenintensiv und daher nicht geeignet, um grosse Datenmengen zu verschlüsseln. Mit ihr kann man aber beispielsweise sicher ein Passwort für ein symmetrisches Verfahren übermitteln (statt Diffie-Hellman) oder sich auch gegenüber von Drittpersonen authentifizieren.

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 berechnet z.B. mit SHA256 den Hash-Wert ihrer Nachricht und verschlüsselt diesen mit ihrem privaten Schlüssel (Signatur) und fügt diesen und auch den unverschlüsselten Text zu ihrer Nachricht hinzu. Nun kann jeder mit dem öffentlichen Schlüssel von Alice den Hash entschlüsseln und dadurch prüfen, ob die Nachricht von Alice denselben Hashwert generiert. Dadurch ist sichergestellt, dass die Nachricht tatsächlich von Alice stammt (nur ihr öffentlicher Schlüssel entschlüsselt den Hashwert korrekt) und dass die Nachricht nicht verändert wurde (sonst würde der Hashwert nicht übereinstimmen).

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.

Ein digitales Zertifikat für eine Webseite enthält typischerweise den Domainnamen und den öffentlichen Schlüssel der Webseite, ein Ablaufdatum und und die Signatur einer Zertifizierungsstelle. Es bestätigt, dass der öffentliche Schlüssel tatsächlich zur entsprechenden Webseite gehört (Authentizität).

Die Erstellung einer digitalen Signatur mit einem asymmetrischen Verfahren wie RSA funktioniert im Prinzip umgekehrt zur Verschlüsselung:

  1. Signieren: Eine Nachricht wird mit dem privaten Schlüssel des Absenders verschlüsselt. Da nur der Absender im Besitz dieses Schlüssels ist, kann auch nur er diese Operation durchführen. In der Praxis wird oft nicht die gesamte Nachricht, sondern deren Hashwert signiert.
  2. Verifizieren: Der Empfänger kann die Signatur mit dem öffentlichen Schlüssel des Absenders entschlüsseln. Ist das Ergebnis ein kohärenter Text (oder stimmt der Hashwert überein), hat der Empfänger die Gewissheit über die Authentizität und Herkunft der Nachricht.

Eine Zertifizierungsstelle ist eine vertrauenswürdige dritte Partei, die die Echtheit von öffentlichen Schlüsseln bestätigt. Eine Website muss beispielsweise gegenüber einer CA beweisen, dass sie der Inhaber einer Domain ist. Daraufhin signiert die CA das Zertifikat der Website, welches den öffentlichen Schlüssel und den Domainnamen enthält.

Dieses Signieren geschieht folgendermassen: Die CA verschlüsselt die zu bestätigenden Informationen (in der Praxis oftmals nur den Hashwert) mit ihrem privaten Schlüssel . Nun kann jeder das Zertifikat nehmen und mit dem öffentlichen Schlüssel der Zertifizierungsstelle prüfen, ob die Informationen korrekt sind.

Es gibt sogenannte Stammzertifizierungsstellen (Root CAs), z.B. DigiCert Inc, Global Sign, Entrust, Sectigo, Let's Encrypt etc. Diesen Ausstellern vertraut der Browser per Definition, d.h. er hat die öffentlichen Schlüssel und kann damit prüfen, ob ein Zertifikat von diesen Root CAs signiert wurde.

Die Root-CAs können ihrerseits Zertifikate für Zwischenzertifizierungsstellen (Intermediate CAs) signieren. Wenn ein Browser sich mit einer Webseite verbindet, erhält er eine Kette von Zertifikaten. Der Browser prüft die Signatur jedes Zertifikats in der Kette, bis er auf ein Zertifikat stößt, das von einer ihm bekannten Root CA signiert wurde. Dieses Prinzip des transitiven Vertrauens (Wenn A B vertraut und B C vertraut, dann kann A auch C vertrauen) ermöglicht es, Vertrauen in großem Maßstab zu skalieren und wird Public-Key-Infrastruktur (PKI) genannt. Dieses System, das insbesondere bei TLS/SSL-Verbindungen im Internet (HTTPS) zum Einsatz kommt, bildet die Grundlage für die Authentifizierung im Web

AEAD-Algorithmen (Authenticated Encryption with Associated Data) machen zwei Dinge parallel: sie verschlüsseln die Daten symmmetrisch (z.B. mit AES, oder ChaCha20) und sie fügen direkt eine MAC hinzu, um die Authentizität zu gewährleisten (z.B. GMAC, Poly1305).

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 sogenanntes „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 gesamten Daten mit diesem öffentlichen Schlüssel und schickt sie dem Server, doch bei grösseren Datenmengen ist dies ineffizient, da es 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 (früher DES, heute AES, 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, sodass man sicher ist, dass der entsprechende private Schlüssel auch tatsächlich Instagram gehört.

Aufgabe

  1. Was ist der grosse Unterschied zwischen einem symmetrischen und einem asymmetrischen Verschlüsselungssystem?
  2. Was versteht man unter Integrität und Authentizität?
  3. Wie kann man mit der Public-Key Kryptographie (z.B. RSA) eine digitale Unterschrift realisieren?
  4. Warum benötigt man eine unabhängige Zertifizierungsstelle?
  5. 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.

https://www.howsmyssl.com/

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/

Zurück zur Übersicht

  • ef/kryptographie/asymmetrischekryptographie.1758802168.txt.gz
  • Zuletzt geändert: 2025/09/25 14:09
  • von lehmannr