Was ist symmetrische Verschlüsselung?
Bei der symmetrischen Verschlüsselung verwenden sowohl der Sender als auch der Empfänger denselben geheimen Schlüssel, um Nachrichten zu verschlüsseln und zu entschlüsseln.
Man kann es sich so vorstellen: Zwei Personen haben denselben Schlüssel zu einem Schloss. Einer sperrt die Nachricht ein (verschlüsseln), der andere sperrt sie wieder auf (entschlüsseln).
Der Name „symmetrisch" kommt daher, dass beide Seiten (Sender und Empfänger) den gleichen Schlüssel benutzen. Bei der asymmetrischen Verschlüsselung (wie bei HTTPS) hat jede Seite einen anderen Schlüssel.
Wie funktioniert symmetrische Verschlüsselung?
Der grundlegende Ablauf:
- Schlüssel vereinbaren: Sender und Empfänger einigen sich auf einen geheimen Schlüssel (z. B. ein langes Passwort oder eine zufällige Zahlenfolge)
- Verschlüsseln: Der Sender kombiniert den Klartext mit dem Schlüssel durch einen Algorithmus und erhält den Geheimtext
- Senden: Nur der Geheimtext wird übertragen – selbst wenn er abgefangen wird, ist er ohne Schlüssel nutzlos
- Entschlüsseln: Der Empfänger verwendet denselben Schlüssel, um den Geheimtext zurückzuwandeln
AES – Der moderne Standard
AES (Advanced Encryption Standard) ist der heute am häufigsten verwendete symmetrische Verschlüsselungsalgorithmus. Er wurde vom US-amerikanischen Normungsinstitut NIST standardisiert und wird weltweit eingesetzt.
AES verwendet Schlüssel der Länge 128, 192 oder 256 Bits. Ein 256-Bit-Schlüssel hat 2²⁵⁶ mögliche Kombinationen – selbst wenn man alle Computer der Welt nutzen würde, würde ein Brute-Force-Angriff länger dauern als das Universum alt ist.
# AES-Verschlüsselung mit der Bibliothek 'cryptography'
# (vereinfachtes Beispiel)
from cryptography.fernet import Fernet
# Schlüssel generieren
schluessel = Fernet.generate_key()
cipher = Fernet(schluessel)
# Nachricht verschlüsseln
nachricht = b"Geheime Nachricht!"
verschluesselt = cipher.encrypt(nachricht)
print("Verschlüsselt:", verschluesselt)
# Nachricht entschlüsseln
entschluesselt = cipher.decrypt(verschluesselt)
print("Entschlüsselt:", entschluesselt.decode())
Das Schlüsselaustausch-Problem
Der größte Nachteil der symmetrischen Verschlüsselung: Wie teilen Sender und Empfänger den geheimen Schlüssel mit, ohne dass jemand anderes ihn abfangen kann?
Wenn man ihn über das Internet sendet, könnte er abgehört werden. In Person ist das oft unpraktisch.
Das Schlüsselaustausch-Problem ist die größte Schwäche der symmetrischen Verschlüsselung. In der Praxis wird dieses Problem oft durch asymmetrische Verschlüsselung gelöst, die beim ersten Verbindungsaufbau verwendet wird, um den symmetrischen Schlüssel sicher auszutauschen.
Symmetrisch vs. Asymmetrisch
| Merkmal | Symmetrisch | Asymmetrisch |
|---|---|---|
| Schlüssel | Einer (geteilt) | Zwei (öffentl./privat) |
| Geschwindigkeit | Schnell | Langsamer |
| Schlüsselaustausch | Problematisch | Einfach |
| Beispiele | AES, DES | RSA, ECDSA |
| Verwendung | Datenverschlüsselung | Schlüsselaustausch |
In der Praxis kombiniert HTTPS beide: Asymmetrische Verschlüsselung beim Verbindungsaufbau, symmetrische für die eigentlichen Daten.
Übungsaufgaben
Erkläre in eigenen Worten, warum symmetrische Verschlüsselung ein 'Schlüsselaustausch-Problem' hat. Was könnte passieren, wenn der Schlüssel abgefangen wird?
Antwort anzeigen
Ein 128-Bit-AES-Schlüssel hat 2^128 mögliche Kombinationen. Warum ist es praktisch unmöglich, diesen durch einen Brute-Force-Angriff zu knacken?