Wie funktioniert symmetrische Verschlüsselung?
Bei der symmetrischen Verschlüsselung benutzen beide Seiten denselben geheimen Schlüssel: zum Verschlüsseln und zum Entschlüsseln. Wer den Schlüssel nicht hat, sieht nur Zeichenmüll.
Das ist die schnellste Art, Daten zu schützen. Sie steckt in Ihrem WLAN, in verschlüsselten Festplatten und in fast jeder sicheren Verbindung.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie ein gemeinsamer Schlüssel Daten verschlüsselt und wieder entschlüsselt.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Klartext | die Nachricht vor dem Verschlüsseln, so wie Menschen sie lesen | |
| Geheimtext | die verschlüsselte Nachricht, die ohne Schlüssel unlesbar ist | |
| Schlüssel | ein geheimer Wert, der bestimmt, wie verschlüsselt wird | |
| Brute Force | alle möglichen Schlüssel der Reihe nach ausprobieren | |
| Blockchiffre | ein Verfahren, das Daten in Blöcken fester Größe verschlüsselt | AES |
| Schlüssellänge | wie viele Bit ein Schlüssel hat |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Schlüssel für beide Richtungen
Aus dem Klartext macht ein Verfahren mit dem Schlüssel den Geheimtext. Mit demselben Schlüssel macht das Verfahren aus dem Geheimtext wieder den Klartext.
Das Verfahren selbst darf jeder kennen. Geheim bleibt nur der Schlüssel. Das ist die Regel von Kerckhoffs.
Die älteste Idee: jeden Buchstaben verschieben
Bei der Verschiebechiffre rückt jeder Buchstabe im Alphabet um dieselbe Zahl weiter. Der Schlüssel ist diese Zahl. Mit Schlüssel 3 wird aus A ein D und aus HALLO ein KDOOR.
Das Werkzeug tr tauscht Zeichen aus. Probieren Sie es.
HALLO um drei Stellen verschieben
echo "HALLO" | tr 'A-Z' 'D-ZA-C'Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den Geheimtext wieder zurückverschieben
echo "KDOOR" | tr 'D-ZA-C' 'A-Z'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 KDOOR aus, der zweite HALLO. Dieselbe Zahl 3 verschlüsselt und entschlüsselt: einmal vorwärts, einmal rückwärts.
Diese Chiffre ist mit Absicht schwach. Sie taugt für nichts, was geheim bleiben soll.
Warum 25 Schlüssel zu wenig sind
| Probierter Schlüssel | Ergebnis für KDOOR | Sinnvolles Wort? |
|---|---|---|
| 0 | KDOOR | Nein |
| 1 | JCNNQ | Nein |
| 2 | IBMMP | Nein |
| 3 | HALLO | Ja |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Kodieren ist nicht verschlüsseln
Base64 schreibt Bytes als lesbare Zeichen auf. Es gibt dabei keinen Schlüssel. Jeder Mensch kann es zurückwandeln.
Verwechseln Sie das nie mit Verschlüsselung. Ein Passwort in Base64 ist ein offenes Passwort.
HALLO in Base64 kodieren
printf 'Hallo' | base64Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ohne Schlüssel zurückwandeln
echo SGFsbG8= | base64 -dHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zwei Zeilen, kein Geheimnis
Der erste Befehl gibt SGFsbG8= aus, der zweite Hallo. Es war kein Schlüssel nötig.
Wer Base64 erkennt, liest den Inhalt sofort.
Moderne Verfahren: AES und lange Schlüssel
Heute nutzt man Blockchiffren wie AES. Sie verschlüsseln Daten in Blöcken von 128 Bit. Der Schlüssel hat 128 oder 256 Bit.
Jedes Bit verdoppelt die Zahl der möglichen Schlüssel. Darum macht Länge den Unterschied: Brute Force wird unmöglich.
Wie viele Schlüssel hat ein 56-Bit-Schlüssel?
python3 -c "print(2 ** 56)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Und wie viele ein 128-Bit-Schlüssel?
python3 -c "print(2 ** 128)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Beispiel: Schlüssel ausprobieren
| Schlüssellänge | Mögliche Schlüssel | Bei einer Milliarde Versuchen je Sekunde |
|---|---|---|
| 56 Bit | 72057594037927936 | Etwa 2,3 Jahre |
| 128 Bit | 340282366920938463463374607431768211456 | Weit länger als das Alter des Universums |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Bauen Sie nie ein eigenes Verfahren
Warnung
Die Verfahren in dieser Lektion sind Spielzeug und mit Absicht gebrochen. Echte Verfahren prüfen Fachleute über Jahre. Nutzen Sie in jedem Programm eine geprüfte Bibliothek und nie Ihren eigenen Code.
Der Modus und der Zufallswert gehören dazu
Eine Blockchiffre verschlüsselt nur einen Block. Der Betriebsmodus legt fest, wie mehrere Blöcke nacheinander verschlüsselt werden. Moderne Modi brauchen zusätzlich einen Zufallswert, der sich nie wiederholen darf.
Wer denselben Zufallswert mit demselben Schlüssel zweimal nutzt, gibt Angreifenden Hinweise auf den Klartext. Das ist ein häufiger Programmierfehler.
Das Schlüsselproblem wächst schnell
| Personen | Schlüssel für alle Paare | Wie gerechnet |
|---|---|---|
| 2 | 1 | 2 mal 1 geteilt durch 2 |
| 5 | 10 | 5 mal 4 geteilt durch 2 |
| 10 | 45 | 10 mal 9 geteilt durch 2 |
| 100 | 4950 | 100 mal 99 geteilt durch 2 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele glauben, ein Verfahren sei sicher, wenn niemand es kennt. Das stimmt nicht. Sicher ist es, wenn Angreifende das Verfahren kennen und der Schlüssel trotzdem geheim bleibt.
Weiterführend: ein einfaches XOR
Mit python3 -c "print(bytes(b ^ 42 for b in b'Hallo').hex())" verschlüsseln Sie jedes Byte mit XOR und dem Schlüssel 42. Es gibt 624b464645 aus.
Wenden Sie dasselbe noch einmal auf diese Bytes an. Sagen Sie in einem Satz, warum ein Ein-Byte-Schlüssel nicht sicherer ist als die Verschiebechiffre.