Schwache SSL-Cipher
Die SSL-Verschlüsselung ist ein komplexer Standard, der über Jahre gewachsen ist. Neben aktuell starken Algorithmen sind auch schwache kryptografische Verfahren enthalten, die aus Gründen der Kompatibilität unterstützt werden:
- Das Protokoll SSLv3 ist "broken by design". Mozilla hat SSLv3 seit Firefox 34 standardmäßig abgeschaltet.
- Die RC4-Cipher sind schwach und genügen aktuellen Anforderungen nicht mehr. Laut Empfehlung der IETF RFC 7465 darf RC4 nicht mehr genutzt werden und ist in Firefox seit Version 44 deaktiviert.
- Für die 3DES-Verschlüsselung gibt es mit der Birthday Attack einen plausiblen Angriff, der allerdings im Moment noch große Datenmengen > 32GB erfordert. Diese Cipher sollten aber ebenfalls deaktiviert werden. Krypto-Experten empfehlen, 3DES wie RC4 zu behandeln und in den Standards die Nutzung zu verbieten. Derzeit wird 3DES in Firefox noch unterstützt.
- Beim Diffie-Hellman-Schlüsseltausch kann der Admin viele Fehler bei der Konfiguration des Webservers machen. Auf der Webseite Bad SSL kann man ausprobieren, dass Firefox diese Schwächen nicht erkennt und schwache DH-Parameter für den Schlüsseltausch aktzeptiert. Außerdem muss man davon ausgehen, dass die NSA die Common DH Primes lt. RFC 2409 bis 1024 Bit geknackt hat, siehe: How is NSA breaking so much crypto.
- Insecure Renegotiation wird seit 2009 als schwerwiegender Bug des SSL-Protokoll eingestuft. Tools zum Ausnutzen der Insecure Renegotiation gibt es auch als OpenSource (z.B. dsniff). Ein Angreifer kann Login Credentials stehlen ohne die SSL-Verschlüsselung knacken zu müssen.
- SHA sollte laut Empfehlung der IETF nicht mehr als Signaturalgorithmus für die Beglaubigung von Zertifikaten verwendet werden. Die CAs haben inzwischen fast alles umgestellt. Bei Webseiten sollte es keine Problem geben, wenn man diesen Digest Algorithmus abschaltet.
Firefox hatte es bereits im Januar 2016 versucht, SHA zu sperren, die Sperre aber wieder rückgängig gemacht, weil einige Appliances und Virenscanner mit SSL-Interception diesen schwachen Hash-Algorithmus noch verwenden.
- Eine SSL-verschlüsselte Webseite sollte nur SSL-verschlüsselte Inhalte darstellen. Unverschlüsselte Elemente sollten nicht geladen werden, um die Sicherheit nicht zu kompromittieren. Firefox blockiert standardmäßig nur unverschlüsselte aktive Inhalte, lässt Bilder aber zu.
- FIPS-kompatible Cipher sind per Design schwach ausgelegt. In aktuellen Browsern sind diese schwachenCipher in der Regel bereits standardmäßig deaktiviert und werden nicht mehr verwendet.
Tracking Risiko durch seltsame SSL/TLS Cipherauswahl
Wenn der Browser eine SSL-verschlüsselte Verbindung zu einem Webserver aufbauen will, dann sendet er Liste der unterstützten TLS-Features, Cipher und der nutzbaren elliptischen Kurven für EC-Crypto. Die Reihenfolge und der Inhalt der Listen ist unterschiedlich für verschiedene Browser und Browser Versionen.
- Die aktuelle Alpha-Version von Firefox sendet beispielsweise:
<e name='Firefox/53.0' protocol='771' extTypes='21 23
65281 10 11 16 5 18 40 43 13' suites='4865 4867 4866 49195 49199 52393
52392 49196 49200 49171 49172 51 53' curves='29 23 24 25 256 257'
points='AA==' compress='AA=='/>
- Google Chrome sendet:
<e name='Chrome/57.0.2951.0' protocol='771' greateExt='1'
extTypes='65281 0 23 35 13 5 18 16 30032 11 40 45 43 10 21'
greaseSuite='1' suites='4865 4866 4867 49195 49199 49196 49200 52393
52392 52244 52243 49171 49172 156 157 47 53 10' greaseCurves='1'
curves='29 23 24' points='AA==' compress='AA=='/>
Das sieht etwas kryptisch aus, man kann sich auf verschiedenen Webseite aber auch anzeigen lassen, was es bedeutet.
SSL-Client Info für Firefox 45:
Wenn man an den SSL-Ciphern rumspielt und schwache Cipher wie 3DES (Firefox 45) oder Cipher mit DH-Schlüsseltausch deaktiviert, kreiert man möglicherweise ein individuelles Erkennungsmerkmal anhand dessen man beim Aufruf einer verschlüsselten Webseite wiedererkennbar ist. Deshalb empfehlen wir keine Manipulationen an den verwendeten Ciphern. Besser ist es, einen aktuellen Firefox bzw. Firefox ESR zu verwenden und es bei den Einstellungen der Entwickler der NSS Crypto Lib zu belassen.
Empfohlene Einstellungen zur SSL/TLS Konfiguration
Zur Verbesserung der Sicherheit kann man unter
"about:config" folgende Variablen anpassen. Das Ergebnis kann man im
Browser Test von Qualsys SSL Labs überprüfen.
- RC4-Cipher deaktivieren:
security.tls.unrestricted_rc4_fallback | false |
- Zertifikate mit SHA1-Hashes abweisen:
security.pki.sha1_enforcement_level | 1 |
- Strenges Certifikate Pinning erwingen:
security.cert_pinning.enforcement_level | 2 |
- Insecure Renegotiation verbieten:
(Facebook, PayPal.com, Twitter u.a. funktionieren dann nicht mehr.)
security.ssl.require_safe_negotiation | true |
security.ssl.treat_unsafe_negotiation_as_broken | true |
- Mixed Content verbieten (keine unverschlüsselten Inhalte in HTTPS-Webseiten)
(Bildersuche von Google, Ixquick usw. funktioniert dann nicht mehr, nur die Bildersuche von Disconnect.me funktioniert mit diesen Einstellungen.)
security.mixed_content.block_display_content | true |
security.mixed_content.block_active_content | true |
Probleme mit sicheren SSL-Einstellungen
Einige Webseiten lassen sich mit diesen Einstellungen nicht via HTTPS aufrufen. Man erhält nur eine leere Seite mit einer Fehlermeldung:
- Fehlercode: ssl_error_no_cypher_overlap Wenn man diesen Fehler erhält, kann man als erstes kann man deaktivierte Cipher zulassen oder darauf verzichten, die Webseite zu nutzen.
- Fehlercode: ssl_error_unsafe_negotiation Wenn dieser Fehler auftritt, dann müsste man Insecure Renegotiation zulassen oder darauf verzichten, die Webseite zu nutzen.
Wenn man unsichere SSL-Einstellungen zulassen muss, dann sollte man sich darüber im klaren sein, dass die Verschlüsselung nicht mehr sicher ist (nach dem Stand der zivilen Forschung). Man sollte sich überlegen, welche privaten Daten man dieser schwachen Verschlüsselung anvertrauen will.