Wie funktioniert ein öffentlicher Schlüssel?
Bei der asymmetrischen Verschlüsselung hat jede Person zwei Schlüssel: einen öffentlichen, den alle kennen dürfen, und einen privaten, den nur sie selbst kennt. Was der eine verschließt, öffnet nur der andere.
So können sich zwei Menschen sicher schreiben, die sich nie getroffen haben. Eine Webseite nutzt dieses Prinzip bei jedem Aufruf mit HTTPS.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie ein öffentlicher und ein privater Schlüssel zusammenarbeiten.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| öffentlicher Schlüssel | der Teil des Paares, den alle kennen dürfen und mit dem man verschlüsselt | |
| privater Schlüssel | der Teil des Paares, der geheim bleibt und mit dem man entschlüsselt | |
| Schlüsselpaar | zwei Schlüssel, die mathematisch zusammengehören | |
| Modulo | der Rest nach einer Division | 15 modulo 12 ist 3 |
| Primzahl | eine Zahl, die nur durch 1 und sich selbst teilbar ist | 11 |
| Hybridverfahren | asymmetrisch einen Schlüssel vereinbaren, symmetrisch die Daten verschlüsseln |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Das Problem: Wie kommt der Schlüssel zum Gegenüber?
Symmetrische Verfahren sind schnell. Sie haben aber ein Henne-Ei-Problem: Beide brauchen denselben geheimen Schlüssel, und den muss einer zum anderen bringen.
Per E-Mail ist das riskant, denn jede Person auf dem Weg liest mit. Die asymmetrische Verschlüsselung löst das Problem.
Ein Briefkasten als Bild
Stellen Sie sich einen Briefkasten vor. Jede Person darf einen Brief einwerfen. Nur wer den Schlüssel zum Kasten hat, holt die Briefe heraus.
Der öffentliche Schlüssel ist der Einwurfschlitz: alle dürfen ihn nutzen. Der private Schlüssel ist der Schlüssel zum Kasten und bleibt beim Besitzer.
RSA mit kleinen Zahlen in vier Schritten
RSA ist das bekannteste Verfahren dieser Art. Wir rechnen mit Zahlen, die so klein sind, dass Sie nachrechnen können. Das ist ein Spielzeug und nicht sicher.
Echte Schlüssel haben Hunderte von Stellen. Das Prinzip bleibt gleich. Lesen Sie die Tabelle von oben nach unten.
Ein Beispiel: ein kleines Schlüsselpaar bauen
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| 1. Zwei Primzahlen wählen | p = 11 und q = 23 | Beide sind prim |
| 2. Das Produkt bilden | n = 11 mal 23 | n = 253 |
| 3. Den Hilfswert bilden | (11 minus 1) mal (23 minus 1) | 220 |
| 4. Einen öffentlichen Exponenten wählen | e = 7, teilerfremd zu 220 | e = 7 |
| 5. Den privaten Exponenten finden | d mit 7 mal d, Rest 1 modulo 220 | d = 63 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
n und den Hilfswert berechnen
python3 -c "print(11 * 23, (11 - 1) * (23 - 1))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Stimmt der private Exponent?
python3 -c "print(7 * 63 % 220)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was das Terminal ausgibt
Der erste Befehl gibt 253 220 aus. Der zweite gibt 1 aus. Das Zeichen % rechnet Modulo, also den Rest.
Der öffentliche Schlüssel ist jetzt das Paar (7, 253). Der private ist das Paar (63, 253).
Verschlüsseln und Entschlüsseln heißt potenzieren
Eine Nachricht ist hier eine Zahl m unter 253. Der Geheimtext c ist m hoch e, Rest modulo n. Zurück kommt man mit c hoch d, Rest modulo n.
Python rechnet das mit pow(m, e, n) schnell und ohne riesige Zwischenwerte.
Die Zahl 65 mit dem öffentlichen Schlüssel verschlüsseln
python3 -c "print(pow(65, 7, 253))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Mit dem privaten Schlüssel zurückrechnen
python3 -c "print(pow(153, 63, 253))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Mit einem falschen Exponenten versuchen
python3 -c "print(pow(153, 62, 253))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Nur der richtige Schlüssel führt zurück
Die drei Befehle geben 153, dann 65 und dann 12 aus. Mit 63 kommt die Ausgangszahl zurück. Mit 62 kommt eine andere Zahl heraus, nicht die 65.
Wer nur (7, 253) kennt, müsste 253 in 11 mal 23 zerlegen, um d zu finden. Bei 253 gelingt das im Kopf. Bei einer Zahl mit 600 Stellen gelingt es keinem Computer.
Warum echte Schlüssel groß sein müssen
| Größe von n | Zerlegen in Primzahlen |
|---|---|
| 3 Stellen, wie 253 | Von Hand in Sekunden |
| 15 Stellen | Mit einem Programm in Sekunden |
| über 600 Stellen, 2048 Bit | Mit heutiger Technik praktisch unmöglich |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bauen Sie nie Ihr eigenes RSA
Warnung
Das RSA dieser Lektion ist ein Spielzeug. Echtes RSA braucht Auffüllen, große Zufallszahlen und viele Vorsichtsmaßnahmen. Nutzen Sie dafür eine geprüfte Bibliothek und nie Ihren eigenen Code.
In der Praxis mischt man beide Arten
Asymmetrische Verfahren sind langsam. Darum verschlüsselt man mit ihnen nur einen kurzen Sitzungsschlüssel. Die eigentlichen Daten verschlüsselt danach ein schnelles symmetrisches Verfahren wie AES.
Das nennt man ein Hybridverfahren. Fast jede HTTPS-Verbindung arbeitet so.
Ein häufiger Fehler
Warnung
Viele glauben, der öffentliche Schlüssel müsse geheim bleiben, oder der private dürfe weitergegeben werden. Es ist umgekehrt. Der öffentliche Schlüssel ist für alle, der private gehört nur Ihnen.
Weiterführend: andere Zahlen wählen
Wählen Sie p = 7, q = 19 und e = 5. Berechnen Sie n und den Hilfswert von Hand. Suchen Sie dann d mit einem kleinen Python-Befehl.
Verschlüsseln Sie die Zahl 42 und rechnen Sie zurück. Beschreiben Sie in zwei Sätzen, was angreifende Personen bräuchten, die nur (5, 133) kennen.