TLS的应用对比

安全传输层协议 (TLS) 保障网络间的通信安全。本文比较几种最常用的TLS应用库。市面上存在许多种自由开源的TLS应用软件。

所有类目的比较均使用下列概述部分中列出软件的稳定版本。该比较仅限于与TLS协议直接相关的功能。

## 概述

应用软件｜开发商｜开源｜软件证书｜版权拥有｜编辑语言｜最新版本，日期｜源于

Botan｜Jack Lloyd｜是｜Simplified BSD License｜Jack Lloyd｜C++｜美国 (Vermont)

GnuTLS｜GnuTLS项目｜是｜GNU LGPLv2.1+｜自由软件基金会｜C｜欧洲 (希腊和瑞典)

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, 汇编语言｜加拿大

MatrixSSL｜PeerSec Networks｜GNU GPLv2+ and commercial license｜PeerSec Networks｜C｜美国

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, 汇编语言｜US

OpenSSL｜OpenSSL 项目｜是｜OpenSSL-SSLeay dual-license｜Eric Young, Tim Hudson, Sun, OpenSSL 项目, 及其他｜C、汇编语言｜澳大利亚/欧洲

wolfSSL (曾名为 CyaSSL)｜wolfSSL｜是｜GNU GPLv2+ and commercial license｜wolfSSL 公司.｜C｜美国

## 协议支持

TLS协议存在几种版本。SSL 2.0是一个被弃用的 协议版本，具有明显的缺陷。SSL 3.0（1996）和TLS 1.0（1999）是具有两个CBC-填充弱点的版本——在2001年由Serge Vaudenay解析.。TLS 1.1（2006）通过将CBC块密码切换到随机初始化矢量（IV）解决了其中一个问题，RFC7366强调了 更严重的mac-pad-encrypt使用问题而不是使pad-mac-encrypt更安全的问题。

在2011年底，一种用于SSL 3.0和TLS 1.0的解决方法，基本等同于TLS 1.1的随机的IV被很多应用软件广泛采用。所以从安全角度来看，所有现有TLS 1.0，1.1和1.2版本在2030年前均在基本协议中提供相同的强度协议并适用于128位，据 NIST SP800-57。在2014年，SSL 3.0的POODLE漏洞被发现，其利用在CBCd的已知漏洞，以及浏览器中不安全的回退协商。

TLS 1.2（2008）是最新发布的基本协议，引入了一种用于识别数字签名的散列方法。虽然在SSL 3.0保守选择（rsa，sha1 + md5）上允许将来使用更强大的散列函数进行数字签名（rsa，sha256 / sha384 / sha512），但TLS 1.2协议不经意间变化并大大削弱了默认数字签名并提供（rsa，sha1）甚至（rsa，md5）。

数据报传输层安全性（DTLS或数据报TLS）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 (不安全)｜SSL 3.0 (不安全)｜TLS 1.0｜TLS 1.1｜TLS 1.2｜TLS 1.3｜DTLS 1.0｜DTLS 1.2

Botan｜No｜No｜Yes｜Yes｜是｜Yes｜是

GnuTLS｜否a｜默认禁止｜是｜是｜是｜是｜是｜是

MatrixSSL｜No｜Disabled by default at compile time｜Yes｜Yes｜是｜是｜Yes｜是

Mbed TLS｜No｜No｜No｜No｜是｜Yes(experimental)｜Yes｜是

NSS｜No｜Disabled by default｜Yes｜Yes｜是｜是｜Yes｜是

LibreSSL｜No｜No｜Yes｜Yes｜是｜是｜Yes｜是

OpenSSL｜否｜默认禁止｜是｜是｜是｜是｜是｜是

wolfSSL｜否｜默认禁止｜是｜是｜是｜是｜是｜是

c

## NSA Suite B 密码学

NSA Suite B 密码学 (RFC 6460) 的必须部分:

- 高级加密标准 (AES)，密钥大小为128和256位。对于业务流量，AES应与低带宽流量的计数器模式（CTR）或高带宽流量的伽罗瓦/计数器模式（GCM）操作模式一起使用（请参阅分块密码模式操作） - 对称加密
- 椭圆曲线数字签名算法（ECDSA） - 数字签名
- 椭圆曲线 Diffie-Hellman（ECDH） - 密钥协议
- 安全散列算法2 (SHA-256 和 SHA-384) — 消息摘要

根据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｜否

OpenSSL｜是

wolfSSL｜是

## 证书

请注意，某些认证已受到实际参与研发人的严重负面批评。

应用软件｜FIPS 140-1, FIPS 140-2｜通用标准｜Embedded FIPS Solution

第一层面｜Level 2FIPS140-2

Botan

GnuTLS｜红帽企业Linux GnuTLS加密模块（＃2780）

LibreSSL｜no support

MatrixSSL｜SafeZone FIPS Cryptographic Module: 1.1 (#2389)

Mbed TLS

NSS｜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), 1.01 (#47)Network Security Services: 3.2.2 (#248)Network Security Services Cryptographic Module: 3.11.4 (#814), 3.12.4 (#1279, #1280)

OpenSSL｜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｜wolfCrypt FIPS 模块: 3.6.0 (#2425)已验证的操作环境详见于 NIST 证书 for validated Operating Environments｜是

## 密钥交换算法（仅限于证书）

本节列出了在不同应用软件中中可用的证书验证功能。

应用软件｜RSA｜RSA-EXPORT (不安全)｜DHE-RSA (forward secrecy)｜DHE-DSS (forward secrecy)｜ECDH-ECDSA｜ECDHE-ECDSA (forward secrecy)｜ECDH-RSA｜ECDHE-RSA (forward secrecy)｜GOST R 34.10-94, 34.10-2001

Botan｜默认禁止｜否｜是｜默认禁止｜否｜是｜否｜是｜否

GnuTLS｜是｜否｜是｜默认禁止｜否｜是｜否｜是｜否

LibreSSL｜是｜否｜是｜是｜是｜是｜是｜是｜Yes

MatrixSSL｜是｜否｜是｜否｜是｜是｜是｜是｜否

Mbed TLS｜是｜否｜是｜否｜是｜是｜是｜是｜否

NSS｜Yes｜默认禁止｜是｜是｜是｜是｜是｜是｜否

OpenSSL｜是｜否｜是｜默认禁止｜是｜是｜是｜是｜是

wolfSSL｜是｜否｜是｜否｜是｜是｜是｜是｜否

## 密钥交换算法（备选密钥交换）

应用软件｜SRP｜SRP-DSS｜SRP-RSA｜PSK-RSA｜PSK｜DHE-PSK (前向保密)｜ECDHE-PSK (前向保密)｜KRB5｜DH-ANON (不安全)｜ECDH-ANON (不安全)

Botan｜是｜是｜是｜否｜是｜是｜是｜否｜默认禁止｜默认禁止

GnuTLS｜是｜是｜是｜是｜是｜是｜是｜否｜默认禁止｜默认禁止

LibreSSL｜否｜否｜否｜否｜否｜否｜否｜否｜是｜是

MatrixSSL｜否｜否｜否｜是｜是｜是｜否｜否｜默认禁止｜否

Mbed TLS｜否｜否｜否｜是｜是｜是｜是｜否｜否｜否

NSS｜否｜否｜否｜否｜否｜否｜否｜否｜Client side only, disabled by default｜默认禁止

OpenSSL｜是｜是｜是｜是｜是｜是｜是｜是｜默认禁止｜默认禁止

wolfSSL｜是｜是｜是｜是｜是｜是｜是 ｜是｜否｜否

## 证书验证算法

应用软件｜应用程序定义｜PKIX path validation｜CRL｜OCSP｜DANE (DNSSEC)｜首用信任 (TOFU)

Botan｜是｜是｜是｜是｜否｜否

GnuTLS｜是｜是｜是｜是｜是｜是

LibreSSL｜是｜是｜是｜是｜否｜否

MatrixSSL｜是｜是｜是｜是｜否｜否

Mbed TLS｜是｜是｜是｜否｜否｜否

NSS｜是｜是｜是｜是｜否｜否

OpenSSL｜是｜是｜是｜是｜是｜否

wolfSSL｜是｜是｜是｜是｜否｜否

## 加密算法

应用软件｜分组密码 的 操作模式｜流密码

AES GCM｜AES CCM｜AES CBC｜Camellia GCM｜Camellia CBC｜ARIA GCM｜ARIA CBC｜SEED CBC｜3DES EDE CBC(不安全)｜GOST 28147-89 CNT(提出)｜ChaCha20-Poly1305｜Null(insecure)

Botan｜是｜Yes｜Yes｜是｜是｜No｜No｜默认禁止｜默认禁止｜No｜是｜Not implemented

GnuTLS｜是｜是｜是｜是｜否｜否｜否｜默认禁止｜否｜是｜默认禁止

LibreSSL｜是｜No｜是｜否｜是｜否｜否｜否｜是｜是｜是｜默认禁止

MatrixSSL｜是｜否｜是｜否｜否｜否｜否｜是｜默认禁止｜否｜是｜默认禁止

Mbed TLS｜是｜是 ｜是｜是｜是｜是｜是｜否｜否｜否｜是｜Disabled by default at compile time

NSS｜是｜否｜是｜否｜是｜否｜否｜是｜是｜否｜是｜默认禁止

OpenSSL｜是｜默认禁止｜是｜否｜默认禁止｜默认禁止｜否｜默认禁止｜默认禁止｜是｜是｜默认禁止

wolfSSL｜是｜是｜是｜否｜是｜否｜否｜否｜是｜否｜是｜默认禁止

### 废弃算法

应用软件｜分组密码 的 操作模式｜流密码

IDEA CBCIDEA and DES have been removed from TLS 1.2.(不安全)｜DES CBC(不安全)｜DES-40 CBC(EXPORT, 不安全)｜RC2-40 CBC(EXPORT, 不安全)｜RC4-128(不安全)｜RC4-40(EXPORT, 不安全)

Botan｜否｜否｜否｜否｜No｜否

GnuTLS｜否｜否｜否｜否｜默认禁止｜否

LibreSSL｜是｜是｜No｜No｜Yes｜No

MatrixSSL｜是｜No｜No｜No｜默认禁止｜No

Mbed TLS｜否｜Disabled by default at compile time｜否｜No｜Disabled by default at compile time｜No

NSS｜是｜默认禁止｜默认禁止｜默认禁止｜Lowest priority｜默认禁止

OpenSSL｜默认禁止｜默认禁止｜否｜否｜默认禁止｜否

wolfSSL｜默认禁止｜否｜否｜否｜默认禁止｜否

## 支持的椭圆曲线

### 在 RFC 8446 (for TLS 1.3) 和 RFC 8422, 7027 (for TLS 1.2 and earlier) 中定义的曲线

适用的 TLS 版本｜TLS 1.3 and earlier｜TLS 1.2 and earlier

应用软件｜secp256r1prime256v1NIST P-256(0x0017, 23)｜secp384r1NIST P-384(0x0018, 24)｜secp521r1NIST P-521(0x0019, 25)｜X25519(0x001D, 29)｜X448(0x001E, 30)｜brainpoolP256r1(26)｜brainpoolP384r1(27)｜brainpoolP512r1(28)

Botan｜是｜是｜是｜是｜否｜是｜是｜是

BoringSSL｜是｜是｜Yes (disabled by default)｜是｜否｜否｜否｜否

BSAFE｜是｜是｜是｜否｜否｜否｜否｜否

GnuTLS｜是｜是｜是｜是｜是｜否｜否｜否

JSSE｜是｜是｜是｜Yesx25519: JDK 13+Ed25519:JDK 15+｜Yesx448: JDK 13+Ed448: JDK 15+｜否｜否｜否

LibreSSL｜是｜是｜是｜是｜否｜是｜是｜是

MatrixSSL｜是｜是｜是｜TLS 1.3 only｜否｜是｜是｜是

Mbed TLS｜是｜是｜是｜Primitive only｜Primitive only｜是｜是｜是

NSS｜是｜是｜是｜是｜否｜否｜否｜否

OpenSSL｜是｜是｜是｜是｜是｜是｜是｜是

Schannel Vista/2008, 7/2008R2, 8/2012, 8.1/2012R2, 10｜是｜是｜是｜否｜否｜否｜否｜否

Secure Transport｜是｜是｜是｜否｜否｜否｜否｜否

wolfSSL｜是｜是｜是｜是｜否｜是｜是｜是

Erlang/OTP SSL application｜是｜是｜是｜否｜否｜是｜是｜是

Implementation｜secp256r1prime256v1NIST P-256(0x0017, 23)｜secp384r1NIST P-384(0x0018, 24)｜secp521r1NIST P-521(0x0019, 25)｜X25519(0x001D, 29)｜X448(0x001E, 30)｜brainpoolP256r1(26)｜brainpoolP384r1(27)｜brainpoolP512r1(28)

### RFC 8422 中弃用的曲线

应用! sect163k1NIST K-163(1)｜sect163r1(2)｜sect163r2NIST B-163(3)｜sect193r1(4)｜sect193r2(5)｜sect233k1NIST K-233(6)｜sect233r1NIST B-233(7)｜sect239k1(8)｜sect283k1NIST K-283(9)｜sect283r1NIST B-283(10)｜sect409k1NIST K-409(11)｜sect409r1NIST B-409(12)｜sect571k1NIST K-571(13)｜sect571r1NIST B-571(14)

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

应用｜sect163k1NIST K-163(1)｜sect163r1(2)｜sect163r2NIST B-163(3)｜sect193r1(4)｜sect193r2(5)｜sect233k1NIST K-233(6)｜sect233r1NIST B-233(7)｜sect239k1(8)｜sect283k1NIST K-283(9)｜sect283r1NIST B-283(10)｜sect409k1NIST K-409(11)｜sect409r1NIST B-409(12)｜sect571k1NIST K-571(13)｜sect571r1NIST B-571(14)

应用｜secp160k1(15)｜secp160r1(16)｜secp160r2(17)｜secp192k1(18)｜secp192r1prime192v1NIST P-192(19)｜secp224k1(20)｜secp224r1NIST P-244(21)｜secp256k1(22)｜arbitrary prime curves(0xFF01)｜arbitrary char2 curves(0xFF02)

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)｜secp192r1prime192v1NIST P-192(19)｜secp224k1(20)｜secp224r1NIST P-244(21)｜secp256k1(22)｜arbitrary prime curves(0xFF01)｜arbitrary char2 curves(0xFF02)

Notes

## 数据完整性

应用软件｜HMAC-MD5｜HMAC-SHA1｜HMAC-SHA256/384｜AEAD｜GOST 28147-89 IMIT｜GOST R 34.11-94

Botan｜否｜是｜是｜是｜否｜否

GnuTLS｜是｜是｜是｜是｜否｜否

LibreSSL｜是｜是｜是｜是｜是｜是

MatrixSSL｜是｜是｜是｜是｜否｜否

Mbed TLS｜Yes｜是｜是｜是｜否｜否

NSS｜是｜是｜是｜是｜否｜否

OpenSSL｜是｜是｜是｜是｜是｜是

wolfSSL｜是｜是｜是｜是｜否｜否

## 压缩

请注意，CRIME 安全漏洞 利用了TLS压缩的优势，因此传统应用不会在TLS层启用压缩。HTTP 压缩是不相关的且不受此漏洞攻击的影响，但会被BREACH相关的攻击利用。

应用软件｜DEFLATE(不安全)

Botan｜否

GnuTLS｜默认禁用

LibreSSL｜否

MatrixSSL｜默认禁用

Mbed TLS｜默认禁用

NSS｜默认禁用

OpenSSL｜默认禁用

wolfSSL｜默认禁用

## 扩展

在本节中列出了每个应用支持的扩展。请注意，安全重新协商扩展对于HTTPS客户端安全至关重要。不执行TLS协议的客户端很容易受到攻击，无论客户端是否实施TLS重新协商。

Implementation｜Secure Renegotiation｜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

Botan｜是｜是｜是｜否｜否｜否｜是｜是｜是｜否｜是｜是｜是｜否｜未知

GnuTLS｜是｜是｜是｜弃用｜是｜是｜是｜是｜否｜是｜是｜是｜是｜否

LibreSSL｜是｜是｜是｜是｜否｜否?｜是｜是?｜否｜否｜否｜Server side only｜否｜是｜否

MatrixSSL｜是｜是｜是｜是｜否｜否｜是｜否｜是｜是｜否｜是｜是｜否｜未知

Mbed TLS｜是｜是｜是｜否｜否｜否｜是｜否｜是｜Disabled by default｜是｜是｜是｜否｜否

NSS｜是｜是｜是｜是｜否｜否｜是｜是｜否｜否｜否｜是｜是｜是｜未知

OpenSSL｜是｜是｜是｜是｜否｜否?｜是｜是?｜是｜否｜是｜是｜是｜是｜未知

wolfSSL｜是｜是｜是｜是｜否｜否｜是｜否｜是｜是｜是｜否｜是｜否｜未知

## 辅助加密

本节列出了已知的利用CPU指令集优化加密，或利用系统特定允许访问底层加密硬件加速或分离数据的设备。

应用软件｜PKCS #11 device｜Intel AES-NI｜VIA PadLock｜ARMv8-A｜Intel SGX｜ Intel QAT

GnuTLS｜是｜是｜是｜是｜否｜否

OpenSSL｜是｜是｜是｜是｜否

wolfSSL｜否｜是｜否｜是｜是｜是

## 系统特定的后端

本节列出了已知利用可用操作系统特定后端或另一个提供的后端的应用。

应用软件｜ /dev/crypto｜Windows CSP｜一般加密 CommonCrypto｜OpenSSL

GnuTLS｜是｜否｜否｜否

OpenSSL｜是｜否｜否｜是

wolfSSL｜否｜部分｜否｜否

## 加密模块/令牌支持

Implementation｜TPM support｜Hardware token support｜Objects identified via

Botan｜部分｜PKCS11

GnuTLS｜是｜PKCS11｜RFC7512 PKCS #11 URLs

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 (通过第三方模块)｜RFC7512 PKCS #11 URLs

wolfSSL｜是｜PKCS11

## 代码属性

应用软件｜属性｜可选属性

Botan｜C++11｜sqlitezlib (compression)bzip2 (compression)liblzma (compression)boostopenssl (crypto backend)trousers (TPM)

GnuTLS｜libcnettlegmp｜zlib (compression)p11-kit (PKCS #11)trousers (TPM)

MatrixSSL｜zlib (compression)

MatrixSSL-open｜libc or newlib

Mbed TLS｜libc｜libpkcs11-helper (PKCS #11)zlib (compression)

NSS｜libclibnspr4libsoftokn3libplc4libplds4｜zlib (compression)

OpenSSL｜libc｜zlib (压缩)

wolfSSL｜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_、mbedtls_md5_、mbedtls_x509、...｜Makefile, CMake, MSVC project workspaces, yotta｜API Reference + High Level and Module Level Documentation (HTML)｜Included (monolithic)｜否

NSS｜CERT_、SEC_、SECKEY_、NSS_、PK11_、SSL_、...｜Makefile｜Manual (HTML)｜Included, PKCS#11 based｜是 (separate package called nss_compat_ossl)

OpenSSL｜SSL_、SHA1_、MD5_、EVP_、...｜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｜线程安全｜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｜线程安全｜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｜NSPR PR_Send and PR_Recv. API to supply your own replacement.｜线程安全｜Platform dependent｜是 (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

## 其他

- SCTP — 含DTLS 支持
- DCCP — 含 DTLS 支持
- SRTP — 含 DTLS 支持 (DTLS-SRTP) 安全实时传输控制协议 (SRTCP)