TLS的應用對比

維基媒體列表條目

安全傳輸層協議 (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日,​2年前​(2022-09-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年前​(2022-10-31[2][±] 加拿大
MatrixSSL[3] PeerSec Networks GNU GPLv2+ and commercial license PeerSec Networks C 4.5.1(2022年7月29日,​2年前​(2022-07-29[4][±] 美國
Mbed TLS (previously PolarSSL) Arm Apache License 2.0, GNU GPLv2+ and commercial license Arm Holdings C

3.2.1(2022年7月12日,​2年前​(2022-07-12 [5][±]

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日,​2年前​(2022-11-01[6][±] 澳大利亞/歐洲
wolfSSL (曾名為 CyaSSL) wolfSSL[7] GNU GPLv2+ and commercial license wolfSSL 公司.[8] C 5.4.0(2022年7月11日,​2年前​(2022-07-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]
  1. ^ 即使SSL 2.0不支持或由於向後兼容性而被禁用,客戶端問候也會被支持。
  2. ^ SSL / TLS協議的服務器端實現仍支持處理收到的v2兼容客戶端問候消息。[42]
  3. ^ 安全傳輸:在OS X 10.8中停用了SSL 2.0。在OS X 10.11和iOS 9中停用了SSL 3.0。TLS 1.1,1.2和DTLS在iOS 5.0和更高版本以及OS X 10.9和更高版本中均可用 。[43]
  4. [44]

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 [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
  1. ^ with Sun Sparc 5 w/ Sun Solaris v 2.4SE (ITSEC-rated)
  2. ^ with Sun Ultra-5 w/ Sun Trusted Solaris version 2.5.1 (ITSEC-rated)
  3. ^ with Solaris v8.0 with AdminSuite 3.0.1 as specified in UK IT SEC CC Report No. P148 EAL4 on a SUN SPARC Ultra-1
  4. ^ with these platforms; Red Hat Enterprise Linux Version 4 Update 1 AS on IBM xSeries 336 with Intel Xeon CPU, Trusted Solaris 8 4/01 on Sun Blade 2500 Workstation with UltraSPARC IIIi CPU
  5. ^ with these platforms; Red Hat Enterprise Linux v5 running on an IBM System x3550, Red Hat Enterprise Linux v5 running on an HP ProLiant DL145, Sun Solaris 10 5/08 running on a Sun SunBlade 2000 workstation, Sun Solaris 10 5/08 running on a Sun W2100z workstation

密鑰交換算法(僅限於證書)

編輯

本節列出了在不同應用軟件中中可用的證書驗證功能。

應用軟件 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] 默認禁止

支持的橢圓曲線

編輯

在 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
應用軟件 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)

RFC 8422 中棄用的曲線

編輯
應用! 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)


Notes
  1. ^ 引用錯誤:沒有為名為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_*
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[172] 是 (separate package called nss_compat_ossl[173])
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 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

其他

編輯
  • SCTP — 含DTLS 支持
  • DCCP — 含 DTLS 支持
  • SRTP — 含 DTLS 支持 (DTLS-SRTP) 安全實時傳輸控制協議 (SRTCP)

參考文獻

編輯
  1. ^ The GnuTLS Transport Layer Security Library. [2022-09-27]. 
  2. ^ LibreSSL: Releases. [2022-10-31]. 
  3. ^ The features listed are for the closed source version
  4. ^ Releases · matrixssl/matrixssl. GitHub. [2022-08-30] (英語). 
  5. ^ Releases · Mbed-TLS/mbedtls. GitHub. [2022-08-30] (英語). 
  6. ^ OpenSSL: Newslog. [2022-11-01]. 
  7. ^ wolfSSL product description. [2016-05-03]. (原始內容存檔於2017-09-08). 
  8. ^ wolfSSL Embedded SSL/TLS. [2016-05-03]. (原始內容存檔於2016-05-01). 
  9. ^ wolfSSL ChangeLog. 2022-07-11 [2022-08-29]. 
  10. ^ wolfSSL Release 5.4.0 (July 11, 2022). 2022-07-11 [2022-08-29]. 
  11. ^ [rfc:6176 RFC6176: Prohibiting Secure Sockets Layer (SSL) Version 2.0]
  12. ^ "CBC-Padding: Security Flaws in SSL, IPsec, WTLS,...", Serge Vaudenay, 2001 (PDF). [2018-06-22]. (原始內容存檔 (PDF)於2019-03-03). 
  13. ^ [rfc:7366 RFC7366: Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security]
  14. ^ Rizzo/Duong BEAST Countermeasures. [2018-06-22]. (原始內容存檔於2018-06-23). 
  15. ^ Möller, Bodo; Duong, Thai; Kotowicz, Krzysztof. This POODLE Bites: Exploiting The SSL 3.0 Fallback (PDF). September 2014 [2014-10-15]. (原始內容存檔 (PDF)於2014-10-14). 
  16. ^ TLSv1.2's Major Differences from TLSv1.1
  17. ^ 17.0 17.1 RFC 6347
  18. ^ Bard attack. CiteSeerX 10.1.1.61.5887 . 
  19. ^ draft-hickman-netscape-ssl-00. tools.ietf.org. [2018-06-22]. (原始內容存檔於2013-09-10). 
  20. ^ RFC 6101
  21. ^ RFC 2246
  22. ^ RFC 4346
  23. ^ 23.0 23.1 23.2 23.3 23.4 23.5 RFC 5246
  24. ^ RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3. datatracker.ietf.org. [2022-08-30]. (原始內容存檔於2021-05-14) (英語). 
  25. ^ tlswg/tls13-spec branches. tlswg.github.io. [2018-06-22]. (原始內容存檔於2016-01-04). 
  26. ^ RFC 4347
  27. ^ Version 1.11.13, 2015-01-11 — Botan. 2015-01-11 [2015-01-16]. (原始內容存檔於2015-01-09). 
  28. ^ 28.0 28.1 28.2 28.3 28.4 28.5 [gnutls-devel] GnuTLS 3.4.0 released. 2015-04-08 [2015-04-16]. (原始內容存檔於2015-04-16). 
  29. ^ MatrixSSL - News. [2014-11-09]. (原始內容存檔於2015-02-14). 
  30. ^ 30.0 30.1 30.2 30.3 Mbed TLS 3.0.0 branch released. GitHub. 2021-07-07 [2021-08-13]. (原始內容存檔於2021-08-13). 
  31. ^ 31.0 31.1 31.2 31.3 mbed TLS 2.0.0 released. 2015-07-10 [2015-07-14]. (原始內容存檔於2015-09-25). 
  32. ^ NSS 3.19 release notes. Mozilla Developer Network. Mozilla. [2015-05-06]. (原始內容存檔於2015-06-05). 
  33. ^ 33.0 33.1 NSS 3.14 release notes. Mozilla Developer Network. Mozilla. [2012-10-27]. (原始內容存檔於2013-01-17). 
  34. ^ NSS 3.15.1 release notes. Mozilla Developer Network. Mozilla. [2013-08-10]. (原始內容存檔於2013-09-22). 
  35. ^ NSS 3.39 release notes. Mozilla Developer Network. Mozilla. 2018-08-31 [2018-09-15]. (原始內容存檔於2021-12-07). 
  36. ^ NSS 3.16.2 release notes. Mozilla Developer Network. Mozilla. 2014-06-30 [2014-06-30]. (原始內容存檔於2021-12-07). 
  37. ^ 37.00 37.01 37.02 37.03 37.04 37.05 37.06 37.07 37.08 37.09 37.10 37.11 37.12 OpenBSD 5.6 Released. 2014-11-01 [2015-01-20]. (原始內容存檔於2016-01-31). 
  38. ^ LibreSSL 2.3.0 Released. 2015-09-23 [2015-09-24]. (原始內容存檔於2021-02-25). 
  39. ^ LibreSSL 3.3.3 Released. 2021-05-04 [2021-05-04]. (原始內容存檔於2022-08-30). 
  40. ^ 40.00 40.01 40.02 40.03 40.04 40.05 40.06 40.07 40.08 40.09 40.10 40.11 Inc., OpenSSL Foundation,. /news/openssl-1.1.0-notes.html. www.openssl.org. [2018-06-22]. (原始內容存檔於2018-03-17). 
  41. ^ [wolfssl] wolfSSL 3.6.6 Released. 2015-08-20 [2015-08-24]. (原始內容存檔於2015-10-17). 
  42. ^ NSS 3.24 release notes. Mozilla Developer Network. Mozilla. [2016-06-19]. (原始內容存檔於2016-08-26). 
  43. ^ Technical Note TN2287: iOS 5 and TLS 1.2 Interoperability Issues. iOS Developer Library. Apple Inc. [2012-05-03]. (原始內容存檔於2015-04-03). 
  44. ^ Qualys SSL Labs - Projects / User Agent Capabilities. dev.ssllabs.com. [2018-06-22]. (原始內容存檔於2015-09-19). 
  45. ^ Bug 663320 - (NSA-Suite-B-TLS) Implement RFC6460 (NSA Suite B profile for TLS). Mozilla. [2014-05-19]. (原始內容存檔於2022-08-30). 
  46. ^ 46.0 46.1 46.2 46.3 46.4 Major changes between OpenSSL 1.0.1l and OpenSSL 1.0.2 [22 Jan 2015]. [2015-01-22]. (原始內容存檔於September 4, 2014). 
  47. ^ "Secure or Compliant, Pick One" Steve Marquess blog. [2018-06-22]. (原始內容存檔於2013-12-27). 
  48. ^ Search - Cryptographic Module Validation Program - CSRC. csrc.nist.gov. [2018-06-22]. (原始內容存檔於2014-12-26). 
  49. ^ "Is botan FIPS 140 certified?" Frequently Asked Questions — Botan. [2014-11-16]. (原始內容存檔於2014-11-29). 
  50. ^ "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頁面存檔備份,存於網際網路檔案館
  51. ^ Matrix SSL Toolkit (PDF). [2022-08-30]. (原始內容存檔 (PDF)於2021-07-07). 
  52. ^ Limited, ARM. Is mbed TLS FIPS certified? - Knowledge Base. polarssl.org. [2022-08-30]. (原始內容存檔於2014-12-15). 
  53. ^ FIPS Validation - MozillaWiki. wiki.mozilla.org. [2022-08-30]. (原始內容存檔於2022-08-30). 
  54. ^ OpenSSL and FIPS 140-2. [2018年6月22日]. (原始內容存檔於2013年5月28日). 
  55. ^ wolfCrypt FIPS 140-2 Information - wolfSSL Embedded SSL/TLS Library. [2018-06-22]. (原始內容存檔於2015-04-30). 
  56. ^ 56.00 56.01 56.02 56.03 56.04 56.05 56.06 56.07 56.08 56.09 56.10 56.11 56.12 56.13 56.14 56.15 56.16 56.17 56.18 56.19 56.20 56.21 56.22 56.23 56.24 56.25 56.26 56.27 56.28 RFC 4492
  57. ^ 58.0 58.1 58.2 58.3 58.4 LibreSSL 2.1.2 released. 2014-12-09 [2015-01-20]. (原始內容存檔於2022-08-30). 
  58. ^ NSS 3.20 release notes. Mozilla. 2015-08-19 [2015-08-20]. (原始內容存檔於2021-12-07). 
  59. ^ 60.0 60.1 60.2 60.3 Mozilla.org. Bug 518787 - Add GOST crypto algorithm support in NSS. [2014-07-01]. (原始內容存檔於2022-08-30). 
  60. ^ 61.0 61.1 61.2 61.3 Mozilla.org. Bug 608725 - Add Russian GOST cryptoalgorithms to NSS and Thunderbird. [2014-07-01]. (原始內容存檔於2022-08-30). 
  61. ^ 62.0 62.1 62.2 62.3 OpenSSL: CVS Web Interface. [2014-11-12]. (原始內容存檔於2013-04-15). 
  62. ^ 63.0 63.1 63.2 RFC 5054
  63. ^ 64.0 64.1 64.2 RFC 4279
  64. ^ RFC 5489
  65. ^ RFC 2712
  66. ^ 67.0 67.1 67.2 LibreSSL 2.0.4 released. [2014-08-04]. (原始內容存檔於2019-03-23). 
  67. ^ 68.0 68.1 68.2 Bug 405155 - add support for TLS-SRP, rfc5054. Mozilla. [2014-01-25]. (原始內容存檔於2022-08-30). 
  68. ^ 69.0 69.1 69.2 69.3 Bug 306435 - Mozilla browsers should support the new IETF TLS-PSK protocol to help reduce phishing. Mozilla. [2014-01-25]. (原始內容存檔於2022-08-30). 
  69. ^ Bug 1170510 - Implement NSS server side support for DH_anon. Mozilla. [2015-06-03]. (原始內容存檔於2022-08-30). 
  70. ^ Bug 236245 - Update ECC/TLS to conform to RFC 4492. Mozilla. [2014-06-09]. (原始內容存檔於2022-08-30). 
  71. ^ Changes between 0.9.6h and 0.9.7 [31 Dec 2002]. [2016-01-29]. (原始內容存檔於2016-09-13). 
  72. ^ 73.0 73.1 Changes between 0.9.8n and 1.0.0 [29 Mar 2010]. [2016-01-29]. (原始內容存檔於2016-09-13). 
  73. ^ wolfSSL (Formerly CyaSSL) Release 3.9.0 (03/18/2016). 2016-03-18 [2016-04-05]. (原始內容存檔於2016-03-16). 
  74. ^ RFC 5280
  75. ^ RFC 3280
  76. ^ RFC 2560
  77. ^ RFC 6698, RFC 7218
  78. ^ MatrixSSL 3.8.3. [2017-01-18]. (原始內容存檔於2017-01-19). 
  79. ^ mbed TLS 2.0 defaults implement best practices. [2017-01-18]. (原始內容存檔於2022-03-08). 
  80. ^ Bug 672600 - Use DNSSEC/DANE chain stapled into TLS handshake in certificate chain validation. Mozilla. [2014-06-18]. (原始內容存檔於2018-04-06). 
  81. ^ RFC 5288, RFC 5289
  82. ^ RFC 6655, RFC 7251
  83. ^ RFC 6367
  84. ^ RFC 5932, RFC 6367
  85. ^ 86.0 86.1 RFC 6209
  86. ^ RFC 4162
  87. ^ Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN. sweet32.info. [2018-06-22]. (原始內容存檔於2018-04-08). 
  88. ^ RFC 7905
  89. ^ 90.0 90.1 Version 1.11.12, 2015-01-02 — Botan. 2015-01-02 [2015-01-09]. (原始內容存檔於2015-01-10). 
  90. ^ gnutls 3.6.0. 2017-09-21 [2018-01-07]. (原始內容存檔於2018-01-18). 
  91. ^ gnutls 3.4.12. 2016-05-20 [2016-05-29]. (原始內容存檔於2016-10-13). 
  92. ^ 93.0 93.1 93.2 93.3 Changes in 3.8.3. GitHub. [2016-06-19]. [永久失效連結]
  93. ^ PolarSSL 1.3.8 release notes. [2022-08-30]. (原始內容存檔於2014-07-15). 
  94. ^ 95.0 95.1 Mbed TLS 2.11.0, 2.7.4 and 2.1.13 released. [2018-08-30]. (原始內容存檔於2021-04-14). 
  95. ^ Mbed TLS 2.12.0, 2.7.5 and 2.1.14 released. [2018-08-30]. (原始內容存檔於2021-07-29). 
  96. ^ NSS 3.25 release notes. Mozilla Developer Network. Mozilla. [2016-07-01]. (原始內容存檔於2021-12-07). 
  97. ^ Bug 940119 - libssl does not support any TLS_ECDHE_*_CAMELLIA_*_GCM cipher suites. Mozilla. [2013-11-19]. (原始內容存檔於2022-08-30). 
  98. ^ NSS 3.12 is released. [2013-11-19]. (原始內容存檔於2019-12-08). 
  99. ^ NSS 3.12.3 Release Notes. Mozilla Developer Network. Mozilla. [2014-07-01]. (原始內容存檔於2021-05-10). 
  100. ^ NSS 3.23 release notes. Mozilla Developer Network. Mozilla. [2016-03-09]. (原始內容存檔於2021-04-14). 
  101. ^ openssl/CHANGES at OpenSSL_1_0_1-stable · openssl/openssl. [2015-01-20]. (原始內容存檔於2016-01-31). 
  102. ^ RFC 5469
  103. ^ 存档副本. [2018-06-22]. (原始內容存檔於2018-04-08). 
  104. ^ Version 1.11.15, 2015-03-08 — Botan. 2015-03-08 [2015-03-11]. (原始內容存檔於2015-05-15). 
  105. ^ NSS 3.15.3 release notes. Mozilla Developer Network. Mozilla. [2014-07-13]. (原始內容存檔於2014-06-05). 
  106. ^ MFSA 2013-103: Miscellaneous Network Security Services (NSS) vulnerabilities. Mozilla. Mozilla. [2014-07-13]. (原始內容存檔於2014-07-14). 
  107. ^ 108.0 108.1 wolfSSL (Formerly CyaSSL) Release 3.7.0 (10/26/2015). 2015-10-26 [2015-11-19]. (原始內容存檔於2015-11-20). 
  108. ^ 109.0 109.1 109.2 109.3 109.4 RFC 8446
  109. ^ 110.0 110.1 110.2 110.3 110.4 RFC 8422
  110. ^ 111.0 111.1 111.2 RFC 7027
  111. ^ 112.0 112.1 112.2 Version 1.11.5, 2013-11-10 — Botan. 2013-11-10 [2015-01-23]. (原始內容存檔於2014-12-03). 
  112. ^ An overview of the new features in GnuTLS 3.5.0. 2016-05-02 [2016-12-09]. (原始內容存檔於2016-12-20). 
  113. ^ gnutls 3.6.12. 2020-02-01 [2021-08-31]. (原始內容存檔於2022-08-30). 
  114. ^ 115.0 115.1 JDK 13 Early-Access Release Notes. [2019-06-20]. (原始內容存檔於2020-04-01). 
  115. ^ 116.0 116.1 JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA). [2022-01-06]. (原始內容存檔於2022-01-06). 
  116. ^ LibreSSL 2.5.1 release notes. OpenBSD. 2017-01-31 [2017-02-23]. (原始內容存檔於2022-08-30). 
  117. ^ MatrixSSL 4.0 changelog. GitHub. [2018-09-18]. (原始內容存檔於2022-08-30). 
  118. ^ PolarSSL 1.3.3 released. 2013-12-31 [2015-01-23]. (原始內容存檔於2014-12-18). 
  119. ^ Mbed TLS 2.9.0, 2.7.3 and 2.1.12 released. [2018-08-30]. (原始內容存檔於2021-04-14). 
  120. ^ 121.0 121.1 121.2 PolarSSL 1.3.1 released. 2013-10-15 [2015-01-23]. (原始內容存檔於2015-01-23). 
  121. ^ Bug 957105 - Add support for curve25519 Key Exchange and UMAC MAC support for TLS. Mozilla. [2017-02-23]. (原始內容存檔於2022-08-30). 
  122. ^ Bug 1305243 - Support for X448. Mozilla. [2022-08-04]. (原始內容存檔於2022-08-04). 
  123. ^ Bug 1597057 - Curve448 or named Ed448-Goldilocks support needed (both X448 key exchange and Ed448 signature algorithm ). Mozilla. [2022-08-04]. 
  124. ^ 125.0 125.1 125.2 Bug 943639 - Support for Brainpool ECC Curve (rfc5639). Mozilla. [2014-01-25]. (原始內容存檔於2022-08-30). 
  125. ^ OpenSSL 1.1.0x Release Notes. 25 August 2016 [18 May 2018]. (原始內容存檔於18 May 2018). 
  126. ^ OpenSSL  GitHub Issue #487 Tracker. GitHub. 2 December 2015 [18 May 2018]. (原始內容存檔於2018-10-06). 
  127. ^ OpenSSL 1.1.1x Release Notes. 1 May 2018 [18 May 2018]. (原始內容存檔於2018-05-18). 
  128. ^ OpenSSL  GitHub Issue #5049 Tracker. GitHub. 9 January 2018 [18 May 2018]. (原始內容存檔於2019-02-18). 
  129. ^ wolfSSL (Formerly CyaSSL) Release 3.4.6 (03/30/2015). 2015-03-30 [2015-11-19]. (原始內容存檔於2016-03-16). 
  130. ^ 131.0 131.1 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. A cross-protocol attack on the TLS protocol. Proceedings of the 2012 ACM conference on Computer and communications security (PDF). 2012: 62–72 [2018-06-22]. ISBN 978-1-4503-1651-4. (原始內容存檔 (PDF)於2015-07-06). 
  131. ^ RFC 3749
  132. ^ RFC 5746
  133. ^ 134.0 134.1 134.2 134.3 RFC 6066
  134. ^ RFC 7301
  135. ^ RFC 6091
  136. ^ RFC 4680
  137. ^ RFC 5077
  138. ^ RFC 5705
  139. ^ RFC 7366
  140. ^ RFC 7507
  141. ^ RFC 7627
  142. ^ RFC 7685
  143. ^ RFC 7250
  144. ^ Version 1.11.16, 2015-03-29 — Botan. 2016-03-29 [2016-09-08]. (原始內容存檔於2022-08-30). 
  145. ^ Version 1.11.10, 2014-12-10 — Botan. 2014-12-10 [2014-12-14]. (原始內容存檔於2014-12-03). 
  146. ^ 147.0 147.1 Version 1.11.26, 2016-01-04 — Botan. 2016-01-04 [2016-02-25]. (原始內容存檔於2022-08-30). 
  147. ^ gnutls 3.2.0. [2015-01-26]. (原始內容存檔於2016-01-31). 
  148. ^ 存档副本. [2018-06-22]. (原始內容存檔於2018-02-18). 
  149. ^ gnutls 3.4.4. [2015-08-25]. (原始內容存檔於2017-07-17). 
  150. ^ %DUMBFW priority keyword. [2017-04-30]. (原始內容存檔於2017-04-17). 
  151. ^ LibreSSL 2.1.3 released. 2015-01-22 [2015-01-22]. (原始內容存檔於2016-01-31). 
  152. ^ LibreSSL 2.1.4 released. 2015-03-04 [2015-03-04]. (原始內容存檔於2019-03-23). 
  153. ^ MatrixSSL - News. 2014-12-04 [2015-01-26]. (原始內容存檔於2015-02-14). 
  154. ^ Download overview - PolarSSL. 2014-04-11 [2015-01-26]. (原始內容存檔於2015-02-09). 
  155. ^ 156.0 156.1 156.2 mbed TLS 1.3.10 released. 2015-02-08 [2015-02-09]. (原始內容存檔於2015-02-09). 
  156. ^ 157.0 157.1 NSS 3.15.5 release notes. Mozilla Developer Network. Mozilla. [2015-01-26]. (原始內容存檔於January 26, 2015). 
  157. ^ Bug 961416 - Support RFC6091 - Using OpenPGP Keys for Transport Layer Security Authentication (TLS1.2). Mozilla. [2014-06-18]. (原始內容存檔於2022-08-30). 
  158. ^ Bug 972145 - Implement the encrypt-then-MAC TLS extension. Mozilla. [2014-11-06]. (原始內容存檔於2022-08-30). 
  159. ^ NSS 3.17.1 release notes. [2014-10-17]. (原始內容存檔於2019-04-19). 
  160. ^ NSS 3.21 release notes. [2015-11-14]. (原始內容存檔於2021-12-07). 
  161. ^ 存档副本. [2018-06-22]. (原始內容存檔於2015-08-13). 
  162. ^ OpenSSL 1.1.0 Release Notesl. [永久失效連結]
  163. ^ Major changes between OpenSSL 1.0.1f and OpenSSL 1.0.1g [7 Apr 2014]. 2014-04-07 [2015-02-10]. (原始內容存檔於2015-01-20). 
  164. ^ wolfSSL Version 4.2.0 is Now Available!. 22 October 2019 [2021-08-13]. (原始內容存檔於2022-08-30). 
  165. ^ 存档副本. [2018-06-22]. (原始內容存檔於2016-12-20). 
  166. ^ https://habrahabr.ru/post/134725/頁面存檔備份,存於網際網路檔案館), http://forum.rutoken.ru/topic/1639/頁面存檔備份,存於網際網路檔案館), https://dev.rutoken.ru/pages/viewpage.action?pageId=18055184頁面存檔備份,存於網際網路檔案館(俄文)
  167. ^ git.openssl.org Git - openssl.git/commitdiff. git.openssl.org. [2018-06-22]. (原始內容存檔於2018-01-22). 
  168. ^ wolfSSL Asynchronous Intel QuickAssist Support - wolfSSL. 2017-01-18. 
  169. ^ 170.0 170.1 RFC 7512
  170. ^ libp11: PKCS#11 wrapper library. 2018-01-19 [2018-06-22]. (原始內容存檔於2018-06-11) –透過GitHub. 
  171. ^ On the fly replaceable/augmentable.
  172. ^ Nss compat ossl - Fedora Project Wiki. fedoraproject.org. [2022-08-30]. (原始內容存檔於2022-08-30). 
  173. ^ 174.0 174.1 NSPR. Mozilla Developer Network. [2022-08-30]. (原始內容存檔於2013-03-07). 
  174. ^ For Unix/Linux it uses /dev/urandom if available, for Windows it uses CAPI. For other platforms it gets data from clock, and tries to open system files. NSS has a set of platform dependent functions it uses to determine randomness.
  1. ^ This algorithm is not defined yet as TLS cipher suites in RFCs, is proposed in drafts.
  2. ^ authentication only, no encryption
  3. ^ This algorithm is implemented in an NSS fork used by Pale Moon.
  4. ^ 4.0 4.1 IDEA and DES have been removed from TLS 1.2.[103]
  5. ^ 5.0 5.1 5.2 40 bits strength of cipher suites were designed to operate at reduced key lengths in order to comply with US regulations about the export of cryptographic software containing certain strong encryption algorithms (see Export of cryptography from the United States). These weak suites are forbidden in TLS 1.1 and later.
  6. ^ The RC4 attacks weaken or break RC4 used in SSL/TLS. Use of RC4 is prohibited by RFC 7465.
  7. ^ The RC4 attacks weaken or break RC4 used in SSL/TLS.