TLS Vortrag Wiki: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 91: Zeile 91:
 
{{#drawio:Autenzitaetstest}}
 
{{#drawio:Autenzitaetstest}}
  
=Zertfikatscheck=
+
==Zertfikatscheck==
 
{{#drawio:Zertfikatscheck}}
 
{{#drawio:Zertfikatscheck}}
=TLS 1.3 Handshake=
 
==Client Hello==
 
{{#drawio:tls-1.3-client-hello}}
 
;Supported Versions
 
* gibt an, welche TLS-Versionen der Client unterstützt
 
* bei TLS 1.3 wird hier explizit TLS 1.3 angeboten
 
* keine klassische Versionsverhandlung mehr wie bei TLS 1.2 (legacy_version ist nur noch ein Platzhalter)
 
 
;Supported Groups
 
* Liste unterstützter (EC)DHE-Gruppen
 
* z. B. x25519, secp256r1
 
* Gruppen definieren alle kryptographischen Parameter vollständig
 
* keine Aushandlung einzelner Parameter wie p oder g
 
 
;Key Share
 
* enthält den ephemeren DH/ECDH-Public-Key des Clients
 
* Private Key verbleibt ausschließlich beim Client
 
* Grundlage für die spätere Berechnung des Shared Secret
 
* ermöglicht den 1-RTT-Handshake
 
 
;Client Random
 
* 32 Byte Zufallswert
 
* fließt in die Schlüsselableitung ein
 
* erhöht die Entropie des Handshakes
 
 
;(weitere Extensions, z. B. SNI, ALPN)
 
* SNI: gibt den gewünschten Ziel-Hostnamen an
 
* ALPN: listet die vom Client unterstützten Anwendungsprotokolle (z. B. HTTP/2, HTTP/1.1)
 
* Extensions sind funktional, nicht kryptographisch zwingend
 
* werden im ClientHello unverschlüsselt übertragen
 
 
==Server Hello==
 
;Selected Version
 
* Server bestätigt die zu verwendende TLS-Version
 
* in diesem Fall TLS 1.3
 
* keine weitere Versionsverhandlung mehr
 
 
;Key Share
 
* enthält den ephemeren DH/ECDH-Public-Key des Servers
 
* verwendet dieselbe Gruppe wie vom Client ausgewählt
 
* ermöglicht beiden Seiten die Berechnung des Shared Secret
 
* Private Key verbleibt ausschließlich beim Server
 
 
;Server Random
 
* 32 Byte Zufallswert des Servers
 
* fließt in die Schlüsselableitung ein
 
* ergänzt den Client Random zur Entropieerzeugung
 
 
 
==Handshake Secret==
 
;Shared Secret
 
* wird nach Empfang des ServerHello lokal berechnet
 
* basiert auf ephemerem (EC)DH
 
* beide Seiten nutzen:
 
** eigenen Private Key
 
** fremden Public Key
 
* Ergebnis ist auf beiden Seiten identisch
 
* wird niemals übertragen
 
 
;Handshake Secret
 
* wird aus dem Shared Secret per HKDF abgeleitet
 
** HKDF steht für HMAC-based Key Derivation Function
 
** HKDF ist ein standardisiertes Verfahren zur Schlüsselableitung
 
* stellt einen internen kryptographischen Zustand dar
 
* dient als Basis für die Handshake-Verschlüsselung
 
 
;Handshake Traffic Keys
 
* werden aus dem Handshake Secret abgeleitet
 
* werden niemals übertragen
 
* sind ab EncryptedExtensions aktiv
 
 
;Verschlüsselung aktiv ab jetzt
 
* alle folgenden Handshake-Nachrichten sind verschlüsselt
 
* geschützt mit den Handshake Traffic Keys
 
 
 
==Server Handshake Nachrichten (TLS 1.3)==
 
{{#drawio:tls-1.3-2}}
 
;EncryptedExtensions
 
* erste verschlüsselte TLS-Nachricht des Servers
 
* wird mit den Handshake Traffic Keys verschlüsselt
 
* enthält die vom Server akzeptierten Extensions
 
* z. B. ALPN und weitere verbindungsrelevante Parameter
 
** ALPN: welches Anwendungsprotokoll der Server ausgewählt hat (z. B. h2 oder http/1.1)
 
 
;Certificate
 
* Übertragung der Server-Zertifikatskette
 
* vollständig verschlüsselt
 
* Zertifikat enthält:
 
** den öffentlichen Schlüssel des Servers
 
** Identitätsinformationen
 
** die Signatur der ausstellenden CA
 
* Client nutzt das Zertifikat zur Authentizitätsprüfung
 
 
;CertificateVerify
 
* Server signiert den bisherigen Handshake-Transcript
 
* Signatur erfolgt mit dem privaten Schlüssel des Servers
 
* der zugehörige öffentliche Schlüssel befindet sich im Zertifikat
 
* beweist die Kontrolle über den Private Key
 
* schützt vor Man-in-the-Middle-Angriffen
 
 
;Finished
 
* verschlüsselte Prüfsumme über den gesamten bisherigen Handshake
 
* berechnet mit dem Handshake Traffic Key
 
* bestätigt die Integrität aller vorherigen Handshake-Nachrichten
 
* Abschluss der Server-Seite des TLS-1.3-Handshakes
 
 
==Client prüft Server==
 
;Zertifikatsprüfung
 
* Client prüft die Server-Zertifikatskette
 
* Signatur der Zertifikate wird mit dem Public Key der CA verifiziert
 
* Vertrauenskette endet bei einer bekannten Root-CA
 
* Gültigkeitszeitraum und Zertifikatsattribute werden geprüft
 
* Ergebnis: der öffentliche Schlüssel des Servers ist vertrauenswürdig
 
 
;CertificateVerify Prüfung
 
* Client verifiziert die CertificateVerify-Signatur
 
* verwendet den öffentlichen Schlüssel aus dem Server-Zertifikat
 
* überprüft die Signatur über den bisherigen Handshake-Transcript
 
* stellt sicher, dass der Server den zugehörigen Private Key besitzt
 
* Ergebnis: der Server kontrolliert den privaten Schlüssel zum Zertifikat
 
  
 +
=TLS 1.2 Handshake=
  
==Client Finished==
+
==RSA==
;Finished
+
{{#drawio:tls-1.2-rsa-1}}
* Client berechnet die Finished-Prüfsumme
+
;ClientHello / ServerHello
* basiert auf dem bisherigen Handshake-Transcript
+
* Client und Server handeln Cipher Suite aus
* wird mit dem Handshake Traffic Key verschlüsselt
+
* Beide tauschen Zufallswerte (Random-C, Random-S) aus
* bestätigt die Integrität des gesamten Handshakes
 
* signalisiert dem Server den erfolgreichen Abschluss
 
  
 +
;Certificate-S
 +
* Server schickt sein Zertifikat
 +
* Client prüft Zertifikat (Signatur, FQDN, notBefore/notAfter)
  
==Application Traffic Keys==
+
{{#drawio:tls-1.2-rsa-2}}
;Application Traffic Keys
+
;Pre-Master-Secret (PMS)
* werden nach erfolgreichem Client Finished aktiviert
+
* Client generiert PMS zufällig und verschlüsselt es mit PubK-S
* werden aus den Application Traffic Secrets abgeleitet
+
* Nur der Server kann es mit PrivK-S entschlüsseln → beweist Besitz des privaten Schlüssels
* entsprechen dem umgangssprachlichen Sitzungsschlüssel
+
* Session Key = f(Random-C, Random-S, PMS) — beide Seiten berechnen ihn unabhängig
* existieren ausschließlich lokal auf Client und Server
 
  
 +
;Nachteil
 +
* Kein Forward Secrecy — wer später PrivK-S erhält kann alle aufgezeichneten Sessions entschlüsseln
  
==TLS 1.3 Verbindung erfolgreich==
+
==Diffie-Hellman==
* 1-RTT-Handshake abgeschlossen
+
{{#drawio:tls-1.2-dh-1}}
* Server ist kryptographisch authentifiziert
+
;Certificate-S + DH-Parameter
* Client ist über den Handshake implizit bestätigt
+
* Server schickt Zertifikat und öffentliche DH-Parameter, signiert mit PrivK-S
* Application Traffic Keys sind aktiv
+
* Client prüft Signatur mit PubK-S → DH-Parameter kommen wirklich vom Server
* geschützte Anwendungsdaten können übertragen werden
 
  
 +
{{#drawio:tls-1.2-dh-2}}
 +
;Pre-Master-Secret (PMS)
 +
* Client schickt seinen öffentlichen DH-Parameter
 +
* Beide Seiten berechnen PMS unabhängig per DH — wird nie übertragen
 +
* Session Key = f(Random-C, Random-S, PMS)
  
{{#drawio:tls-1.3}}
+
;Vorteil gegenüber RSA
 +
* Forward Secrecy — ephemere DH-Parameter werden nach dem Handshake verworfen
 +
* Aufgezeichnete Sessions können später nicht entschlüsselt werden
  
 
=TLS 1.3 Handshake=
 
=TLS 1.3 Handshake=
 +
{{#drawio:tls-1.3-client-hello}}
 
==Client Hello==
 
==Client Hello==
{{#drawio:tls-1.3-client-hello}}
+
* TLS 1.3 wird angeboten, ephemerer Public Key wird mitgeschickt
;Supported Versions
+
* Private Key bleibt beim Client
* gibt an, welche TLS-Versionen der Client unterstützt
 
* bei TLS 1.3 wird hier explizit TLS 1.3 angeboten
 
* keine klassische Versionsverhandlung mehr wie bei TLS 1.2 (legacy_version ist nur noch ein Platzhalter)
 
 
 
;Supported Groups
 
* Liste unterstützter (EC)DHE-Gruppen
 
* z. B. x25519, secp256r1
 
* Gruppen definieren alle kryptographischen Parameter vollständig
 
* keine Aushandlung einzelner Parameter wie p oder g
 
 
 
;Key Share
 
* enthält den ephemeren DH/ECDH-Public-Key des Clients
 
* Private Key verbleibt ausschließlich beim Client
 
* Grundlage für die spätere Berechnung des Shared Secret
 
* ermöglicht den 1-RTT-Handshake
 
 
 
;Client Random
 
* 32 Byte Zufallswert
 
* fließt in die Schlüsselableitung ein
 
* erhöht die Entropie des Handshakes
 
 
 
;(weitere Extensions, z. B. SNI, ALPN)
 
* SNI: gibt den gewünschten Ziel-Hostnamen an
 
* ALPN: listet die vom Client unterstützten Anwendungsprotokolle (z. B. HTTP/2, HTTP/1.1)
 
* Extensions sind funktional, nicht kryptographisch zwingend
 
* werden im ClientHello unverschlüsselt übertragen
 
 
 
 
 
 
 
  
 
==Server Hello==
 
==Server Hello==
;Selected Version
+
* Server bestätigt TLS 1.3, schickt eigenen ephemeren Public Key
* Server bestätigt die zu verwendende TLS-Version
+
* Beide Seiten können jetzt das Shared Secret berechnen
* in diesem Fall TLS 1.3
 
* keine weitere Versionsverhandlung mehr
 
 
 
;Key Share
 
* enthält den ephemeren DH/ECDH-Public-Key des Servers
 
* verwendet dieselbe Gruppe wie vom Client ausgewählt
 
* ermöglicht beiden Seiten die Berechnung des Shared Secret
 
* Private Key verbleibt ausschließlich beim Server
 
 
 
;Server Random
 
* 32 Byte Zufallswert des Servers
 
* fließt in die Schlüsselableitung ein
 
* ergänzt den Client Random zur Entropieerzeugung
 
 
 
  
 
==Handshake Secret==
 
==Handshake Secret==
;Shared Secret
+
* Shared Secret wird lokal per (EC)DH berechnet — wird nie übertragen
* wird nach Empfang des ServerHello lokal berechnet
+
* Per HKDF werden daraus die Handshake Traffic Keys abgeleitet
* basiert auf ephemerem (EC)DH
+
* Ab EncryptedExtensions ist alles verschlüsselt
* beide Seiten nutzen:
 
** eigenen Private Key
 
** fremden Public Key
 
* Ergebnis ist auf beiden Seiten identisch
 
* wird niemals übertragen
 
 
 
;Handshake Secret
 
* wird aus dem Shared Secret per HKDF abgeleitet
 
** HKDF steht für HMAC-based Key Derivation Function
 
** HKDF ist ein standardisiertes Verfahren zur Schlüsselableitung
 
* stellt einen internen kryptographischen Zustand dar
 
* dient als Basis für die Handshake-Verschlüsselung
 
 
 
;Handshake Traffic Keys
 
* werden aus dem Handshake Secret abgeleitet
 
* werden niemals übertragen
 
* sind ab EncryptedExtensions aktiv
 
 
 
;Verschlüsselung aktiv ab jetzt
 
* alle folgenden Handshake-Nachrichten sind verschlüsselt
 
* geschützt mit den Handshake Traffic Keys
 
 
 
  
 
==Server Handshake Nachrichten (TLS 1.3)==
 
==Server Handshake Nachrichten (TLS 1.3)==
 +
{{#drawio:tls-1.3-2}}
 
;EncryptedExtensions
 
;EncryptedExtensions
* erste verschlüsselte TLS-Nachricht des Servers
+
* Erste verschlüsselte Nachricht des Servers
* wird mit den Handshake Traffic Keys verschlüsselt
+
* Enthält z. B. ALPN (ausgewähltes Anwendungsprotokoll)
* enthält die vom Server akzeptierten Extensions
 
* z. B. ALPN und weitere verbindungsrelevante Parameter
 
** ALPN: welches Anwendungsprotokoll der Server ausgewählt hat (z. B. h2 oder http/1.1)
 
  
 
;Certificate
 
;Certificate
* Übertragung der Server-Zertifikatskette
+
* Server schickt sein Zertifikat — vollständig verschlüsselt
* vollständig verschlüsselt
+
* Enthält den öffentlichen Schlüssel und die CA-Signatur
* Zertifikat enthält:
 
** den öffentlichen Schlüssel des Servers
 
** Identitätsinformationen
 
** die Signatur der ausstellenden CA
 
* Client nutzt das Zertifikat zur Authentizitätsprüfung
 
  
 
;CertificateVerify
 
;CertificateVerify
* Server signiert den bisherigen Handshake-Transcript
+
* Server signiert den bisherigen Handshake-Transcript mit PrivK-S
* Signatur erfolgt mit dem privaten Schlüssel des Servers
+
* Beweist dass er den zugehörigen Private Key besitzt
* der zugehörige öffentliche Schlüssel befindet sich im Zertifikat
 
* beweist die Kontrolle über den Private Key
 
* schützt vor Man-in-the-Middle-Angriffen
 
 
 
;Finished
 
* verschlüsselte Prüfsumme über den gesamten bisherigen Handshake
 
* berechnet mit dem Handshake Traffic Key
 
* bestätigt die Integrität aller vorherigen Handshake-Nachrichten
 
* Abschluss der Server-Seite des TLS-1.3-Handshakes
 
 
 
 
 
==Client prüft Server==
 
;Zertifikatsprüfung
 
* Client prüft die Server-Zertifikatskette
 
* Signatur der Zertifikate wird mit dem Public Key der CA verifiziert
 
* Vertrauenskette endet bei einer bekannten Root-CA
 
* Gültigkeitszeitraum und Zertifikatsattribute werden geprüft
 
* Ergebnis: der öffentliche Schlüssel des Servers ist vertrauenswürdig
 
 
 
;CertificateVerify Prüfung
 
* Client verifiziert die CertificateVerify-Signatur
 
* verwendet den öffentlichen Schlüssel aus dem Server-Zertifikat
 
* überprüft die Signatur über den bisherigen Handshake-Transcript
 
* stellt sicher, dass der Server den zugehörigen Private Key besitzt
 
* Ergebnis: der Server kontrolliert den privaten Schlüssel zum Zertifikat
 
  
 
==Client Finished==
 
 
;Finished
 
;Finished
* Client berechnet die Finished-Prüfsumme
+
* Hash über den gesamten Handshake-Transcript
* basiert auf dem bisherigen Handshake-Transcript
+
* Client prüft Zertifikat, Signatur und Hash
* wird mit dem Handshake Traffic Key verschlüsselt
+
* Client schickt eigenen Finished-Hash zurück
* bestätigt die Integrität des gesamten Handshakes
+
* Bestätigt dass beide Seiten denselben Handshake gesehen haben
* signalisiert dem Server den erfolgreichen Abschluss
 
 
 
  
 
==Application Traffic Keys==
 
==Application Traffic Keys==
;Application Traffic Keys
+
* Sitzungsschlüssel werden nach erfolgreichem Finished aktiviert
* werden nach erfolgreichem Client Finished aktiviert
+
* Verschlüsselte Kommunikation beginnt
* werden aus den Application Traffic Secrets abgeleitet
+
=TLS 1.3 – Neuerungen=
* entsprechen dem umgangssprachlichen Sitzungsschlüssel
+
* Kein RSA-Schlüsselaustausch mehr
* existieren ausschließlich lokal auf Client und Server
+
* Nur noch (EC)DHE → Forward Secrecy immer gegeben
 
+
* Reduzierter Handshake: nur '''1 Round Trip'''
 
+
* Veraltete Algorithmen (RC4, DES, SHA-1 etc.) entfernt
==TLS 1.3 Verbindung erfolgreich==
+
* Zertifikat und CertificateVerify werden verschlüsselt übertragen
* 1-RTT-Handshake abgeschlossen
 
* Server ist kryptographisch authentifiziert
 
* Client ist über den Handshake implizit bestätigt
 
* Application Traffic Keys sind aktiv
 
* geschützte Anwendungsdaten können übertragen werden
 
  
 +
=TLS 1.2 vs. TLS 1.3=
 +
{| class="wikitable"
 +
! Merkmal !! TLS 1.2 RSA !! TLS 1.2 DHE !! TLS 1.3
 +
|-
 +
| Round Trips || 2 || 2 || 1
 +
|-
 +
| Forward Secrecy || ✗ || ✓ || ✓
 +
|-
 +
| PMS-Übertragung || verschlüsselt || nie || nie
 +
|-
 +
| Authentifizierung || Zertifikat || Zert. + Signatur || Zert. + Signatur
 +
|-
 +
| Empfohlen || ✗ || eingeschränkt || ✓
 +
|}
  
{{#drawio:tls-1.3}}
+
=Zusammenfassung=
 +
* TLS nutzt PKI, Zertifikate und asymmetrische Authentifizierung
 +
* TLS 1.2 RSA: einfach zu verstehen, aber kein Forward Secrecy
 +
* TLS 1.2 DHE: Forward Secrecy durch Diffie-Hellman
 +
* TLS 1.3: moderner, schneller, sicherer – nur noch DHE

Aktuelle Version vom 3. Juni 2026, 19:03 Uhr

Einleitung

  • Dieser Vortrag vermittelt die technische Funktionsweise von TLS
  • Er erklärt die Rolle der PKI
  • Analysiert Unterschiede zwischen klassischen und modernen Handshakes.

Authentifizierung mit TLS

  • Public Key Infrastruktur
  • Zertifikatsbasierte Authentifizierung
  • Schlüsselbasierte Authentifizierung
  • Am Ende steht die verschlüsselte Übertragung

Public Key Infrastruktur

Wichtige Rolle der PKI
  • PKI ermöglicht sichere Verschlüsselung und digitale Signaturen für E-Mails, HTTPS, VPNs und mehr
Grundprinzip
  • PKI nutzt Schlüsselpaare zur sicheren Datenübertragung und Identitätsüberprüfung

Zertifikatsbasierte Authentifizierung

  • Nutzt Zertifikat, das von einer CA signiert ist
  • Client überprüft die Signatur der CA
  • Signatur authentifiziert das Zertifikat

Die CA

Erstellen einer CA

  • Nur im lokalen Umfeld nötig
  • Meist wird eine öffentliche CA verwendet
  • Öffentliche CAs sind im OS als vertrauenswürdig eingebaut
  • Kostenlose Certs z. B. bei Let’s Encrypt

CA: Der private Schlüssel

  • Der private Schlüssel der CA muss zwingend geheim gehalten werden.
  • Er wird nur zum signieren gebraucht

CA: Das Zertifikat

  • Das Zertifikat der CA ist bei offiziellen CA überall in den Betriebssystemen eingebaut
  • Überall bedeutet nicht nur PCs, Laptops, Server.
  • Sondern auch IOT Geräte alle Art.

CA: TLS Zertifizierungstelle

  • Die wichtigsten Komponenten der CA

Der Server

Server: TLS PrivKey Server

  • Auf dem Server wird ein privater Schlüssel erstellt.
  • Geheimhaltung ist wichtig.

Server: TLS Signing Request

  • Es wird ein Öffentlicher Schlüssel erstellt
  • Es wird diesem ein Distinguish Name zu geordnet.
  • Beide Komponenten ergeben den Certificate Signing Request

Server: TLS Signing Request wird zurück gesendet

  • Der Request wird zur Zertifizierungsstelle geschickt.
  • Geheimhaltung ist nicht notwendig.

CA: Die Signierung

CA: Signierung des Requests

  • Es wird ein Hash über den öffentlichen Schlüssel und den Distinguish Name des Servers, sowie dem Ablaufdatum gebildet.
  • Dieser wird mit dem geheimen Schlüssel der Zertifizierungsstelle verschlüsselt.
  • Diesen Vorgang nennt man Signierung.

CA: Bauen des Zertifikats

Das Zertifikat wird nun gebaut
  • Öffentlicher Schlüssel des Servers
  • Signature des Servers
  • Distinguish Name des Server
  • Distinguish Name der Zertifizierungsstelle
  • Ablaufdatum
  • Seriennummer

CA: Zertifikat wird zum Server geschickt

  • Der Server bekommt das Zertifikat zugestellt.

Server: PrivKey-S und Zertifikat-S wird dem Service zu geordnet

  • Das Zertifikat und der private Schlüssel werden nun einem oder mehreren Diensten zugeordnet.

Authenzitätstest

Client: Hat das Zertifikat der Zertifizierungsstelle eingebaut

  • Jedes Gerät im Internet das TLS kann hat das Zertifikat der Zertifizierungstelle eingebaut.

Client:Bekommt das Zertifikat des Servers

  • Beim TLS Handshake bekommt der Client das Zertifikat des Servers geschickt.

Client: Überprüft ob das Zertifikat authentisch ist

Zertfikatscheck

TLS 1.2 Handshake

RSA

ClientHello / ServerHello
  • Client und Server handeln Cipher Suite aus
  • Beide tauschen Zufallswerte (Random-C, Random-S) aus
Certificate-S
  • Server schickt sein Zertifikat
  • Client prüft Zertifikat (Signatur, FQDN, notBefore/notAfter)
Pre-Master-Secret (PMS)
  • Client generiert PMS zufällig und verschlüsselt es mit PubK-S
  • Nur der Server kann es mit PrivK-S entschlüsseln → beweist Besitz des privaten Schlüssels
  • Session Key = f(Random-C, Random-S, PMS) — beide Seiten berechnen ihn unabhängig
Nachteil
  • Kein Forward Secrecy — wer später PrivK-S erhält kann alle aufgezeichneten Sessions entschlüsseln

Diffie-Hellman

Certificate-S + DH-Parameter
  • Server schickt Zertifikat und öffentliche DH-Parameter, signiert mit PrivK-S
  • Client prüft Signatur mit PubK-S → DH-Parameter kommen wirklich vom Server
Pre-Master-Secret (PMS)
  • Client schickt seinen öffentlichen DH-Parameter
  • Beide Seiten berechnen PMS unabhängig per DH — wird nie übertragen
  • Session Key = f(Random-C, Random-S, PMS)
Vorteil gegenüber RSA
  • Forward Secrecy — ephemere DH-Parameter werden nach dem Handshake verworfen
  • Aufgezeichnete Sessions können später nicht entschlüsselt werden

TLS 1.3 Handshake

Client Hello

  • TLS 1.3 wird angeboten, ephemerer Public Key wird mitgeschickt
  • Private Key bleibt beim Client

Server Hello

  • Server bestätigt TLS 1.3, schickt eigenen ephemeren Public Key
  • Beide Seiten können jetzt das Shared Secret berechnen

Handshake Secret

  • Shared Secret wird lokal per (EC)DH berechnet — wird nie übertragen
  • Per HKDF werden daraus die Handshake Traffic Keys abgeleitet
  • Ab EncryptedExtensions ist alles verschlüsselt

Server Handshake Nachrichten (TLS 1.3)

EncryptedExtensions
  • Erste verschlüsselte Nachricht des Servers
  • Enthält z. B. ALPN (ausgewähltes Anwendungsprotokoll)
Certificate
  • Server schickt sein Zertifikat — vollständig verschlüsselt
  • Enthält den öffentlichen Schlüssel und die CA-Signatur
CertificateVerify
  • Server signiert den bisherigen Handshake-Transcript mit PrivK-S
  • Beweist dass er den zugehörigen Private Key besitzt
Finished
  • Hash über den gesamten Handshake-Transcript
  • Client prüft Zertifikat, Signatur und Hash
  • Client schickt eigenen Finished-Hash zurück
  • Bestätigt dass beide Seiten denselben Handshake gesehen haben

Application Traffic Keys

  • Sitzungsschlüssel werden nach erfolgreichem Finished aktiviert
  • Verschlüsselte Kommunikation beginnt

TLS 1.3 – Neuerungen

  • Kein RSA-Schlüsselaustausch mehr
  • Nur noch (EC)DHE → Forward Secrecy immer gegeben
  • Reduzierter Handshake: nur 1 Round Trip
  • Veraltete Algorithmen (RC4, DES, SHA-1 etc.) entfernt
  • Zertifikat und CertificateVerify werden verschlüsselt übertragen

TLS 1.2 vs. TLS 1.3

Merkmal TLS 1.2 RSA TLS 1.2 DHE TLS 1.3
Round Trips 2 2 1
Forward Secrecy
PMS-Übertragung verschlüsselt nie nie
Authentifizierung Zertifikat Zert. + Signatur Zert. + Signatur
Empfohlen eingeschränkt

Zusammenfassung

  • TLS nutzt PKI, Zertifikate und asymmetrische Authentifizierung
  • TLS 1.2 RSA: einfach zu verstehen, aber kein Forward Secrecy
  • TLS 1.2 DHE: Forward Secrecy durch Diffie-Hellman
  • TLS 1.3: moderner, schneller, sicherer – nur noch DHE