TLS Schlüsselaustausch und Sitzungsschlüssel 1.2 Einfach erklärt
TLS 1.3 Handshake – ganz einfach
Grundidee
- Client und Server wollen sicher kommunizieren
- dafür brauchen beide denselben geheimen Sitzungsschlüssel
- dieser Schlüssel darf nicht im Klartext übertragen werden
Client Hello
- Client meldet sich beim Server
- sagt:
- welche TLS-Versionen er unterstützt (z. B. TLS 1.2)
- welche Verschlüsselungsverfahren er kann
- schickt einen Zufallswert (Client Random)
Server Hello
- Server wählt:
- TLS 1.2
- ein konkretes Verschlüsselungsverfahren
- schickt seinen Zufallswert (Server Random)
- schickt sein Zertifikat mit dem öffentlichen Schlüssel
Server-Zertifikat
- enthält den öffentlichen Schlüssel des Servers
- identifiziert den Server eindeutig
- Client prüft:
- Ist das Zertifikat echt?
- Vertraue ich der ausstellenden CA?
- Passt der Name zum Server?
Schlüsselaustausch (klassisch mit RSA)
- Client erzeugt ein geheimes Zufallsgeheimnis (Pre-Master Secret)
- Client verschlüsselt dieses Geheimnis:
- mit dem öffentlichen Schlüssel des Servers
- Client sendet das verschlüsselte Geheimnis an den Server
- nur der Server kann es entschlüsseln:
- mit seinem privaten Schlüssel
Schlüsselaustausch (modern mit (EC)DHE)
- Client und Server tauschen öffentliche DH-Werte aus
- beide berechnen daraus lokal dasselbe Geheimnis
- kein Geheimnis wird direkt übertragen
- bietet Perfect Forward Secrecy
Gemeinsames Geheimnis
- Client und Server besitzen nun dasselbe geheime Material
- zusätzlich fließen ein:
- Client Random
- Server Random
Sitzungsschlüssel ableiten
- aus dem gemeinsamen Geheimnis werden Schlüssel berechnet
- daraus entstehen:
- Sitzungsschlüssel für Verschlüsselung
- Schlüssel für Integrität (MAC)
- diese Schlüssel gelten nur für diese Verbindung
Change Cipher Spec
- beide Seiten sagen:
- „Ab jetzt benutzen wir die neuen Schlüssel“
- Umschaltpunkt auf verschlüsselte Kommunikation
Finished
- beide Seiten senden eine Prüfsumme über den bisherigen Handshake
- beweist:
- nichts wurde manipuliert
- beide haben dieselben Schlüssel
- Handshake ist abgeschlossen
TLS 1.2 Verbindung aktiv
- Sitzungsschlüssel ist aktiv
- Anwendungsdaten werden verschlüsselt übertragen