Das Thema wurde durch eine Diskussion des vorherigen Beitrags angeregt , in der die Stimme eines fürsorglichen Webserver-Administrators erklang: TLS 1.2 und AEAD sind die Wahl einer gesunden Person, aber wer wird Benutzer von "veralteten" Browsern bereuen? Lassen Sie uns dies diskutieren - die angebliche Inkompatibilität zwischen "modernen" TLS- und "Legacy" -Browsern.
Die Hypothese lautet wie folgt: Wenn nur stabile Versionen des TLS-Transportschicht-Sicherheitsprotokolls (1.2 und 1.3) und der Cipher Suites (AEAD) auf dem Webserver verbleiben, können Benutzer "veralteter" Browser nicht auf die Site zugreifen.
Machen wir einen optionalen Ausflug in die Geschichte ... 2005 (dh vor 16 Jahren) kündigte die US National Security Agency ein Korpus von Standards, Richtlinien, Empfehlungen und anderen unterstützenden Dokumenten zur Verwendung kryptografischer Algorithmen an - NSA Suite B Cryptography.
2009 veröffentlichte die IETF RFC5430Suite B-Profil für Transport Layer Security, in dem festgelegt wurde, welche Protokolle und Cipher Suites für HTTPS-Verbindungen verwendet werden sollen, um die NSA-Anforderungen zu erfüllen. Um diese Anforderungen zu erfüllen, mussten der Webserver und der Webbrowser TLS Version 1.2 und die Cipher Suites TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 und TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 unterstützen.
Das heißt, seit mindestens 11 Jahren wissen Entwickler, welche Anforderungen ihre Produkte erfüllen müssen, um sich für eine amerikanische Regierungsverordnung qualifizieren zu können. Daher werden Sie wahrscheinlich die folgende Tatsache ohne Überraschung bemerken: Alle heute tatsächlich verwendeten Browser unterstützen die erwähnte Verschlüsselungssuite in der Version mit einem 128-Bit-Verschlüsselungsschlüssel und vielen (aber nicht allen) - und mit einem 256-Bit-Verschlüsselungsschlüssel.
Dies könnte das Ende des Artikels sein, in dem empfohlen wird, dass alle Webserveradministratoren nur TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 unterstützen und sich nicht mit Mythen über die Inkompatibilität von TLS 1.2 mit "veralteten" Browsern beschäftigen, wenn nicht aus Nuancen: in TLS-Versionen unter 1.3, Der Algorithmus für die digitale Signatur muss mit dem Algorithmus im TLS-Zertifikat übereinstimmen, und weniger als 6% der Webserver mit einem Zertifikat, das mit dem ECDSA-Algorithmus in der .RU-Domänenzone signiert wurde , werden für die RSA-Signatur verwendet.
Wer schuld ist, ist eine Frage einer separaten Studie, wir sind daran interessiert, was zu tun ist? Lassen Sie uns zunächst daran erinnern, dass nicht nur die von der NSA empfohlene Kombination ECDHE + ECDSA + AES, sondern auch andere heute zu den starken Verschlüsselungssätzen gehören:
Die ganze Menagerie
TLS_DHE_RSA_WITH_AES_128_CCM;
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_DHE_RSA_WITH_AES_256_CCM;
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384;
TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256;
TLS_ECDHE_ECDSA_WITH_AES_128_CCM;
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
TLS_ECDHE_ECDSA_WITH_AES_256_CCM;
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256;
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384;
TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256.
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_DHE_RSA_WITH_AES_256_CCM;
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384;
TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256;
TLS_ECDHE_ECDSA_WITH_AES_128_CCM;
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
TLS_ECDHE_ECDSA_WITH_AES_256_CCM;
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256;
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384;
TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256;
TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384;
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256.
Insgesamt 19 starke Chiffresuiten, aber nicht alle, sind für die Verwendung im realen Leben auf einem öffentlichen Webserver geeignet: Der CAMELLIA-Verschlüsselungsalgorithmus wird wie AES im CCM-Modus von kaum mehr als jedem anderen mit CHACHA20 und seinen Gläubigen unterstützt Begleiter POLY1305 sind nur relativ vertraute moderne Browser, und um ECDSA-basierte Cipher Suites zu verwenden, ist, wie bereits erwähnt, ein entsprechendes TLS-Zertifikat erforderlich. Somit haben wir nur noch 4 "zusätzliche" Verschlüsselungssuiten:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384;
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384.
Es ist verlockend anzunehmen, dass wenn der Browser die ECDHE + ECDSA-Kombination unterstützt, er definitiv mit ECDHE + RSA zurechtkommt, aber dies ist nicht immer der Fall - viele können nur DHE + RSA ausführen, um die Anforderungen von zu erfüllen Alle alten Browser auf einer Site mit einem RSA-Zertifikat benötigen zwei Cipher Suites:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256.
Dies gibt uns Kompatibilität mit mindestens den folgenden Betriebssystemen und Browsern:
Android 4.4.2 + Android Browser (Chrome);
Windows XP + Chrome 49 / Firefox 49 / Opera 12.18;
Windows 7 + Internet Explorer 11 / Chrome 31 / Firefox 31;
OS X + Firefox 29 / Chrome 37;
iOS 9 + Safari 9;
Java 8b.
Ich werde nicht über * nix-Systeme sprechen - es hängt von der Baugruppe ab, aber es ist offensichtlich, dass das Problem als solches nicht existiert. Das einzige Problem tritt bei Windows Phone 8.1 + IE 10 auf, das nur eine stabile Kombination unterstützt - ECDHE + ECDSA.
Aber was sollten Benutzer von Windows XP + IE 6 oder Android 2.3 tun? - Der fürsorgliche Administrator wird fragen. Fortsetzensitzen ohne Zugang zum modernen Internet, - ich werde antworten, - weil selbst die Unterstützung des Webserver-Protokolls SSL 2.0 ihnen nicht helfen wird. Tatsache ist, dass selbst wenn Sie unter Windows XP alle dafür veröffentlichten Updates (bis Mai 2019) rollen und den Standardbrowser auf Version 8 aktualisieren, dies nur TLS 1.2 unterstützt, nicht jedoch stabile Cipher Suites. Darüber hinaus wusste und würde Windows XP weder wissen, was Server Name Indication (SNI),
Sind Sie bereit für hartnäckige "eineinhalb Bagger", eine dedizierte IP für die Site zu behalten und das Layout nicht zu aktualisieren? Fügen Sie dann Unterstützung hinzu, z. B. TLS_RSA_WITH_AES_256_CBC_SHA256. Sie sollten jedoch davon ausgehen, dass ein moderner Windows XP-Benutzer seit langem einen alternativen Browser verwendet, der sogar TLS 1.3 unterstützt. Gleiches gilt für Android 2.3. Durch die Installation von Firefox 27, auf dem TLS 1.2- und AEAD-Verschlüsselungssuiten vollständig unterstützt werden, und ohne Installation können wir einen wesentlichen Teil moderner Websites auch über HTTP nicht nutzen.
All dies ist natürlich kein Aufruf, die Unterstützung für stärkere Verschlüsselungssuiten aufzugeben, die von modernen Browsern gefordert werden und die in erster Linie zur Verhandlung vorgeschlagen werden sollten.
Um nicht zweimal aufzustehen, betrachten Sie kurz die Situation mit elliptischen Kurven. NSA Suite B Cryptography erkennt nur zwei davon - NIST P-384 und NIST P-256, deren Unterstützung auf dem Webserver sowohl modernen als auch "älteren" Browsern den Zugriff auf die Site ermöglicht. Tatsächlich reicht es aus, nur NIST P-384 für "Oldies" und Curve25519 für moderne Browser zu unterstützen. Nun, außer vielleicht, um NIST P-521 für einige "fortgeschrittene Oldies" hinzuzufügen.
Zusammenfassend: Wenn wir möchten, dass die Site für "veraltete" Browser zugänglich bleibt, gleichzeitig aber nur stabile Versionen des Sicherheitsprotokolls der Transportschicht und der Cipher Suites unterstützt, gehen wir wie folgt vor.
Für eine Site mit einem TLS-Zertifikat, das mit dem ECDSA- Algorithmus signiert wurde Aktivieren Sie die Unterstützung für die Verschlüsselungssuite TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256. Aktivieren Sie für
eine Site mit einem TLS-Zertifikat, das mit dem RSA-Algorithmus signiert wurde , die Unterstützung für die Verschlüsselungssuiten TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 und TLS_DHE_RSA_WITH_AES_128_GCM_SHA256.
Für beide Sites aktivieren wir die Unterstützung für die elliptische Kurve NIST P-384 oder NIST P-256 und legen die Präferenzreihenfolge für Chiffrensätze und elliptische Kurven fest, nach der die oben genannten Sätze und Kurven Browsern zum Abgleichen nach mehr angeboten werden stabile beispielsweise nach TLS_ECDHE_RSA_WITH_AES_ 256 _GCM_SHA 384 bzw. Curve25519.