2. Wie funktioniert die Verschlüsselung mit Hilfe von TLS?
Die TLS-Verschlüsselung ist (vereinfacht erklärt) eine Verschlüsselung, die einem anderen Protokoll (z.B. HTTP, SMTP, IMAP) vorgeschalten bzw. in dieses integriert ist. Dabei wird zunächst zwischen dem sendenden und dem empfangenden System (z.B. Webbrowser und Website-Server) ein verschlüsselter Kanal initiiert, innerhalb diesem dann das eigentliche Nutzdaten-Protokoll (z.B. HTTP) beibehalten werden kann.
Diese Initiierung des verschlüsselten Kanals wird TLS-Handshake genannt. Dieser wurde im Laufe der verschiedenen TLS/SSL-Versionen erheblich weiterentwickelt, erfüllt aber zusammengefasst 4 Funktionen:
1. Vereinbarung des zu verwendenden TLS-Protokolls
Zunächst gleichen die beiden an der Verschlüsselung beteiligten Parteien, TLS-Client und TLS-Server, die verfügbaren TLS-Protokollversionen ab (also z.B. TLS 1.3, TLS 1.2 oder TLS 1.1). Diese hängen maßgeblich von der auf dem jeweiligen System installierten TLS-Software ab. Die aktuellste auf beiden Systemen verfügbare Protokollversion wird daraufhin verwendet oder die Verschlüsselung abgebrochen.
2. Abgleich der zu verwendenden kryptografischen Verfahren
Innerhalb der TLS-Verschlüsselung kommen eine Vielzahl von kryptografischen Basis-Methoden zum Einsatz, z.B. Signaturverfahren, Hashverfahren, Schlüsselableitungsverfahren sowie asymmetrische und symmetrische Verschlüsselungsverfahren. Für jede dieser Algorithmen-Klassen gibt es wiederum mehrere standardisierte Algorithmen. TLS-Client und -Server haben aber nicht zwangsläufig die gleichen Algorithmen in ihrer TLS-Software verfügbar. Diese müssen also abgeglichen und vereinbart werden, in welchem künftigen Protokollschritt welcher Algorithmus zum Einsatz kommt.
3. TLS-Zertifikatsprüfung
Innerhalb des Handshakes wird das sog. TLS-Zertifikat des Servers zum Client übertragen. Der Client kann (je nach Konfiguration) das Server-Zertifikat und die sog. Zertifikatskette (enthält auch die Zertifikate der beteiligten Zertifizierungsstellen) auf Fehlerfreiheit prüfen und daraufhin ggf. den Handshake abbrechen. In den verschiedenen Anwendungsfällen von TLS wird damit unterschiedlich strikt umgegangen. Optional kann auch der Server den Client um das Vorzeigen eines Zertifikats bitten. Der Client kann daraufhin, falls er ein Zertifikat besitzt, dieses vorzeigen. Er kann aber das Vorzeigen des Client-Zertifikates auch ablehnen.
4. Erzeugung eines sog. TLS Session-Schlüssels
Über Methoden der sog. asymmetrischen Kryptografie wird mittels der vereinbarten Algorithmen ein Session-Schlüssel errechnet. Dabei kommt ein mehrschrittiges Verfahren zum Einsatz, welches sicherstellt, dass auch bei potentiellem Mitlesen der TLS-Handshake-Daten durch Dritte (die z.B. den Netzwerkverkehr abhören) der finale Session-Schlüssel nicht bekannt wird und Versuche, den Handshake-Datenaustausch zu manipulieren, stets bemerkt werden.
Das Ergebnis des TLS-Handshakes ist also ein geheimer Session-Schlüssel, der nur dem TLS-Client und dem TLS-Server bekannt sein kann. Dieser wird in der Folge genutzt, um mittels hochperformanter symmetrischer Verschlüsselungsalgorithmen (z.B. AES-256) jegliche Nutzdatenkommunikation zu verschlüsseln und auf dem jeweils anderen System wieder zu entschlüsseln. Beim Abbau der Verbindung zwischen Client und Server wird dieser Session-Schlüssel üblicherweise verworfen.
In den Anwendungs-Protokollen (also HTTP, SMTP, IMAP, usw.) entsteht durch den vorgeschalteten TLS-Handshake zwangsläufig eine geringe Latenz aufgrund der zusätzlich auszutauschenden Daten. Entsprechend werden neue TLS-Versionen immer weiter auf ihre Performanz optimiert, um sicherzustellen, dass die User diese Verzögerung möglichst nicht bemerken.