11. Sicherheitsüberlegungen (Security Considerations)
Die Sicherheit des TLS-Protokolls basiert auf folgenden Annahmen:
11.1. Kryptografische Stärke (Cryptographic Strength)
Die Sicherheit von TLS hängt grundlegend von der Stärke der verwendeten kryptografischen Primitive ab. Implementierer sollten:
- Starke Verschlüsselungssuiten verwenden
- Algorithmen mit bekannten Schwächen vermeiden (wie DES, RC4, MD5)
- Kryptografische Bibliotheken regelmäßig aktualisieren, um bekannte Schwachstellen zu beheben
11.2. Zufallszahlengenerierung (Random Number Generation)
Die Sicherheit des TLS-Protokolls hängt stark von kryptografisch starker Zufallszahlengenerierung ab. Implementierungen MÜSSEN (MUST):
- Kryptografisch sichere Pseudozufallszahlengeneratoren (CSPRNG) verwenden
- Sicherstellen, dass der Zufallszahlengenerator über ausreichende Entropiequellen verfügt
- Den Zufallszahlengenerator regelmäßig neu initialisieren
11.3. Zertifikatsvalidierung (Certificate Validation)
Eine ordnungsgemäße Zertifikatsvalidierung ist entscheidend zur Verhinderung von Man-in-the-Middle-Angriffen:
- Die Integrität der Zertifikatskette überprüfen
- Den Widerrufsstatus des Zertifikats prüfen (CRL oder OCSP)
- Die Übereinstimmung des Hostnamens überprüfen
- Die Gültigkeitsdauer des Zertifikats prüfen
11.4. Versions-Rollback-Angriffe (Version Rollback Attacks)
Implementierungen MÜSSEN (MUST) Versions-Rollback-Angriffe verhindern. TLS verwendet Versionsnummern in ClientHello und ServerHello sowie verify_data in der Finished-Nachricht, um Versions-Rollback-Versuche zu erkennen.
11.5. Bekannte Angriffe (Known Attacks)
Implementierungen sollten sich der folgenden bekannten Angriffe bewusst sein:
- BEAST (Browser Exploit Against SSL/TLS): Angriff gegen TLS 1.0 CBC-Modus. TLS 1.2 mildert dies mit expliziten IVs ab.
- CRIME (Compression Ratio Info-leak Made Easy): Angriff, der TLS-Kompression ausnutzt. Es wird empfohlen, TLS-Kompression zu deaktivieren.
- Lucky 13: Timing-Angriff gegen CBC-Modus-Padding. Implementierungen sollten konstant-zeitliche Vergleiche verwenden.
- POODLE: Angriff gegen SSL 3.0. SSL 3.0 sollte deaktiviert werden.
- Bleichenbacher-Angriff: Angriff gegen RSA PKCS#1 v1.5 Padding. TLS 1.2 enthält Schutzmaßnahmen dagegen.
11.6. Neuverhandlung (Renegotiation)
Neuverhandlung kann Sicherheitsrisiken einführen. RFC 5246 definiert die sichere Neuverhandlungserweiterung, um diese Probleme zu beheben. Implementierungen sollten:
- RFC 5746 (TLS-Neuverhandlungsindikationserweiterung) implementieren
- Neuverhandlungsanfragen sorgfältig behandeln
- Erwägen, Neuverhandlung während sensibler Operationen abzulehnen
11.7. Denial of Service
TLS-Handshakes sind relativ teuer (insbesondere Public-Key-Operationen). Server sollten:
- Ratenbegrenzung implementieren
- Erwägen, Sitzungswiederaufnahme zu verwenden, um die Anzahl vollständiger Handshakes zu reduzieren
- Anomale Muster überwachen und erkennen
11.8. Implementierungssicherheit (Implementation Security)
Über die Sicherheitsüberlegungen auf Protokollebene hinaus sollten Implementierungen auch:
- Pufferüberläufe verhindern
- Sensible Daten (Schlüssel, Klartext) sicher löschen
- Konstant-zeitliche Vergleiche verwenden, um Timing-Angriffe zu verhindern
- Fehlerbedingungen ordnungsgemäß behandeln
Hinweis: Für eine vollständige Sicherheitsanalyse siehe Abschnitt 11 und Anhang F von RFC 5246.