回答:
SSLv2とSSLv3は完全に異なります(現在、両方とも安全ではないと見なされています)。SSLv3とTLSv1.0は非常に似ていますが、いくつかの違いがあります。
TLSv1.0をSSLv3.1と考えることができます(実際、これは交換されたレコード内で発生します)。これは、比較することだけで簡単ですTLSv1.0をしてTLSv1.1とTLSv1.2彼らはすべてのIETF内で編集し、多かれ少なかれ同じ構造に従ってきたので。SSLv3は別の機関(Netscape)で編集されているため、違いを見つけるのが少し難しくなります。
ここにいくつかの違いがありますが、それらをすべてリストできるとは思えません。
ClientHello
メッセージ(最初のメッセージは、ハンドシェイクを開始するために、クライアントによって送信された)バージョンは{3,0}
、のSSLv3ため{3,1}
TLSv1.0および{3,2}
TLSv1.1ため。ClientKeyExchange
異なります。Finished
、SSLv3でSSL / TLS メッセージを送信した直後に送信できます。TLSv1では、サーバーのFinished
メッセージを待つ必要があります。SSL_*
に名前が変更されていますTLS_*
)。さらに詳細が必要な場合は、Eric Rescorlaの本-SSL and TLS:Designing and Building Secure Systems、Addison-Wesley、2001 ISBN 0-201-61598-3を強くお勧めします。この本から、上記のポイントのいくつかについて学びました。著者は、SSL / TLSメッセージの一部を説明する際に、SSLv3とTLS(本の執筆時点でのみv1.0)の違いに言及することがありますが、理解するためにはこれらのメッセージに関する背景説明が必要です(この本からコピー/貼り付けするのは適切ではありません)。
ClientHello
」レコードを送信できますが、SSL3のみのクライアントは元の「ClientHello
」のみを送信します。
draft302.txt
「前方互換性のために...」を探し、TLS仕様のセクション7.4.1.2と比較してください)。これをサポートしていないスタックに対処するために、再ネゴシエーション拡張機能のSCSV擬似暗号スイートなどの回避策もあります。
私は他の答えをエコーしますが、おそらくわずかに異なる重点を置いています。
SSLバージョン2と呼ばれるNetscapeによって「所有」されたセキュアソケットプロトコルがありました。Netscapeによって「所有」された異なるレコード構造とセキュリティ改善を備えた新しいバージョンがリリースされ、SSLバージョン3と呼ばれました。 placesはバイナリバージョン番号フィールドです。SSLバージョン3の場合、このフィールドは0x03 0x00、つまりバージョン3.0に設定されます。その後、IETFは独自の標準を作成することを決定しました。「SSL」がNetscapeの商標であるかどうかなど、SSLに関する知的財産の不確実性があったためか、IETFがこのプロトコルの次のバージョンをリリースしたとき、独自の名前を付けました:Transport Layer Securityプロトコル、または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が相互運用できないほど重要です。
プロトコルの正確な違いを本当に知りたい場合は、標準を読んで比較する必要があると思います。
暗号化プロトコルSSLの名前はTLSになり、同じプロトコルの名前が2つになりました。現在のソフトウェアは、TLSバージョン1またはSSLバージョン3を自動的にネゴシエートします。一方、人間は、より明確なSSL用語を使用するか、公式のTLS指定を使用するかを決定する必要があります。
SSLはTLSの前身です。
TLSおよびSSLは、アプリケーション層でネットワーク接続のセグメントを暗号化して、トランスポート層でのエンドツーエンドの安全な転送を確保します。
違い: