安全传输层协议 (TLS) 保障网络间的通信安全。本文比较几种最常用的TLS应用库。市面上存在许多种自由开源的TLS应用软件。
所有类目的比较均使用下列概述部分中列出软件的稳定版本。该比较仅限于与TLS协议直接相关的功能。
应用软件 | 开发商 | 开源 | 软件证书 | 版权拥有 | 编辑语言 | 最新版本,日期 | 源于 |
---|---|---|---|---|---|---|---|
Botan | Jack Lloyd | 是 | Simplified BSD License | Jack Lloyd | C++ | Template:Latest stable software release/Botan | 美国 (Vermont) |
GnuTLS | GnuTLS项目 | 是 | GNU LGPLv2.1+ | 自由软件基金会 | C | 3.7.8(2022年9月27日[1])[±] | 欧洲 (希腊和瑞典) |
LibreSSL | OpenBSD Project | 是 | Apache License 1.0, 4-clause BSD License, ISC License, and some are public domain | Eric Young, Tim Hudson, Sun, OpenSSL project, OpenBSD Project, and others | C, 汇编语言 | 3.6.1(2022年10月31日[2])[±] | 加拿大 |
MatrixSSL[3] | PeerSec Networks | 是 | GNU GPLv2+ and commercial license | PeerSec Networks | C | 4.5.1(2022年7月29日[4])[±] | 美国 |
Mbed TLS (previously PolarSSL) | Arm | 是 | Apache License 2.0, GNU GPLv2+ and commercial license | Arm Holdings | C | EU (Netherlands) | |
Network Security Services (NSS) | Mozilla, AOL, Red Hat, Sun, Oracle, Google and others | 是 | MPL 2.0 | NSS contributors | C, 汇编语言 | Template:Latest stable software release/Network Security Services | US |
OpenSSL | OpenSSL 项目 | 是 | OpenSSL-SSLeay dual-license | Eric Young, Tim Hudson, Sun, OpenSSL 项目, 及其他 | C、汇编语言 | 3.0.7(2022年11月1日[6])[±] | 澳大利亚/欧洲 |
wolfSSL (曾名为 CyaSSL) | wolfSSL[7] | 是 | GNU GPLv2+ and commercial license | wolfSSL 公司.[8] | C | 5.4.0(2022年7月11日[9][10])[±] | 美国 |
TLS协议存在几种版本。 SSL 2.0是一个被弃用的[11] 协议版本,具有明显的缺陷。 SSL 3.0(1996)和TLS 1.0(1999)是具有两个CBC-填充弱点的版本——在2001年由Serge Vaudenay解析.[12] 。 TLS 1.1(2006)通过将CBC块密码切换到随机初始化矢量(IV)解决了其中一个问题,RFC7366[13]强调了 更严重的mac-pad-encrypt使用问题而不是使pad-mac-encrypt更安全的问题。
在2011年底,一种用于SSL 3.0和TLS 1.0的解决方法,基本等同于TLS 1.1的随机的IV被很多应用软件广泛采用[14] 。所以从安全角度来看,所有现有TLS 1.0,1.1和1.2版本在2030年前均在基本协议中提供相同的强度协议并适用于128位,据 NIST SP800-57。在2014年,SSL 3.0的POODLE漏洞被发现,其利用在CBCd的已知漏洞,以及浏览器中不安全的回退协商。[15]
TLS 1.2(2008)是最新发布的基本协议,引入了一种用于识别数字签名的散列方法。虽然在SSL 3.0保守选择(rsa,sha1 + md5)上允许将来使用更强大的散列函数进行数字签名(rsa,sha256 / sha384 / sha512),但TLS 1.2协议不经意间变化并大大削弱了默认数字签名并提供(rsa,sha1)甚至(rsa,md5)。[16]
数据报传输层安全性(DTLS或数据报TLS)1.0是针对面向数据包的传输层的TLS 1.1修改,其中必须容忍数据包丢失和数据包重新排序。基于TLS 1.2的修订版DTLS 1.2于2012年1月发布[17]
在SSL 2.0和SSL 3.0中存在已知的漏洞。除了可预测的IV(存在简单的解决方法)之外,所有当前已知的漏洞都会影响所有版本的TLS 1.0 / 1.1 / 1.2。[18]
应用软件 | SSL 2.0 (不安全)[19] | SSL 3.0 (不安全)[20] | TLS 1.0[21] | TLS 1.1[22] | TLS 1.2[23] | TLS 1.3 [24][25] |
DTLS 1.0[26] | DTLS 1.2[17] |
---|---|---|---|---|---|---|---|---|
Botan | No | No[27] | Yes | Yes | 是 | Yes | 是 | |
GnuTLS | 否[a] | 默认禁止[28] | 是 | 是 | 是 | 是 | 是 | 是 |
MatrixSSL | No | Disabled by default at compile time[29] | Yes | Yes | 是 | 是 | Yes | 是 |
Mbed TLS | No | No[30] | No[30] | No[30] | 是 | Yes (experimental) |
Yes[31] | 是[31] |
NSS | No[a] | Disabled by default[32] | Yes | Yes[33] | 是[34] | 是[35] | Yes[33] | 是[36] |
LibreSSL | No[37] | No[38] | Yes | Yes | 是 | 是 | Yes | 是[39] |
OpenSSL | 否[40] | 默认禁止 | 是 | 是 | 是 | 是 | 是 | 是 |
wolfSSL | 否 | 默认禁止[41] | 是 | 是 | 是 | 是 | 是 | 是 |
NSA Suite B 密码学 (RFC 6460) 的必须部分:
根据CNSSP-15,256位椭圆曲线(FIPS 186-2中),SHA-256和AES 128位密钥足以保护机密信息达到Secret级别,而384位椭圆曲线(在FIPS 186-2中指定),SHA-384和带有256位密钥的AES是保护最高机密信息所必需的。
应用软件 | TLS 1.2 Suite B |
---|---|
Botan | 是 |
GnuTLS | 是 |
LibreSSL | 是 |
MatrixSSL | 是 |
Mbed TLS | 是 |
NSS | 否[45] |
OpenSSL | 是[46] |
wolfSSL | 是 |
请注意,某些认证已受到实际参与研发人的严重负面批评。[47]
应用软件 | FIPS 140-1, FIPS 140-2[48] | 通用标准 | Embedded FIPS Solution | |
---|---|---|---|---|
第一层面 | Level 2Template:Disputed inline | |||
Botan[49] | ||||
GnuTLS[50] | 红帽企业Linux GnuTLS加密模块(#2780) | |||
LibreSSL[37] | no support | |||
MatrixSSL[51] | SafeZone FIPS Cryptographic Module: 1.1 (#2389) | |||
Mbed TLS[52] | ||||
NSS[53] | Network Security Services: 3.2.2 (#247) Network Security Services Cryptographic Module: 3.11.4 (#815), 3.12.4 (#1278), 3.12.9.1 (#1837) |
Netscape Security Module: 1 (#7[notes 1]), 1.01 (#47[notes 2]) Network Security Services: 3.2.2 (#248[notes 3]) Network Security Services Cryptographic Module: 3.11.4 (#814[notes 4]), 3.12.4 (#1279, #1280[notes 5]) |
||
OpenSSL[54] | OpenSSL FIPS 对象模块: 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[55] | wolfCrypt FIPS 模块: 3.6.0 (#2425) 已验证的操作环境详见于NIST 证书 for validated Operating Environments |
是 |
本节列出了在不同应用软件中中可用的证书验证功能。
应用软件 | RSA[23] | RSA-EXPORT (不安全)[23] | DHE-RSA (forward secrecy)[23] | DHE-DSS (forward secrecy)[23] | ECDH-ECDSA[56] | ECDHE-ECDSA (forward secrecy)[56] | ECDH-RSA[56] | ECDHE-RSA (forward secrecy)[56] | GOST R 34.10-94, 34.10-2001[57] |
---|---|---|---|---|---|---|---|---|---|
Botan | 默认禁止 | 否 | 是 | 默认禁止 | 否 | 是 | 否 | 是 | 否 |
GnuTLS | 是 | 否 | 是 | 默认禁止[28] | 否 | 是 | 否 | 是 | 否 |
LibreSSL | 是 | 否[37] | 是 | 是 | 是 | 是 | 是 | 是 | Yes[58] |
MatrixSSL | 是 | 否 | 是 | 否 | 是 | 是 | 是 | 是 | 否 |
Mbed TLS | 是 | 否 | 是 | 否 | 是 | 是 | 是 | 是 | 否 |
NSS | Yes | 默认禁止 | 是[59] | 是 | 是 | 是 | 是 | 是 | 否[60][61] |
OpenSSL | 是 | 否[40] | 是 | 默认禁止[40] | 是 | 是 | 是 | 是 | 是[62] |
wolfSSL | 是 | 否 | 是 | 否 | 是 | 是 | 是 | 是 | 否 |
应用软件 | SRP[63] | SRP-DSS[63] | SRP-RSA[63] | PSK-RSA[64] | PSK[64] | DHE-PSK (前向保密)[64] | ECDHE-PSK (前向保密)[65] | KRB5[66] | DH-ANON[23] (不安全) | ECDH-ANON[56] (不安全) |
---|---|---|---|---|---|---|---|---|---|---|
Botan | 是 | 是 | 是 | 否 | 是 | 是 | 是 | 否 | 默认禁止 | 默认禁止 |
GnuTLS | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 默认禁止 | 默认禁止 |
LibreSSL | 否[67] | 否[67] | 否[67] | 否 | 否 | 否 | 否 | 否 | 是 | 是 |
MatrixSSL | 否 | 否 | 否 | 是 | 是 | 是 | 否 | 否 | 默认禁止 | 否 |
Mbed TLS | 否 | 否 | 否 | 是 | 是 | 是 | 是 | 否 | 否 | 否 |
NSS | 否[68] | 否[68] | 否[68] | 否[69] | 否[69] | 否[69] | 否[69] | 否 | Client side only, disabled by default[70] | 默认禁止[71] |
OpenSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[72] | 默认禁止[73] | 默认禁止[73] |
wolfSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 [74] | 是 | 否 | 否 |
应用软件 | 应用程序定义 | PKIX path validation[75] | CRL[76] | OCSP[77] | DANE (DNSSEC)[78] | 首用信任 (TOFU) |
---|---|---|---|---|---|---|
Botan | 是 | 是 | 是 | 是 | 否 | 否 |
GnuTLS | 是 | 是 | 是 | 是 | 是 | 是 |
LibreSSL | 是 | 是 | 是 | 是 | 否 | 否 |
MatrixSSL | 是 | 是 | 是 | 是[79] | 否 | 否 |
Mbed TLS | 是 | 是 | 是 | 否[80] | 否 | 否 |
NSS | 是 | 是 | 是 | 是 | 否[81] | 否 |
OpenSSL | 是 | 是 | 是 | 是 | 是 | 否 |
wolfSSL | 是 | 是 | 是 | 是 | 否 | 否 |
应用软件 | 分组密码 的 操作模式 | 流密码 | None | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
AES GCM [82] |
AES CCM [83] |
AES CBC | Camellia GCM [84] |
Camellia CBC [85] |
ARIA GCM [86] |
ARIA CBC [86] |
SEED CBC [87] |
3DES EDE CBC (不安全)[88] |
GOST 28147-89 CNT (提出) [57][n 1] |
ChaCha20-Poly1305 [89] |
Null (insecure) [n 2] | |
Botan | 是 | Yes | Yes | 是 | 是 | No | No | 默认禁止 | 默认禁止 | No | 是[90] | Not implemented |
GnuTLS | 是 | yes[28] | 是 | 是 | 是 | 否 | 否 | 否 | 默认禁止[91] | 否 | 是[92] | 默认禁止 |
LibreSSL | 是[37] | No | 是 | 否 | 是[58] | 否 | 否 | 否[37] | 是 | 是[58] | 是[37] | 默认禁止 |
MatrixSSL | 是 | 否 | 是 | 否 | 否 | 否 | 否 | 是 | 默认禁止 | 否 | 是[93] | 默认禁止 |
Mbed TLS | 是 | 是 [94] | 是 | 是 | 是 | 是[95] | 是[95] | 否 | 否[30] | 否 | 是[96] | Disabled by default at compile time |
NSS | 是[97] | 否 | 是 | 否[98][n 3] | 是[99] | 否 | 否 | 是[100] | 是 | 否[60][61] | 是[101] | 默认禁止 |
OpenSSL | 是[102] | 默认禁止[40] | 是 | 否 | 默认禁止[40] | 默认禁止 | 否 | 默认禁止[40] | 默认禁止[40] | 是[62] | 是[40] | 默认禁止 |
wolfSSL | 是 | 是 | 是 | 否 | 是 | 否 | 否 | 否 | 是 | 否 | 是 | 默认禁止 |
应用软件 | 分组密码 的 操作模式 | 流密码 | ||||
---|---|---|---|---|---|---|
IDEA CBC [n 4](不安全)[104] |
DES CBC (不安全) [n 4] |
DES-40 CBC (EXPORT, 不安全) [n 5] |
RC2-40 CBC (EXPORT, 不安全) [n 5] |
RC4-128 (不安全) [n 6] |
RC4-40 (EXPORT, 不安全) [n 7][n 5] | |
Botan | 否 | 否 | 否 | 否 | No[105] | 否 |
GnuTLS | 否 | 否 | 否 | 否 | 默认禁止[28] | 否 |
LibreSSL | 是 | 是 | No[37] | No[37] | Yes | No[37] |
MatrixSSL | 是 | No | No | No | 默认禁止 | No |
Mbed TLS | 否 | Disabled by default at compile time | 否 | No | Disabled by default at compile time[31] | No |
NSS | 是 | 默认禁止 | 默认禁止 | 默认禁止 | Lowest priority[106][107] | 默认禁止 |
OpenSSL | 默认禁止[40] | 默认禁止 | 否[40] | 否[40] | 默认禁止 | 否[40] |
wolfSSL | 默认禁止[108] | 否 | 否 | 否 | 默认禁止 | 否 |
适用的 TLS 版本 | TLS 1.3 and earlier | TLS 1.2 and earlier | ||||||
---|---|---|---|---|---|---|---|---|
应用软件 | secp256r1 prime256v1 NIST P-256 (0x0017,[109] 23[110]) |
secp384r1 NIST P-384 (0x0018,[109] 24[110]) |
secp521r1 NIST P-521 (0x0019,[109] 25[110]) |
X25519 (0x001D,[109] 29[110]) |
X448 (0x001E,[109] 30[110]) |
brainpoolP256r1 (26)[111] |
brainpoolP384r1 (27)[111] |
brainpoolP512r1 (28)[111] |
Botan | 是 | 是 | 是 | 是[90] | 否 | 是[112] | 是[112] | 是[112] |
BoringSSL | 是 | 是 | Yes (disabled by default) | 是 | 否 | 否 | 否 | 否 |
BSAFE | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 |
GnuTLS | 是 | 是 | 是 | 是[113] | 是[114] | 否 | 否 | 否 |
JSSE | 是 | 是 | 是 | Yes x25519: JDK 13+[115] Ed25519:JDK 15+[116] |
Yes x448: JDK 13+[115] Ed448: JDK 15+[116] |
否 | 否 | 否 |
LibreSSL | 是 | 是 | 是 | 是[117] | 否 | 是[37] | 是[37] | 是[37] |
MatrixSSL | 是 | 是 | 是 | TLS 1.3 only[118] | 否 | 是 | 是 | 是 |
Mbed TLS | 是 | 是 | 是 | Primitive only[119] | Primitive only[120] | 是[121] | 是[121] | 是[121] |
NSS | 是 | 是 | 是 | 是[122] | 否[123][124] | 否[125] | 否[125] | 否[125] |
OpenSSL | 是 | 是 | 是 | 是[126][127] | 是[128][129] | 是[46] | 是[46] | 是[46] |
Schannel Vista/2008, 7/2008R2, 8/2012, 8.1/2012R2, 10 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 |
Secure Transport | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 |
wolfSSL | 是 | 是 | 是 | 是[130] | 否 | 是 | 是 | 是 |
Erlang/OTP SSL application | 是 | 是 | 是 | 否 | 否 | 是 | 是 | 是 |
Implementation | secp256r1 prime256v1 NIST P-256 (0x0017, 23) |
secp384r1 NIST P-384 (0x0018, 24) |
secp521r1 NIST P-521 (0x0019, 25) |
X25519 (0x001D, 29) |
X448 (0x001E, 30) |
brainpoolP256r1 (26) |
brainpoolP384r1 (27) |
brainpoolP512r1 (28) |
应用! sect163k1 NIST K-163 (1)[56] |
sect163r1 (2)[56] |
sect163r2 NIST B-163 (3)[56] |
sect193r1 (4)[56] |
sect193r2 (5)[56] |
sect233k1 NIST K-233 (6)[56] |
sect233r1 NIST B-233 (7)[56] |
sect239k1 (8)[56] |
sect283k1 NIST K-283 (9)[56] |
sect283r1 NIST B-283 (10)[56] |
sect409k1 NIST K-409 (11)[56] |
sect409r1 NIST B-409 (12)[56] |
sect571k1 NIST K-571 (13)[56] |
sect571r1 NIST B-571 (14)[56] | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Botan | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
GnuTLS | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
LibreSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
MatrixSSL | 否 | 否 | 否 | 否 | 否 | No | 否 | 否 | 否 | 否 | No | No | No | No |
Mbed TLS | No | No | No | No | No | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
NSS | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
OpenSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
wolfSSL | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | No | No | No | No | No | No |
应用 | sect163k1 NIST K-163 (1) |
sect163r1 (2) |
sect163r2 NIST B-163 (3) |
sect193r1 (4) |
sect193r2 (5) |
sect233k1 NIST K-233 (6) |
sect233r1 NIST B-233 (7) |
sect239k1 (8) |
sect283k1 NIST K-283 (9) |
sect283r1 NIST B-283 (10) |
sect409k1 NIST K-409 (11) |
sect409r1 NIST B-409 (12) |
sect571k1 NIST K-571 (13) |
sect571r1 NIST B-571 (14) |
应用 | secp160k1 (15)[56] |
secp160r1 (16)[56] |
secp160r2 (17)[56] |
secp192k1 (18)[56] |
secp192r1 prime192v1 NIST P-192 (19)[56] |
secp224k1 (20)[56] |
secp224r1 NIST P-244 (21)[56] |
secp256k1 (22)[56] |
arbitrary prime curves (0xFF01)[56][131] |
arbitrary char2 curves (0xFF02)[56][131] |
---|---|---|---|---|---|---|---|---|---|---|
Botan | No | No | No | No | No | No | No | No | No | No |
GnuTLS | No | No | No | No | 是 | No | 是 | No | No | No |
LibreSSL | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | No | No |
MatrixSSL | No | No | No | No | 是 | No | 是 | No | No | No |
Mbed TLS | No | No | No | Yes | Yes | Yes | Yes | 是 | No | No |
NSS | Yes | Yes | Yes | Yes | Yes | Yes | Yes | 是 | No | No |
OpenSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | 是 | No | No |
wolfSSL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | 是 | No | No |
应用 | secp160k1 (15) |
secp160r1 (16) |
secp160r2 (17) |
secp192k1 (18) |
secp192r1 prime192v1 NIST P-192 (19) |
secp224k1 (20) |
secp224r1 NIST P-244 (21) |
secp256k1 (22) |
arbitrary prime curves (0xFF01) |
arbitrary char2 curves (0xFF02) |
NSS-3.24
的参考文献提供内容应用软件 | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA256/384 | AEAD | GOST 28147-89 IMIT[57] | GOST R 34.11-94[57] |
---|---|---|---|---|---|---|
Botan | 否 | 是 | 是 | 是 | 否 | 否 |
GnuTLS | 是 | 是 | 是 | 是 | 否 | 否 |
LibreSSL | 是 | 是 | 是 | 是 | 是[58] | 是[58] |
MatrixSSL | 是 | 是 | 是 | 是 | 否 | 否 |
Mbed TLS | Yes | 是 | 是 | 是 | 否 | 否 |
NSS | 是 | 是 | 是 | 是 | 否[60][61] | 否[60][61] |
OpenSSL | 是 | 是 | 是 | 是 | 是[62] | 是[62] |
wolfSSL | 是 | 是 | 是 | 是 | 否 | 否 |
请注意,CRIME 安全漏洞 利用了TLS压缩的优势,因此传统应用不会在TLS层启用压缩。 HTTP 压缩是不相关的且不受此漏洞攻击的影响,但会被BREACH相关的攻击利用。
应用软件 | DEFLATE[132] (不安全) |
---|---|
Botan | 否 |
GnuTLS | 默认禁用 |
LibreSSL | 否[37] |
MatrixSSL | 默认禁用 |
Mbed TLS | 默认禁用 |
NSS | 默认禁用 |
OpenSSL | 默认禁用 |
wolfSSL | 默认禁用 |
在本节中列出了每个应用支持的扩展。请注意,安全重新协商扩展对于HTTPS客户端安全至关重要。不执行TLS协议的客户端很容易受到攻击,无论客户端是否实施TLS重新协商。
Implementation | Secure Renegotiation [133] |
Server Name Indication [134] |
ALPN [135] |
Certificate Status Request [134] |
OpenPGP [136] |
Supplemental Data [137] |
Session Ticket [138] |
Keying Material Exporter [139] |
Maximum Fragment Length [134] |
Truncated HMAC [134] |
Encrypt-then-MAC [140] |
TLS Fallback SCSV [141] |
Extended Master Secret [142] |
ClientHello Padding [143] |
Raw Public Keys [144] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Botan | 是 | 是 | 是[145] | 否 | 否 | 否 | 是 | 是 | 是 | 否 | 是 | 是[146] | 是[147] | 否 | 未知 |
GnuTLS | 是 | 是[148] | 是 | 弃用[149] | 是 | 是 | 是 | 是 | 否 | 是[28] | 是[150] | 是[28] | 是[151] | 否 | |
LibreSSL | 是 | 是 | 是[152] | 是 | 否 | 否? | 是 | 是? | 否 | 否 | 否 | Server side only[153] | 否 | 是 | 否 |
MatrixSSL | 是 | 是 | 是[154] | 是[93] | 否 | 否 | 是 | 否 | 是 | 是 | 否 | 是[93] | 是[93] | 否 | 未知 |
Mbed TLS | 是 | 是 | 是[155] | 否 | 否 | 否 | 是 | 否 | 是 | Disabled by default[31] | 是[156] | 是[156] | 是[156] | 否 | 否 |
NSS | 是 | 是 | 是[157] | 是 | 否[158] | 否 | 是 | 是 | 否 | 否 | 否[159] | 是[160] | 是[161] | 是[157] | 未知 |
OpenSSL | 是 | 是 | 是[46] | 是 | 否 | 否? | 是 | 是? | 是 | 否 | 是 | 是[162] | 是[163] | 是[164] | 未知 |
wolfSSL | 是 | 是 | 是[108] | 是 | 否 | 否 | 是 | 否 | 是 | 是 | 是[165] | 否 | 是 | 否 | 未知 |
本节列出了已知的利用CPU指令集优化加密,或利用系统特定允许访问底层加密硬件加速或分离数据的设备。
应用软件 | PKCS #11 device | Intel AES-NI | VIA PadLock | ARMv8-A | Intel SGX | Intel QAT(页面存档备份,存于互联网档案馆) |
---|---|---|---|---|---|---|
GnuTLS | 是 | 是 | 是 | 是[166] | 否 | 否 |
OpenSSL | 是[167] | 是 | 是 | 是[168] | 否 | |
wolfSSL | 否 | 是 | 否 | 是 | 是 | 是[169] |
本节列出了已知利用可用操作系统特定后端或另一个提供的后端的应用。
应用软件 | /dev/crypto | Windows CSP | 一般加密CommonCrypto(页面存档备份,存于互联网档案馆) | OpenSSL |
---|---|---|---|---|
GnuTLS | 是 | 否 | 否 | 否 |
OpenSSL | 是 | 否 | 否 | 是 |
wolfSSL | 否 | 部分 | 否 | 否 |
Implementation | TPM support | Hardware token support | Objects identified via |
---|---|---|---|
Botan | 部份[147] | PKCS11 | |
GnuTLS | 是 | PKCS11 | RFC7512 PKCS #11 URLs[170] |
LibreSSL | 是 | PKCS11 (via 3rd party module) | Custom method |
MatrixSSL | 否 | PKCS11 | |
Mbed TLS | 否 | PKCS11 (via libpkcs11-helper) or standard hooks | Custom method |
NSS | 否 | PKCS11 | |
OpenSSL | 是 | PKCS11 (通过第三方模块)[171] | RFC7512 PKCS #11 URLs[170] |
wolfSSL | 是 | PKCS11 |
应用软件 | 属性 | 可选属性 |
---|---|---|
Botan | C++11 | sqlite zlib (compression) bzip2 (compression) liblzma (compression) boost openssl (crypto backend) trousers (TPM) |
GnuTLS | libc nettle gmp |
zlib (compression) p11-kit (PKCS #11) trousers (TPM) |
MatrixSSL | none | zlib (compression) |
MatrixSSL-open | libc or newlib | |
Mbed TLS | libc | libpkcs11-helper (PKCS #11) zlib (compression) |
NSS | libc libnspr4 libsoftokn3 libplc4 libplds4 |
zlib (compression) |
OpenSSL | libc | zlib (压缩) |
wolfSSL | None | libc, zlib (压缩) |
应用软件 | Namespace | 建设工具 | API 手册 | 加密后端 | OpenSSL 兼容层 |
---|---|---|---|---|---|
Botan | Botan::TLS | Makefile | Sphinx | Included (pluggable) | 否 |
GnuTLS | gnutls_* | Autoconf, automake, libtool | Manual and API reference (HTML, PDF) | External, libnettle | 是 (部分) |
MatrixSSL | matrixSsl_* ps* |
Makefile, MSVC project workspaces, Xcode projects for OS X and iOS | API Reference (PDF), Integration Guide | Included (pluggable) | 是 (Subset: SSL_read, SSL_write, etc.) |
Mbed TLS | mbedtls_ssl_* mbedtls_sha1_* |
Makefile, CMake, MSVC project workspaces, yotta | API Reference + High Level and Module Level Documentation (HTML) | Included (monolithic) | 否 |
NSS | CERT_* SEC_* |
Makefile | Manual (HTML) | Included, PKCS#11 based[172] | 是 (separate package called nss_compat_ossl[173]) |
OpenSSL | SSL_* SHA1_* |
Makefile | Man pages | Included (monolithic) | 不適用 |
wolfSSL | CyaSSL_* SSL_* |
Autoconf, automake, libtool, MSVC project workspaces, XCode projects, CodeWarrior projects, MPLAB X projects, Keil, IAR, Clang, GCC | Manual and API Reference (HTML, PDF) | Included (monolithic) | 是 (大约 10% of API) |
应用软件 | 平台要求 | 网络要求 | 线程安全 | 随机速度 | 能够交叉编译 | No OS (bare metal) | 可支持的操作系统 |
---|---|---|---|---|---|---|---|
Botan | C++11 | None | 线程安全 | Platform-dependent | 是 | Windows, Linux, macOS, Android, iOS, FreeBSD, OpenBSD, Solaris, AIX, HP-UX, QNX, BeOS, IncludeOS | |
GnuTLS | C89 | POSIX send() and recv(). API 支持所找的替代品. | 线程安全,如果POSIX和Windows线程都不可用,则需要自定义互斥锁钩 | 取决于平台 | 是 | 否 | 基本任何 POSIX 平台 or Windows, 一般已测试的平台包含 GNU/Linux, Win32/64, OS X, Solaris, OpenWRT, FreeBSD, NetBSD, OpenBSD. |
MatrixSSL | C89 | None | 线程安全 | Platform dependent | 是 | 是 | All |
Mbed TLS | C89 | POSIX read() and write(). API to supply your own replacement. | Threading layer available (POSIX or own hooks) | Random seed set through entropy pool | 是 | 是 | Known to work on: Win32/64, Linux, macOS, Solaris, FreeBSD, NetBSD, OpenBSD, OpenWRT, iPhone (iOS), Xbox, Android, eCos, SeggerOS |
NSS | C89, NSPR[174] | NSPR[174] PR_Send() and PR_Recv(). API to supply your own replacement. | 线程安全 | Platform dependent[175] | 是 (but cumbersome) | 否 | AIX, Android, FreeBSD, NetBSD, OpenBSD, BeOS, HP-UX, IRIX, Linux, macOS, OS/2, Solaris, OpenVMS, Amiga DE, Windows, WinCE, Sony PlayStation |
OpenSSL | C89? | ? | 需要互斥量回调 | 通过原始API设置 | 是 | 否 | Unix, DOS (with djgpp), Windows, OpenVMS, MacOS, NetWare, eCos |
wolfSSL | C89 | POSIX send() and recv(). API 支持所找的替代品. | 线程安全,如果POSIX和Windows线程都不可用,则需要自定义互斥锁钩 | 通过 wolfCrypt设置随机速度 | 是 | 是 | Win32/64, Linux, OS X, Solaris, ThreadX, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, Haiku, OpenWRT, iPhone (iOS), Android, Nintendo Wii and Gamecube through DevKitPro, QNX, MontaVista, OpenCL, NonStop, TRON/ITRON/µITRON, Micrium's µC OS, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, HP/UX, Keil RTX, TI-RTOS |