TLS実装の比較
この記事には独自研究が含まれているおそれがあります。 |
Transport Layer Security (TLS) プロトコルは、ネットワーク間の通信を保護する機能を提供する。このTLS実装の比較(ティーエルエスじっそうのひかく)では、最も知られるライブラリを比較する。
すべての比較カテゴリで、概要セクションにリストされている各実装の安定バージョンを使用する。この比較はTLSプロトコルに直接関連する機能に限定するものとする。
概要
[編集]実装 | 開発元 | オープンソース | ソフトウェアライセンス | 著作権所有者 | 言語 | 最新の安定バージョン、リリース日 | 出所 |
---|---|---|---|---|---|---|---|
GnuTLS | GnuTLS project | Yes | GNU LGPLv2.1+ | フリーソフトウェア財団 | C | 3.8.4 - 2024年3月20日[1] [±] | EU (Greece and Sweden) |
OpenSSL | OpenSSL project | Yes | OpenSSL-SSLeay デュアルライセンス | Eric Young、Tim Hudson、Sun、OpenSSL projectなど | C, アセンブリ言語 | 3.4.0 - 2024年10月22日[2] [±] | Australia/EU |
wolfSSL | wolfSSL | Yes | GNU GPLv2+ 商用ライセンス | wolfSSL Inc. | C | 5.5.0 - 2022年8月30日[3] [±] | US |
実装 | 開発元 | オープンソース | ソフトウェアライセンス | 著作権所有者 | 言語 | 最新の安定バージョン、リリース日 | 出所 |
プロトコルのサポート
[編集]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のすべてのバージョンに影響がでる。
実装 | SSL 2.0 (安全でない)[4] | SSL 3.0 (安全でない)[5] | TLS 1.0[6] | TLS 1.1[7] | TLS 1.2[8] | TLS 1.3 [9][10] |
DTLS 1.0[11] | DTLS 1.2[12] |
---|---|---|---|---|---|---|---|---|
GnuTLS | No | デフォルトでは無効[13] | Yes | Yes | Yes | Yes[14] | Yes | Yes |
OpenSSL | No[15] | デフォルトでは有効 | Yes | Yes[16] | Yes[16] | Yes | Yes | Yes[17] |
wolfSSL | No | デフォルトでは無効[18] | Yes | Yes | Yes | Yes[19] | Yes | Yes |
実装 | SSL 2.0 (安全でない)[4] | SSL 3.0 (安全でない)[5] | TLS 1.0[6] | TLS 1.1[7] | TLS 1.2[8] | TLS 1.3 [9][10] |
DTLS 1.0[11] | DTLS 1.2[12] |
アメリカ国家安全保障局 (NSA) Suite B 暗号
[編集]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が必要としている。
実装 | TLS 1.2 Suite B |
---|---|
GnuTLS | Yes |
OpenSSL | Yes[17] |
wolfSSL | Yes |
実装 | TLS 1.2 Suite B |
認定
[編集]実装 | FIPS 140-1, FIPS 140-2[20] | 組み込みFIPSソリューション |
---|---|---|
GnuTLS[21] | Red Hat Enterprise Linux GnuTLS Cryptographic Module (#2780) | |
OpenSSL[22] | OpenSSL FIPS Object Module: 1.0 (#624), 1.1.1 (#733), 1.1.2 (#918), 1.2, 1.2.1, 1.2.2, 1.2.3 or 1.2.4 (#1051) 2.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7 or 2.0.8 (#1747) |
|
wolfSSL[23] | wolfCrypt FIPS Module: 4.0 (#3389) See details on NIST certificate for validated Operating Environments wolfCrypt FIPS Module: 3.6.0 (#2425) See details on NIST certificate for validated Operating Environments |
Yes |
実装 | FIPS 140-1, FIPS 140-2 | 組み込みFIPSソリューション |
鍵交換アルゴリズム(証明書のみ)
[編集]このセクションでは、さまざまな実装で使用可能な証明書検証機能を示す。
実装 | RSA[8] | RSA-EXPORT (安全でない)[8] | ディフィー・ヘルマン鍵共有-RSA(Forward secrecy)[8] | ディフィー・ヘルマン鍵共有-DSS(Forward secrecy)[8] | ECDH-ECDSA[24] | ECDHE-ECDSA (forward secrecy)[24] | ECDH-RSA[24] | ECDHE-RSA (forward secrecy)[24] | GOST規格 R 34.10-94, 34.10-2001[25] |
---|---|---|---|---|---|---|---|---|---|
GnuTLS | Yes | No | Yes | デフォルトでは無効[13] | No | Yes | No | Yes | No |
OpenSSL | Yes | No[15] | Yes | デフォルトでは無効[15] | Yes | Yes | Yes | Yes | Yes[26] |
wolfSSL | Yes | No | Yes | No | Yes | Yes | Yes | Yes | No |
実装 | RSA[8] | RSA-EXPORT (安全でない)[8] | ディフィー・ヘルマン鍵共有-RSA(Forward secrecy)[8] | ディフィー・ヘルマン鍵共有-DSS(Forward secrecy)[8] | ECDH-ECDSA[24] | ECDHE-ECDSA (forward secrecy)[24] | ECDH-RSA[24] | ECDHE-RSA (forward secrecy)[24] | GOST規格 R 34.10-94, 34.10-2001[25] |
鍵交換アルゴリズム(代替鍵交換)
[編集]実装 | SRP[27] | SRP-DSS[27] | SRP-RSA[27] | PSK-RSA[28] | PSK[28] | DHE-PSK (forward secrecy)[28] | ECDHE-PSK (forward secrecy)[29] | KRB5[30] | DH-ANON[8] (安全でない) | ECDH-ANON[24] (安全でない) |
---|---|---|---|---|---|---|---|---|---|---|
GnuTLS | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | デフォルトでは無効 | デフォルトでは無効 |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[31] | デフォルトでは無効[32] | デフォルトでは無効[32] |
wolfSSL | No | No | No | No | Yes | No | Yes[33] | No | No | No |
実装 | SRP[27] | SRP-DSS[27] | SRP-RSA[27] | PSK-RSA[28] | PSK[28] | DHE-PSK (forward secrecy)[28] | ECDHE-PSK (forward secrecy)[29] | KRB5[30] | DH-ANON[8] (安全でない) | ECDH-ANON[24] (安全でない) |
証明書の検証方法
[編集]実装 | アプリケーション定義 | PKIXパス検証[34] | CRL[35] | OCSP[36] | DANE (DNSSEC)[37] | Trust on First Use (TOFU) |
---|---|---|---|---|---|---|
GnuTLS | Yes | Yes | Yes | Yes | Yes | Yes |
OpenSSL | Yes | Yes | Yes | Yes | Yes | No |
wolfSSL | Yes | Yes | Yes | Yes | No | No |
実装 | PKIXパス検証[34] | CRL[35] | CRL[35] | OCSP[36] | DANE (DNSSEC)[37] | Trust on First Use (TOFU) |
暗号化アルゴリズム
[編集]実装 | ブロック暗号/暗号利用モード | ストリーム暗号 | なし | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
AES GCM [38] |
AES CCM [39] |
AES CBC | Camellia GCM [40] |
Camellia CBC [41] |
ARIA GCM [42] |
ARIA CBC [42] |
SEED CBC [43] |
3DES EDE CBC (安全でない)[44] |
GOST 28147-89 CNT (proposed) [25][n 1] |
ChaCha20-Poly1305 [45] |
Null (安全でない) [n 2] | |
GnuTLS | Yes | Yes[13] | Yes | Yes | Yes | No | No | No | デフォルトでは無効[46] | No | Yes[47] | デフォルトでは無効 |
OpenSSL | Yes[48] | デフォルトでは無効[15] | Yes | No | デフォルトでは無効[15] | No | No | デフォルトでは無効[15] | デフォルトでは無効[15] | Yes[26] | Yes[15] | デフォルトでは無効 |
wolfSSL | Yes | Yes | Yes | No | Yes | No | No | No | Yes | No | Yes | デフォルトでは無効 |
実装 | ブロック暗号/暗号利用モード | ストリーム暗号 | なし | |||||||||
AES GCM [38] |
AES CCM [39] |
AES CBC | Camellia GCM [40] |
Camellia CBC [41] |
ARIA GCM [42] |
ARIA CBC [42] |
SEED CBC [43] |
3DES EDE CBC (安全でない)[44] |
GOST 28147-89 CNT (proposed) [25][n 1] |
ChaCha20-Poly1305 [45] |
Null (安全でない) [n 2] |
- Notes
廃止されたアルゴリズム
[編集]実装 | ブロック暗号/暗号利用モード | ストリーム暗号 | ||||
---|---|---|---|---|---|---|
IDEA CBC [n 1](安全でない)[50] |
DES CBC (安全でない) [n 1] |
DES-40 CBC (EXPORT、安全でない) [n 2] |
RC2-40 CBC (EXPORT、安全でない) [n 2] |
RC4-128 (安全でない) [n 3] |
RC4-40 (EXPORT、安全でない) [n 4][n 2] | |
GnuTLS | No | No | No | No | デフォルトでは無効[13] | No |
OpenSSL | デフォルトでは無効[15] | デフォルトでは無効 | No[15] | No[15] | デフォルトでは無効 | No[15] |
wolfSSL | デフォルトでは無効[51] | No | No | No | デフォルトでは無効 | No |
実装 | ブロック暗号/暗号利用モード | ストリーム暗号 | ||||
IDEA CBC [n 1](安全でない)[50] |
DES CBC (安全でない) [n 1] |
DES-40 CBC (EXPORT、安全でない) [n 2] |
RC2-40 CBC (EXPORT、安全でない) [n 2] |
RC4-128 (安全でない) [n 3] |
RC4-40 (EXPORT、安全でない) [n 4][n 2] |
- Notes
サポートされている楕円曲線
[編集]このセクションでは、各実装でサポートされている楕円曲線をリストする。
実装 | sect163k1 NIST K-163 (1)[24] |
sect163r1 (2)[24] |
sect163r2 NIST B-163 (3)[24] |
sect193r1 (4)[24] |
sect193r2 (5)[24] |
sect233k1 NIST K-233 (6)[24] |
sect233r1 NIST B-233 (7)[24] |
sect239k1 (8)[24] |
sect283k1 NIST K-283 (9)[24] |
sect283r1 NIST B-283 (10)[24] |
sect409k1 NIST K-409 (11)[24] |
sect409r1 NIST B-409 (12)[24] |
sect571k1 NIST K-571 (13)[24] |
sect571r1 NIST B-571 (14)[24] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GnuTLS | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
wolfSSL | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
実装 | sect163k1 NIST K-163 (1)[24] |
sect163r1 (2)[24] |
sect163r2 NIST B-163 (3)[24] |
sect193r1 (4)[24] |
sect193r2 (5)[24] |
sect233k1 NIST K-233 (6)[24] |
sect233r1 NIST B-233 (7)[24] |
sect239k1 (8)[24] |
sect283k1 NIST K-283 (9)[24] |
sect283r1 NIST B-283 (10)[24] |
sect409k1 NIST K-409 (11)[24] |
sect409r1 NIST B-409 (12)[24] |
sect571k1 NIST K-571 (13)[24] |
sect571r1 NIST B-571 (14)[24] |
実装 | secp160k1 (15)[24] |
secp160r1 (16)[24] |
secp160r2 (17)[24] |
secp192k1 (18)[24] |
secp192r1 prime192v1 NIST P-192 (19)[24] |
secp224k1 (20)[24] |
secp224r1 NIST P-244 (21)[24] |
secp256k1 (22)[24] |
secp256r1 prime256v1 NIST P-256 (23)[24] |
secp384r1 NIST P-384 (24)[24] |
secp521r1 NIST P-521 (25)[24] |
arbitrary prime curves (0xFF01)[24][52] |
arbitrary char2 curves (0xFF02)[24][52] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GnuTLS | No | No | No | No | Yes | No | Yes | No | Yes | Yes | Yes | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
wolfSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
実装 | secp160k1 (15)[24] |
secp160r1 (16)[24] |
secp160r2 (17)[24] |
secp192k1 (18)[24] |
secp192r1 prime192v1 NIST P-192 (19)[24] |
secp224k1 (20)[24] |
secp224r1 NIST P-244 (21)[24] |
secp256k1 (22)[24] |
secp256r1 prime256v1 NIST P-256 (23)[24] |
secp384r1 NIST P-384 (24)[24] |
secp521r1 NIST P-521 (25)[24] |
arbitrary prime curves (0xFF01)[24][52] |
arbitrary char2 curves (0xFF02)[24][52] |
実装 | brainpoolP256r1 (26)[53] |
brainpoolP384r1 (27)[53] |
brainpoolP512r1 (28)[53] |
X25519 [54] |
Curve448 Ed448-Goldilocks [55] |
M221 Curve2213 [56] |
E222 [56] |
Curve1174 [56] |
E382 [56] |
M383 [56] |
Curve383187 [56] |
Curve41417 Curve3617 [56] |
M511 Curve511187 [56] |
E521 [56] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GnuTLS | No | No | No | Yes[57] | No | No | No | No | No | No | No | No | No | No |
OpenSSL | Yes[17] | Yes[17] | Yes[17] | Yes[58][59] | Yes[60][61] | No | No | No | No | No | No | No | No | No |
wolfSSL | Yes | Yes | Yes | Yes[62] | No | No | No | No | No | No | No | No | No | No |
実装 | brainpoolP256r1 (26) |
brainpoolP384r1 (27) |
brainpoolP512r1 (28) |
Curve25519 | Curve448 Ed448-Goldilocks |
M221 Curve2213 |
E222 | Curve1174 | E382 | M383 | Curve383187 | Curve41417 Curve3617 |
M511 Curve511187 |
E521 [56] |
データの完全性
[編集]実装 | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA256/384 | AEAD | GOST 28147-89 IMIT[25] | GOST R 34.11-94[25] |
---|---|---|---|---|---|---|
GnuTLS | Yes | Yes | Yes | Yes | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes[26] | Yes[26] |
wolfSSL | Yes | Yes | Yes | Yes | No | No |
実装 | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA256/384 | AEAD | GOST 28147-89 IMIT | GOST R 34.11-94 |
圧縮
[編集]CRIME攻撃はTLS圧縮を利用するため、慎重な実装ではTLSレベルでの圧縮は使用していない。また、HTTP圧縮は無関係でこの攻撃の影響は受けないが、関連するBREACH攻撃によって悪用される点に注意が必要である。
実装 | DEFLATE[63] (安全でない) |
---|---|
GnuTLS | デフォルトでは無効 |
OpenSSL | デフォルトでは無効 |
wolfSSL | デフォルトでは無効 |
実装 | DEFLATE |
拡張機能
[編集]各実装がサポートする拡張機能をリストする。安全な再ネゴシエーション拡張(Secure Renegotiation extension)はHTTPSクライアントセキュリティにとって重要な意味を持つ。クライアントがTLS再ネゴシエーション(TLS renegotiation)を実装しているかどうかにかかわらず、この拡張を実装していないTLSクライアントは攻撃に対して脆弱である。
実装 | 再ネゴシエーション [64] |
Server Name Indication [65] |
ALPN [66] |
Certificate Status Request [65] |
OpenPGP [67] |
Supplemental Data [68] |
Session Ticket [69] |
Keying Material Exporter [70] |
Maximum Fragment Length [65] |
Truncated HMAC [65] |
Encrypt-then-MAC [71] |
TLS Fallback SCSV [72] |
Extended Master Secret [73] |
ClientHello Padding [74] |
Raw Public Keys [75] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GnuTLS | Yes | Yes | Yes[76] | Yes | 廃止予定[77] | Yes | Yes | Yes | Yes | No | Yes[13] | Yes[78] | Yes[13] | Yes[79] | No |
OpenSSL | Yes | Yes | Yes[17] | Yes | No | No? | Yes | Yes? | No | No | No | Yes[80] | Yes[81] | Yes[82] | 不明 |
wolfSSL | Yes | Yes | Yes[51] | Yes | No | No | Yes | No | Yes | Yes | No | No | Yes | No | 不明 |
実装 | 再ネゴシエーション | Server Name Indication | ALPN | Certificate Status Request | OpenPGP | Supplemental Data | Session Ticket | Keying Material Exporter | Maximum Fragment Length | Truncated HMAC | Encrypt-then-MAC | TLS Fallback SCSV | Extended Master Secret | ClientHello Padding | Raw Public Keys [75] |
アシスト暗号
[編集]このセクションでは、暗号化を最適化するCPU命令セットの利点を生かした実装、ハードウェア暗号やデータ分離のためのシステム固有のデバイス利用について示す。
実装 | PKCS #11 device | Intel AES-NI | VIA PadLock | ARMv8-A | Intel SGX | Intel QAT |
---|---|---|---|---|---|---|
GnuTLS | Yes | Yes | Yes | Yes[83] | No | No |
OpenSSL | Yes[84] | Yes | Yes | Yes[85] | No | |
wolfSSL | No | Yes | No | Yes | Yes | Yes[86] |
実装 | PKCS #11 device | Intel AES-NI | VIA PadLock | ARMv8-A | Intel SGX | Intel QAT |
システム固有のバックエンド
[編集]使用可能なオペレーティングシステム固有のバックエンド、または別の実装によって提供されるバックエンドを利用する実装の機能を示す。
実装 | /dev/crypto | Windows CSP | CommonCrypto | OpenSSL engine |
---|---|---|---|---|
GnuTLS | Yes | No | No | No |
OpenSSL | Yes | No | No | Yes |
wolfSSL | Yes | 部分的 | No | No |
実装 | /dev/crypto | Windows CSP | CommonCrypto | OpenSSL engine |
暗号モジュール/トークンのサポート
[編集]実装 | TPM support | Hardware token support | Objects identified via |
---|---|---|---|
GnuTLS | Yes | PKCS11 | RFC7512 PKCS #11 URLs[87] |
OpenSSL | Yes | PKCS11 (サードパーティモジュール経由)[88] | RFC7512 PKCS #11 URLs[87] |
wolfSSL | No | No | |
実装 | TPM support | Hardware token support | Objects identified via |
コードの依存関係
[編集]実装 | 依存 | オプションの 依存 |
---|---|---|
GnuTLS | libc nettle gmp |
zlib (compression) p11-kit (PKCS #11) trousers (TPM) |
OpenSSL | libc | zlib (compression) |
wolfSSL | None | libc, zlib (compression) |
実装 | 依存 | オプションの 依存 |
開発環境
[編集]実装 | Namespace | ビルドツール | API マニュアル | バックエンド暗号 | Template:OpenSSL互換レイヤ |
---|---|---|---|---|---|
GnuTLS | gnutls_* | Autoconf, automake, libtool | マニュアルとAPIリファレンス(HTML, PDF) | 外部, libnettle | Yes (limited) |
OpenSSL | SSL_* SHA1_* |
Makefile | Man pages | 含まれる (monolithic) | — |
wolfSSL | CyaSSL_* SSL_* |
Autoconf, automake, libtool, MSVC project workspaces, XCode projects, CodeWarrior projects, MPLAB X projects, Keil, IAR, Clang, GCC | マニュアルとAPIリファレンス(HTML, PDF) | 含まれる (monolithic) | Yes (約10%のAPI) |
実装 | Namespace | ビルドツール | API マニュアル | バックエンド暗号 | OpenSSL互換レイヤ |
移植性に関する懸念
[編集]実装 | プラットフォーム要件 | ネットワーク要件 | スレッドの安全性 | ランダムシード | クロスコンパイル | No OS (ベアメタル) | サポートOS |
---|---|---|---|---|---|---|---|
GnuTLS | C89 | POSIX send()とrecv(). API to supply your own replacement. | スレッドセーフ、POSIXかWindowsでない場合、カスタムmutexでフック | プラットフォームによる | Yes | No | POSIXプラットフォーム、Windows、GNU/Linux, Win32/64, OS X, Solaris, OpenWRT, FreeBSD, NetBSD, OpenBSDなどの一般的にテストされたプラットフォーム |
OpenSSL | C89[脚注 1] | ? | mutexのコールバックが必要 | ネイティブAPI経由 | Yes | No | Unix, DOS (with djgpp), Windows, OpenVMS, MacOS, NetWare, eCos |
wolfSSL | C89 | POSIX send()とrecv(). API to supply your own replacement. | スレッドセーフ、PThreadsかWinThreadsがなければmutexでフック。オフに設定可 | wolfCryptでランダムシード | Yes | Yes | Win32/64, Linux, OS X, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, Yocto Project, OpenEmbedded, WinCE, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii and Gamecube through DevKitPro, QNX, MontaVista, NonStop, TRON/ITRON/µITRON, Micrium µC/OS-III, FreeRTOS, SafeRTOS, NXP/Freescale MQX, Nucleus, TinyOS, HP/UX, AIX, ARC MQX, Keil RTX, TI-RTOS, uTasker, embOS, INtime, Mbed, uT-Kernel, RIOT, CMSIS-RTOS, FROSTED, Green Hills INTEGRITY, TOPPERS, PetaLinux, Apache mynewt |
実装 | プラットフォーム要件 | ネットワーク要件 | スレッドの安全性 | ランダムシード | クロスコンパイル | No OS (ベアメタル) | サポートOS |
関連
[編集]参照
[編集]- ^ “GnuTLS help mailing list” (2024年3月20日). 2024年6月17日閲覧。
- ^ “OpenSSL: Newslog”. 2024年10月24日閲覧。
- ^ “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
- ^ 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日閲覧。
脚注
[編集]- ^ 完全にC89の枠内で記述されているわけではない。C99以降の文法、たとえばブロックの先頭以外で変数を宣言するなどの文法は用いず、古いコンパイラにも配慮した形式となってはいるが、C99で新規導入されたヘッダファイルであるstdint.hとそれが定義するビット長を明示する整数型(int8_t, int16_t, int32_tなど)を用いるため、C89にしか準拠していない開発環境ではstdint.h相当のものをユーザが準備する必要がある。また、OpenSSL 3.0以降はC言語規格で標準化されていない
#pragma once
を多くのヘッダファイルが含むため、これをサポートしていない古いコンパイラ(GCCでは3.4未満)では処理できないソースとなっている。