it-swarm.com.de

Was ist "TLS-Versionsintoleranz"?

Ich versuche, den Bericht des SSL Labs-Servertests vollständig zu verstehen.

Kann jemand den Begriff "TLS-Versionsintoleranz" erklären? Ich kann keine Dokumentation zu diesem Begriff finden, auch nicht in den Foren von SSL-Labors oder deren SSL Server Rating Guide .

Für der SSL-Bericht von mijn.ing.nl (niederländische Bankenseite) heißt es beispielsweise:

TLS version intolerance: TLS 1.3  TLS 1.98  TLS 2.98 

Intoleranz klingt schlecht, aber ist es in diesem Fall? Mir sind auch die TLS-Versionen 1.98 und 2.98 nicht bekannt.

27
Julian

In TLS kündigt der Client seine maximal unterstützte Version an. Anschließend antwortet der Server mit der Protokollversion, die tatsächlich für die Verbindung verwendet wird.

Wenn ein Server beispielsweise TLS 1.0 und 1.1 kennt und der Client "Ich unterstütze bis zu TLS 1.2" ankündigt, kann der Server ohne zu wissen, was TLS 1.2 sein kann immer noch antworten: "Gut, wir werden 1.1 verwenden".

Wenn ein Client sagt "Ich unterstütze bis zu TLS 1.38" (der im ClientHello als zwei Bytes mit dem Wert 0x03 0x27 codiert wird), hat ein Server, der bis zu TLS 1.2 unterstützt, theoretisch keine Ahnung davon Was sind TLS-Versionen 1.3, 1.4 ... bis 1.38 (und tatsächlich existieren solche Versionen noch nicht, das maximal definierte ist TLS 1.2 im Moment); Dieser Server kann jedoch weiterhin sagen: "1.38 ist höher/später als 1.2, daher sollte der Client über TLS 1.2 Bescheid wissen" und mit der Angabe fortfahren: "Wir werden 1.2 verwenden".

In der Praxis sind einige Server schlecht geschrieben, und wenn ein Client "TLS 1.3" sagt, wird die Verbindung getrennt. Dies ist ein Serverfehler. aber weit verbreitet. Dieser Fehler wird häufig mit dem Ausdruck "Versionsintoleranz" bezeichnet. Einige dieser fehlerhaften Server akzeptieren einige Arten unbekannter Versionen, aber nicht alle. Z.B. Einige Server tolerieren jede "1.x" -Version für jede x im Bereich von 0 bis 254, lehnen jedoch eine Version "2.y" ab.

Aufgrund der Versionsintoleranz müssen Clients (Webbrowser) bereits Kontingenzcode enthalten, der mehrmals versucht wird. Z.B. Es wird zuerst versucht, eine Verbindung mit "1.2" in ClientHello herzustellen. Wenn die Verbindung jedoch fehlschlägt, versucht der Client es erneut mit "1.0" als maximal unterstützte Version. Das ist lästig und klobig. Ein Server, der TLS Version 1.3 nicht toleriert, ist ein Server, der Probleme verursacht, wenn TLS 1.3 angegeben wird und Browser damit beginnen, es zu verwenden.

45
Thomas Pornin