Transport Layer Security
TLSは、TCP/IPネットワークでホスト名ベースのバーチャルホストを構成する際に問題となる。TCP/IPでは通信を開始する前にホスト名を解決し、実際にはIPアドレスとポート番号で接続先を識別している。このためTLSのネゴシエーションの時点では、バーチャルホストのうちどのホスト名を期待しているのか判断できず、ホスト名ごとに異なるサーバー証明書を使い分けることができない。
TLSの拡張機能を定義するRFC 6066では、ネゴシエーション時にホスト名を伝える手段としてServer Name Indication (SNI) を規定している。用例としては、HTTPの最新バージョンであるHTTP/2においてTLSを利用する際はSNIの利用が必須とされている。
一方、証明書を使い分けず、1つの証明書を複数のバーチャルホストで使い回す方式も広く利用されている。X.
1 2 後方互換性の確保のため、SSL 2.0に非対応あるいは既定で無効の場合にもSSL 2.0 client helloはサポートされる。
↑ サーバ側でのSSL 2.0 client helloの受け取りのみサポートされる
1 2 3 4 OS X v10.9以降でSSL 2.0非対応。OS X v10.11以降およびiOS 9以降でSSL 3.0非対応。OS X v10.9およびiOS 5以降以降でTLS 1.1、1.2に対応
↑ Opera 14以降におけるTLSへの対応は、対応するChromiumバックエンドを利用するChromeと同じとなる。Android版Opera 14はChromium 26(レイアウトエンジンはWebKit)、Opera 15以降はChromium 28以降(レイアウトエンジンはBlink)をベースとしている。
↑ TLS_FALLBACK_SCSVを実装。
↑ BEASTおよびPOODLEへの対策を実装済み
↑ TLS_FALLBACK_SCSVの実装に加え、"anti-POODLE record splitting"を実装。
↑ TLS_FALLBACK_SCSV、"anti-POODLE record splitting"の実装に加え、SSL 3.0を既定で無効化。
1 2 3 opera://flagsより設定可能 (最低バージョンの指定による範囲指定、最高バージョンは起動オプションより指定可能)
↑ SafariのTLSへの対応はOS同梱のライブラリによる。
↑ 2013年9月にBEASTへの対処が実装がされたが、既定では無効であった。2014年2月にアップデートされたOS X v10.8.5から既定で有効となった。
1 2 3 4 5 6 7 8 POODLEへの対応としてSSL 3.0においてCBCモードをすべて廃止したため、SSL 3.0では脆弱性が指摘されているRC4しか利用できず、RC4攻撃に対する脆弱性が増大している。
↑ モバイルSafariおよびTLS/SSLを必要とするサードパーティ製のすべてのソフトウェアはiOS同梱のUIWebViewライブラリを使用する。iOS 5以降でTLS 1.1および1.2が既定で有効。
2013年には、Lucky Thirteen攻撃(英語版)と呼ばれる新たなパディング攻撃が報告されている。2014年現在では、多くの実装においてLucky Thirteen攻撃に対して対応済みである。
1 2 3 #暗号スイートを参照のこと
1 2 3 #ウェブブラウザおよび#TLS/SSLの既知の脆弱性を参照のこと
ネットスケープコミュニケーションズ社はSSL 2.0の問題を修正するとともに機能追加を行い、1995年にSSL 3.0を発表した。また、Netscape Navigator 2.0においてSSL 3.0を実装した。SSL 3.0の仕様書については、2011年にIETFから歴史的文書という扱いでRFC 6101として公開された。
2014年10月にSSL 3.0の仕様上の脆弱性(POODLE攻撃)が発見されたため、SSL 3.0への対応を打ち切り、TLS 1.0以降のみ対応への移行が望まれている。2015年6月、RFC 7568 によってSSL 3.0の使用は禁止された。
SSLについては、使うべきではない。