web-dev-qa-db-ja.com

SSLとTLSの正確なプロトコルレベルの違いは何ですか?

これは この概要 の質問が行われた後の技術的な詳細です。

SSLとTLSのプロトコルの違いは何ですか?
名前の変更を保証するのに十分な違いがありますか? (TLSの新しいバージョンでは「SSLv4」または「SSLv5」と呼びます)

40

SSLv2とSSLv3は完全に異なります(両方とも安全ではないと見なされています)。 SSLv3とTLSv1.0は非常に似ていますが、いくつかの違いがあります。

TLSv1.0をSSLv3.1と見なすことができます(実際、これは交換されたレコード内で発生します)。 TLSv1.TLSv1.1 および TLSv1.2 を比較するのは簡単です。これらはすべてIETF内で編集され、さらにフォローされているためです。以下の同じ構造。 SSLv3は別の機関(Netscape)によって編集されているため、違いを見つけるのが少し難しくなります。

ここにいくつかの違いがありますが、それらすべてをリストすることはできません。

  • ClientHelloメッセージ(ハンドシェイクを開始するためにクライアントが送信する最初のメッセージ)のバージョンは、SSLv3の場合は{3,0}、TLSv1.0の場合は{3,1}、および{3,2}はTLSv1.1。
  • ClientKeyExchangeは異なります。
  • MAC/HMACは異なります(TLSはHMACを使用するのに対し、SSLは以前のバージョンのHMACを使用します)。
  • キーの派生は異なります。
  • クライアントアプリケーションデータは、SSLv3でSSL/TLS Finishedメッセージを送信した直後に送信できます。 TLSv1では、サーバーのFinishedメッセージを待つ必要があります。
  • 暗号スイートのリストは異なります(それらの一部は、SSL_*からTLS_*に名前が変更され、同じID番号を維持しています)。
  • 新しい 再ネゴシエーション拡張 に関しても違いがあります。

私は強くお勧めします Eric Rescorlaの本-SSLおよびTLS:安全なシステムの設計と構築、Addison-Wesley、2001 ISBN 0-201- 61598- 、本当に詳細が必要な場合。この本から、上記のポイントのいくつかを学びました。著者は、SSL/TLSメッセージの一部を説明するときに、SSLv3とTLS(本が書かれた時点でのみv1.0)の違いに言及することがありますが、理解するためにはこれらのメッセージに関する背景の説明が必要です(この本からここにコピー/貼り付けることは適切ではありません)。

36
Bruno

私は他の答えをエコーし​​ますが、おそらく少し異なる強調をします。

SSLバージョン2と呼ばれる、Netscapeが「所有」するセキュアソケットプロトコルがありました。異なるレコード構造とセキュリティの改善を備えた新しいバージョンもリリースされ、SSLバージョン3と呼ばれました。これは、SSLバージョン3と呼ばれます。 Placesは、バイナリバージョン番号フィールドです。 SSLバージョン3の場合、このフィールドは0x03 0x00、つまりバージョン3.0に設定されます。その後、IETFは独自の標準を作成することを決定しました。 「SSL」がNetscape商標であるかどうかなど、SSLに関する知的財産の不確実性があったためか、IETFがこのプロトコルの次のバージョンをリリースしたときに、独自の名前を付けました:トランスポート層セキュリティプロトコル、またはTLSバージョン1.0。レコード形式と全体的な構造はSSL v3と同一で一貫しています。バイナリのバージョン番号は0x03 0x01に改訂されました。他の人が指摘したように、いくつかのマイナーな暗号の変更がありました。 TLSバージョン1.1および1.2が存在し、内部プロトコル番号は0x03 0x02および0x03 0x03です。

SSLv2を無視すると、基本的には名前の変更と、通常のプロトコルの微調整であり、人々がセキュリティとパフォーマンスについて賢くなったときに発生します。

基本的に、それはプロトコルの新しいバージョンの名前の変更にすぎません。その主な理由は、公式のIETF標準トラックプロトコルになった後、主にNetscapeによって設計された古い非公式の標準と区別するためだったと思います。

以前の質問への回答で述べたように、これはSSLv3とTLSv1.0に互換性があることを意味しません。 RFC 2246からの引用:

このプロトコルとSSL 3.0の違いは劇的ではありませんが、TLS 1.0とSSL 3.0が相互運用しないほど重要です。

プロトコルの正確な違いを本当に知りたいのであれば、標準を読んで自分で比較する必要があると思います。

NetscapeからのSSLv3プロトコルドラフトTLSv1.0 RFC 2246

3
Sven

暗号化プロトコルSSLはTLSという名前になり、同じプロトコルに2つの名前が付けられます。現在のソフトウェアは、TLSバージョン1またはSSLバージョン3を自動的にネゴシエートします。一方、人間は、より明確なSSL用語を使用するか、公式のTLS指定を使用するかを決定する必要があります。

SSLはTLSの前身です。

TLSおよびSSLは、アプリケーション層でネットワーク接続のセグメントを暗号化して、トランスポート層でのエンドツーエンドの安全な転送を保証します。

0
aleroot