緑と赤のボックス ここ をすべて見ていて、今日「TLSを実装する」としたらどうなるのだろうと思いますか。今日TLSを実装する場合、何を実装する必要がありますか?
TLS todayをサポートするために実装する必要があるものを説明しようとするのではなく、より簡単な質問はブラウザがTLS 1.3をサポートするかどうかです?そうでない場合、なぜそうではないのですか?これにより、上記の質問に加えて...
「古い」ウェブサイトを取得するために、古いTLSプロトコルをサポートする必要がありますか?それとも、以下を実装するだけの真新しいTLS 1.3実装があり、「古い」サイトやサービスとの通信という点で優れていると言えるでしょうか。基本的にTLS 1.3は次のもののみを実装しているようです:
これは7つだけですが、SSL 1.0からTLS 1.3までのTLS/SSLバージョンの全範囲で約20の鍵交換アルゴリズム、約20の暗号、および6つのデータ整合性アルゴリズムがあります。
基本的に、Webの閲覧をサポートするためにTLSが今日実装されている場合たとえば、新しいオープンソースプロジェクトでは、これらの7つのもの、またはすべて20 + 20 + 6のコードを記述するだけで済みます。 〜46アルゴリズム、基本的に過去のすべてのSSLおよびTLSバージョンをサポートしていますか?
21世紀のセキュアなWebブラウジングをサポートするために何を実装する必要があるかについては、TLS 1.3より前のすべてが安全でないことが判明している(そう思われる)ため、基本的に混乱しています。この質問に対する答えは、今日TLSを適切に実装するために何が必要かについてのプロジェクトスコープを思い付くのに役立ちます。
TLS 1.3だけを実装できない場合(および古いTLS/SSLバージョンをサポートする必要がある場合)、TLS 1.3しかなかった場合はどうなりますか? TLS 1.3と1.2だけはどうですか?基本的に、最新バージョンのみをサポートすることでどのようなハンディキャップがありますか。特定のウェブページを取得できないというだけのことですか、それとも何ですか?
ブラウザーがSSL 3.0以前のサポートをしばらく停止したようですが、よくわかりません。
あなたの質問は互換性に関するより一般的な質問だと思います。
これはいくつかの方法で確認できます。その1つは、TLS 1.3が最も安全な標準(@ apr202)であることです。これより少ないものを許可すると、本質的にセキュリティの脆弱性になります。したがって、古い仕様と互換性がないことが意図であり、機能です。
一方、互換性がないことは、独立して保守されているサービスの乱雑な世界で操作しなければならない多くのユーザーにとってはオフです。この世界では、おそらくssl 2.0しか話せない本番に重要なプログラムがあります。 (私は現在、どのバージョンのtlsも話せない社内アプリでこの問題に直面しています)。その場合、すべてのプロトコルをサポートすることは、おそらくip/cert検証などの他のいくつかのチェックとバランスによって、恩恵を受けるでしょう。
問題は、どれだけの下位互換性を提供する必要があるかです。 そして場合によります。
2020年4月の時点で、TLS 1.2および1.3を最低限提供し、TLS 1.2はデフォルトで無効になっています。
要求に基づいて、またはそれらを実装したいという私の希望に基づいて、私が提供する古い基準。
非常に古い標準のいくつかは根本的に破られています。これらを実装することはまだ支払うかもしれませんが、これはそれ自身の問題を引き起こします。それらを提供することで、プログラムがデフォルトで安全でないようにすることができます。これらをライブラリの別のレガシーバリアントに配置することは理にかなっています(まだ維持されています)。