## 🔐 GRUNDLAGEN VON SSL / TLS
### Was ist SSL/TLS?
- SSL (Secure Socket Layer): ursprünglich von Netscape entwickelt.
- TLS (Transport Layer Security): Weiterentwicklung von SSL 3.0 durch IETF.
- Ziel: **Ende-zu-Ende sichere Kommunikation** über TCP/IP.
### Hauptfunktionen
- **Datenverschlüsselung**
- **Server-Authentifizierung**
- **Nachrichtenintegrität (MAC / HMAC)**
- **(Optional) Client-Authentifizierung**
---
## 🧱 PROTOKOLLARCHITEKTUR
### SSL-Protokoll besteht aus:
- **Handshake Protocol**: Aushandlung der Sicherheitsparameter
- **Change Cipher Spec**: Aktivierung neuer Sicherheitsparameter
- **Alert Protocol**: Fehler- und Warnmeldungen
- **Record Protocol**: Verschlüsselung und MAC auf Anwendungsebene
### Protokollstapel:
SSL liegt zwischen TCP/IP und der Anwendungsschicht (z. B. HTTP, FTP).
---
## 🔁 VERBINDUNGSAUFBAU (SSL Handshake)
### Ablauf
1. **Client → Server**: `Client_Hello`
    - Protokollversion, Zufallswert, Session-ID, unterstützte Cipher Suites & Kompression
        
2. **Server → Client**: `Server_Hello`
    - Auswahl aus Vorschlägen + Server-Zertifikat (X.509)
    - optional: `Certificate_Request` → Client-Zertifikat
    - `Server_Hello_Done`

3. **Client → Server**:
    - Optional: `Certificate`, `Certificate_Verify` (Authentifizierung)
    - `Client_Key_Exchange`: Pre-Master Secret (verschlüsselt mit Server-Public-Key)
    - `Change_Cipher_Spec`
    - `Finished`: verifizierbarer Hash
        
4. **Server → Client**:
    - `Change_Cipher_Spec`
    - `Finished`
        
### Wichtig:
- **Pre-Master Secret → Master Secret (384 Bit) → Key Block**
- **Schlüssel werden symmetrisch genutzt**
---
## 🗝️ SCHLÜSSELERZEUGUNG
Aus dem **Master Secret** werden erzeugt:
- MAC-Schlüssel (Client/Server)
- Verschlüsselungsschlüssel
- Initialisierungsvektoren (IVs)
**Aufteilung (Key Block)**:
- `Client_Write_MAC_Secret`
- `Server_Write_MAC_Secret`
- `Client_Write_Key`
- `Server_Write_Key`
- `Client/Server_Write_IV`
---
## 📄 ZUSAMMENHÄNGE: SESSION & VERBINDUNG
|Begriff|Beschreibung|
|---|---|
|**Session**|Kommunikationskanal, definiert durch Handshake|
|**Verbindung**|Instanz mit eigener Schlüsselverwendung|
- Mehrere Verbindungen können zu einer Session gehören.
- Session-ID dient zur Wiederaufnahme (Session Resumption).
---
## 🧾 SSL RECORD LAYER
### Verarbeitungsschritte
1. Fragmentierung (max. 16 KB)
2. **Optionale Kompression**
3. **MAC-Berechnung** (z. B. mit SHA/MD5)
4. **Verschlüsselung** mit vereinbarten Algorithmen
5. Versand
### Empfängerseite:
- Umgekehrte Schritte (Decryption → MAC-Prüfung → Dekompression)
---
## ⚙️ WICHTIGE PROTOKOLLDETAILS
- **Alert Protocol**: Meldet Fehler (z. B. Handshake Failure)
- **Cipher Suites** enthalten:
    - Verschlüsselungsalgorithmus (z. B. AES, RC4, 3DES)
    - MAC-Algorithmus (MD5, SHA-1)
    - Schlüsselaustausch (z. B. RSA, Diffie-Hellman)
- **Wiederverwendbare Sitzungen** verbessern Performance:
    - Session-ID beim `Client_Hello` senden
    - Bei Erfolg: `Server_Hello` mit derselben Session-ID
---
## 📦 PORTS FÜR SSL/TLS (laut IANA)
|Dienst|SSL-Port|
|---|---|
|HTTPS|443|
|SMTP|465|
|POP3|995|
|IMAP|993|
|NNTP|563|
|LDAP|636|
|FTP|990|
---
## ✅ ZUSAMMENFASSUNG FÜR DIE KLAUSUR
- TLS = Weiterentwicklung von SSL
- Ziel: Verschlüsselung, Authentifizierung, Integrität
- SSL-Handshake:
    - Aushandlung der Cipher Suites
    - Authentifizierung via Zertifikaten (X.509)
    - Session Keys für symmetrische Verschlüsselung
- SSL ist **applikationsunabhängig**
- **SSL Record Layer** = zentrale Schicht zur Absicherung der Nutzdaten