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)