TLS的应用对比

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

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

概述

协议支持 
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。

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是保护最高机密信息所必需的。

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

密钥交换算法（仅限于证书） 
本节列出了在不同应用软件中中可用的证书验证功能。

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

证书验证算法

加密算法

废弃算法

支持的椭圆曲线

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

RFC 8422 中弃用的曲线 

 Notes

数据完整性

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

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

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

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

加密模块/令牌支持

代码属性

开发环境

移植问题

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

参考文献 

加密软件
傳輸層安全協議