TLS実装の比較

Transport Layer Security (TLS)プロトコルは、ネットワーク間の通信を保護する機能を提供する。このTLS実装の比較では、最も知られるライブラリを比較する。
すべての比較カテゴリで、概要セクションにリストされている各実装の安定バージョンを使用する。この比較はTLSプロトコルに直接関連する機能に限定するものとする。
プロトコルのサポート.
TLSプロトコルにはいくつかのバージョンが存在する。SSL 2.0は重大な弱点を持ち廃止予定となっている。SSL 3.0（1996年）とTLS 1.0（1999年）は、2001年にSerge Vaudenayによって説明されたCBCパディングの2つの弱点を継承している。TLS 1.1（2006）は、CBCブロック暗号にランダムな初期化ベクトル（IV）を使用するよう切り替えることで問題の1つが解決されたのみで、このバージョンでは安全なpad-mac-encryptではなく問題のあるmac-pad-encryptの使用がRFC7366で追加されてしまった。TLS 1.1のランダムIVにほぼ相当するSSL 3.0とTLS 1.0の回避策は、2011年後半の多くの実装で広く採用されていた。セキュリティの観点からは、TLS 1.0、1.1、1.2のいずれも基本プロトコルで同等の強度を持ち、NIST SP800-57によると、少なくとも2030年までの128ビットセキュリティに適している。2014年には、SSL 3.0のPOODLEの脆弱性が発見される。これはCBCの既知の脆弱性を利用し、ブラウザ内で安全ではないTLSバージョンのフォールバック・ネゴシエーションを行うものである。
TLS 1.2（2008）は基本プロトコルの最新版であり、デジタル署名に使用されるハッシュを識別する手段を導入した。SSL 3.0の保守的な選択（rsa、sha1 + md5）よりも将来のデジタル署名（rsa、sha256 / sha384 / sha512）に対してより強力なハッシュ関数を使用できるようにする一方で、TLS 1.2プロトコルの変更は（rsa、sha1）、（rsa、md5）までをも提供し、デフォルトのデジタル署名を不注意かつ大幅に弱くした。
データグラムトランスポートレイヤセキュリティ（DTLS）1.0は、パケット損失とパケットの並べ替えを許容する必要があるパケット型トランスポートレイヤ向けにのTLS 1.1を変更したものである。TLS 1.2に基づく改訂版であるDTLS 1.2が2012年1月に公開された。
SSL 2.0とSSL 3.0には既知の脆弱性が存在する。予測可能なIV（簡単な回避策が存在する）を除いて、現在知られているすべての脆弱性はTLS 1.0 / 1.1 / 1.2のすべてのバージョンに影響がでる。
アメリカ国家安全保障局 (NSA) Suite B 暗号.
NSA Suite B暗号化（RFC 6460）に必要なコンポーネント:
CNSSP-15では、「機密(Secret)」レベルに分類される情報を保護するには256ビットの楕円曲線（FIPS
186-2で指定）、SHA-256、および128ビットのAES、「最高機密(Top Secret)」の情報を保護するには384ビットの楕円曲線 （FIPS 186-2で指定）、SHA-384、および256ビット鍵付きAESが必要としている。
鍵交換アルゴリズム（証明書のみ）.
このセクションでは、さまざまな実装で使用可能な証明書検証機能を示す。
サポートされている楕円曲線.
このセクションでは、各実装でサポートされている楕円曲線をリストする。
圧縮.
CRIME攻撃はTLS圧縮を利用するため、慎重な実装ではTLSレベルでの圧縮は使用していない。また、HTTP圧縮は無関係でこの攻撃の影響は受けないが、関連するBREACH攻撃によって悪用される点に注意が必要である。
拡張機能.
各実装がサポートする拡張機能をリストする。安全な再ネゴシエーション拡張(Secure Renegotiation
extension)はHTTPSクライアントセキュリティにとって重要な意味を持つ。クライアントがTLS再ネゴシエーション(TLS renegotiation)を実装しているかどうかにかかわらず、この拡張を実装していないTLSクライアントは攻撃に対して脆弱である。
アシスト暗号.
このセクションでは、暗号化を最適化するCPU命令セットの利点を生かした実装、ハードウェア暗号やデータ分離のためのシステム固有のデバイス利用について示す。
システム固有のバックエンド.
使用可能なオペレーティングシステム固有のバックエンド、または別の実装によって提供されるバックエンドを利用する実装の機能を示す。