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暗号化（RFC 6460）に必要なコンポーネント: 鍵サイズが128および256ビットのAdvanced Encryption Standard（AES）。トラフィック幅については、AESは帯域幅が狭い場合はカウンタモード（CTR）または高帯域幅の場合はGalois/Counter Mode（GCM）で使用する必要がある(ブロック暗号/暗号利用モード参照) — 対称鍵暗号 楕円曲線DSA - 電子署名 楕円曲線ディフィー・ヘルマン鍵共有 - 鍵合意 SHA-2（SHA-256およびSHA-384） - 暗号学的ハッシュ関数 CNSSP-15では、「機密(Secret)」レベルに分類される情報を保護するには256ビットの楕円曲線（FIPS 186-2で指定）、SHA-256、および128ビットのAES、「最高機密(Top Secret)」の情報を保護するには384ビットの楕円曲線 （FIPS 186-2で指定）、SHA-384、および256ビット鍵付きAESが必要としている。 このセクションでは、さまざまな実装で使用可能な証明書検証機能を示す。 Notes ^ a b このアルゴリズムは草案で提案されている段階で、RFCのTLS暗号スイートとしてはまだ定義されていない。 ^ a b 認証のみ、暗号化なし Notes ^ a b c d IDEAとDESはTLS 1.2から排除 ^ a b c d e f 特定の強力な暗号化アルゴリズムを含む暗号化ソフトウェアの輸出に関する米国の規制を遵守するために、40ビット強度の暗号スイートが短縮された鍵長で動作するように設計されている。これらの弱いスイートはTLS 1.1以降では禁止 ^ a b RC4攻撃によりSSL/TLSで使用されるRC4は安全でないとされる。RC4の使用はRFC 7465で禁止されている ^ a b RC4攻撃によりSSL/TLSで使用されるRC4は安全でないとされる。RC4の使用はRFC 7465で禁止されている このセクションでは、各実装でサポートされている楕円曲線をリストする。 CRIME攻撃はTLS圧縮を利用するため、慎重な実装ではTLSレベルでの圧縮は使用していない。また、HTTP圧縮は無関係でこの攻撃の影響は受けないが、関連するBREACH攻撃によって悪用される点に注意が必要である。 各実装がサポートする拡張機能をリストする。安全な再ネゴシエーション拡張(Secure Renegotiation extension)はHTTPSクライアントセキュリティにとって重要な意味を持つ。クライアントがTLS再ネゴシエーション(TLS renegotiation)を実装しているかどうかにかかわらず、この拡張を実装していないTLSクライアントは攻撃に対して脆弱である。 このセクションでは、暗号化を最適化するCPU命令セットの利点を生かした実装、ハードウェア暗号やデータ分離のためのシステム固有のデバイス利用について示す。 使用可能なオペレーティングシステム固有のバックエンド、または別の実装によって提供されるバックエンドを利用する実装の機能を示す。 SCTP — DTLS サポートあり DCCP — DTLS サポートあり SRTP — DTLS サポートあり(DTLS-SRTP)、SRTCP ^ “GnuTLS help mailing list” (2024年3月20日). 2024年6月17日閲覧。 ^ “OpenSSL: Newslog”. 2024年10月10日閲覧。 ^ “wolfSSL ChangeLog”. 2022年9月5日閲覧。 ^ a b “draft-hickman-netscape-ssl-00”. tools.ietf.org. 2015年1月25日閲覧。 ^ a b RFC 6101 ^ a b RFC 2246 ^ a b RFC 4346 ^ a b c d e f g h i j k l RFC 5246 ^ a b draft-ietf-tls-tls13-11 - The Transport Layer Security (TLS) Protocol Version 1.3 ^ a b “tlswg/tls13-spec branches”. tlswg.github.io. 2018年1月20日閲覧。 ^ a b RFC 4347 ^ a b RFC 6347 ^ a b c d e f “[gnutls-devel GnuTLS 3.4.0 released]” (2015年4月8日). 2015年4月16日閲覧。 ^ “[gnutls-help gnutls 3.6.4]” (2018年9月24日). 2020年3月12日閲覧。 ^ a b c d e f g h i j k l Inc., OpenSSL Foundation,. “/news/openssl-1.1.0-notes.html”. www.openssl.org. 2018年1月20日閲覧。 ^ a b “Major changes between OpenSSL 1.0.0h and OpenSSL 1.0.1 [14 Mar 2012]” (2012年3月14日). December 5, 2014時点のオリジナルよりアーカイブ。2015年1月20日閲覧。 ^ a b c d e f “Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.2 [22 Jan 2015]”. September 4, 2014時点のオリジナルよりアーカイブ。2015年1月22日閲覧。 ^ “[wolfssl wolfSSL 3.6.6 Released]” (2015年8月20日). 2015年8月24日閲覧。 ^ “[wolfssl wolfSSL TLS 1.3 support updated to draft 23]” (2018年3月12日). 2018年3月12日閲覧。 ^ “Search - Cryptographic Module Validation Program - CSRC”. csrc.nist.gov. 2018年1月20日閲覧。 ^ "While, as a free software project, we are not actively pursuing this kind of certification, GnuTLS has been FIPS-140-2 certified in several systems by third parties." GnuTLS 3.5.6 B.5 Certification ^ “OpenSSL and FIPS 140-2”. 2014年11月15日閲覧。 ^ “wolfCrypt FIPS 140-2 Information - wolfSSL Embedded SSL/TLS Library”. 2015年1月24日閲覧。 ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl RFC 4492 ^ a b c d e f draft-chudov-cryptopro-cptls-04 - GOST 28147-89 Cipher Suites for Transport Layer Security (TLS) ^ a b c d openssl/engines/ccgost/README.gost[リンク切れ] ^ a b c d e f RFC 5054 ^ a b c d e f RFC 4279 ^ a b RFC 5489 ^ a b RFC 2712 ^ “Changes between 0.9.6h and 0.9.7 [31 Dec 2002]”. 2016年1月29日閲覧。 ^ a b “Changes between 0.9.8n and 1.0.0 [29 Mar 2010]”. 2016年1月29日閲覧。 ^ “wolfSSL (Formerly CyaSSL) Release 3.9.0 (03/18/2016)” (2016年3月18日). 2016年4月5日閲覧。 ^ a b RFC 5280 ^ a b c RFC 3280 ^ a b RFC 2560 ^ a b RFC 6698, RFC 7218 ^ a b RFC 5288, RFC 5289 ^ a b RFC 6655, RFC 7251 ^ a b RFC 6367 ^ a b RFC 5932, RFC 6367 ^ a b c d RFC 6209 ^ a b RFC 4162 ^ a b “Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN”. sweet32.info. 2016年8月24日閲覧。 ^ a b RFC 7905 ^ “gnutls 3.6.0” (2017年9月21日). 2018年1月7日閲覧。 ^ “gnutls 3.4.12” (2016年5月20日). 2016年5月29日閲覧。 ^ “openssl/CHANGES at OpenSSL_1_0_1-stable · openssl/openssl”. 2015年1月20日閲覧。 ^ RFC 5469 ^ a b https://sweet32.info ^ a b “wolfSSL (Formerly CyaSSL) Release 3.7.0 (10/26/2015)” (2015年10月26日). 2015年11月19日閲覧。 ^ a b c d Negotiation of arbitrary curves has been shown to be insecure for certain curve sizes Mavrogiannopoulos, Nikos and Vercautern, Frederik and Velichkov, Vesselin and Preneel, Bart (2012). A cross-protocol attack on the TLS protocol. Proceedings of the 2012 ACM conference on Computer and communications security. pp. 62–72. ISBN 978-1-4503-1651-4. https://www.cosic.esat.kuleuven.be/publications/article-2216.pdf  ^ a b c RFC 7027 ^ “Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier”. tools.ietf.org. 2016年12月9日閲覧。 ^ “Curve25519 and Curve448 for Transport Layer Security (TLS)”. tools.ietf.org. 2015年7月15日閲覧。 ^ a b c d e f g h i j “Additional Elliptic Curves for Transport Layer Security (TLS) Key Agreement”. tools.ietf.org. 2015年1月23日閲覧。 ^ “"An overview of the new features in GnuTLS 3.5.0"” (2016年5月2日). 2016年12月9日閲覧。 ^ “OpenSSL 1.1.0x Release Notes” (25 August 2016). 18 May 2018閲覧。 ^ “OpenSSL  GitHub Issue #487 Tracker” (2 December 2015). 18 May 2018閲覧。 ^ “OpenSSL 1.1.1x Release Notes” (1 May 2018). 18 May 2018閲覧。 ^ “OpenSSL  GitHub Issue #5049 Tracker” (9 January 2018). 18 May 2018閲覧。 ^ “wolfSSL (Formerly CyaSSL) Release 3.4.6 (03/30/2015)” (2015年3月30日). 2015年11月19日閲覧。 ^ RFC 3749 ^ RFC 5746 ^ a b c d RFC 6066 ^ RFC 7301 ^ RFC 6091 ^ RFC 4680 ^ RFC 5077 ^ RFC 5705 ^ RFC 7366 ^ RFC 7507 ^ RFC 7627 ^ RFC 7685 ^ a b RFC 7250 ^ “gnutls 3.2.0”. 2015年1月26日閲覧。 ^ https://lists.gnupg.org/pipermail/gnutls-devel/2017-February/008309.html ^ “gnutls 3.4.4”. 2015年8月25日閲覧。 ^ “%DUMBFW priority keyword”. 2017年4月30日閲覧。 ^ http://www.openssl.org/news/secadv_20141015.txt ^ “OpenSSL 1.1.0 Release Notes”. 2017年11月29日閲覧。 ^ “Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014]” (2014年4月7日). 2015年1月20日時点のオリジナルよりアーカイブ。2015年2月10日閲覧。 ^ https://lists.gnupg.org/pipermail/gnutls-devel/2016-October/008194.html ^ https://habrahabr.ru/post/134725/, http://forum.rutoken.ru/topic/1639/, https://dev.rutoken.ru/pages/viewpage.action?pageId=18055184 （ロシア語） ^ “git.openssl.org Git - openssl.git/commitdiff”. git.openssl.org. 2015年1月24日閲覧。 ^ “wolfSSL Asynchronous Intel QuickAssist Support - wolfSSL” (18 January 2017). 2018年1月20日閲覧。 ^ a b RFC 7512 ^ “libp11: PKCS#11 wrapper library” (19 January 2018). 2018年1月20日閲覧。