TLS 与 SSL 的区别

2,578 阅读5分钟

**注意:**在学习 TLS 和 SSL 的区别前,请先了解 HTTPS 的加密原理

image.png

SSL

SSL(Secure Socket Layer,安全套接字层),位于网络层TCP/IP 协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL 记录协议和 SSL 握手协议。

SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP )之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密匙等。

TLS

TLS(Transport Layer Security Protocol):安全传输层协议。

TLS 用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。

较低的层为 TLS 记录协议,位于某个可靠的传输协议(如 TCP )上

TLS 记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接受其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。

TLS 记录协议提供的连接安全性具有两个基本特性:

  • 私有——对称加密用以数据加密(DES、RC4等)。 对称加密所产生的密钥对每个连接都是唯一的,且此密钥基于另一个协议(如握手协议)协商。记录协议也可以不加密使用。
  • 可靠——信息传输包括使用密钥的 MAC 进行信息完整性检查。 安全哈希功能(SHA、MD5 等)用于 MAC 计算。记录协议在没有 MAC 的情况下也能操作,但一般只能用于这种模式,即有另一个协议正在使用记录协议传输协商安全参数。

TLS 握手协议提供的连接安全具有三个基本属性:

  • 可以使用对称加密,或者非对称加密来认证对等方的身份。该认证是可选的,但至少需要一个结点方。
  • 共享加密密钥的协商是安全的。对偷窃者来说协商加密是难以获得的。此外经过认证过的连接不能获得加密,即使是进入连接中间的攻击者也不能。
  • 协商是可靠的。没有经过通信方成员的检测,任何攻击者都不能修改通信协商。

TLS 的最大优势就在于:TLS是独立于应用协议。高层协议可以透明地分布在 TLS 协议上面。

然而, TLS 标准并没有规定应用程序如何在 TLS 上增加安全性;它把如何启动 TLS 握手协议以及如何解释交换的认证证书的决定权留给协议的设计者和实施者来判断。

两者的关系

关系就是并列关系。

最新版本的 TLS 是 IETF(Internet Engineering Task Force,Internet 工程任务组)制定的一种新的协议,它建立在 SSL 3.0 协议规范之上,是 SSL 3.0 的后续版本。

在 TLS 和 SSL 3.0 之间存在着显著的差别,主要是它们所支持的加密算法不同,所以 TLS 和 SSL 3.0 不能互操作。

两者的差异

  1. 版本号:TLS 记录格式与 SSL 记录格式相同,但版本号的值不同,TLS 的版本 1.0 使用的版本号为 SSL v3.1

  2. 报文鉴别码:SSL v3.0 和 TLS 的 MAC 算法及 MAC 计算的范围不同。

    1. TLS 使用了 RFC-2140 定义的 HMAC 算法。HMAC 算法采用的是异或运算

    2. SSL v3.0 中,填充字节与密钥之间采用的是连接运算

  3. 伪随机函数:TLS 使用了称为 PRF 的伪随机函数来将密钥扩展成数据块,是更安全的方式。

  4. 报警代码:TLS 支持几乎所有的 SSL v3.0 报警代码,而且 TLS 还补充定义了很多报警代码。

    1. 如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等

  5. 密文族和客户证书:SSL v3.0 和 TLS 存在少量差别,即 TLS 不支持 Fortezza 密钥交换、加密算法和客户证书。

  6. certificate_verify 和 finished消息:SSLv3.0 和 TLS 在用 certificate_verifyfinished 消息计算 MD5 和 SHA-1 散列码时,计算的输入有少许差别,但安全性相当。

  7. 加密计算:TLS 与 SSLv3.0 在计算主密值(master secret)时采用的方式不同。

  8. 填充:用户数据加密之前需要增加的填充字节。

    1. 在 SSL 中,填充后的数据长度要达到密文块长度的最小整数倍

    2. 而在 TLS 中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击。

TLS 的主要增强内容

TLS 的主要目标是使 SSL 更安全,并使协议的规范更精确和完善。TLS 在 SSL v3.0 的基础上,提供了一下增强内容:

  1. 更安全的 MAC 算法
  2. 更严密的警报
  3. “灰色区域”规范的更明确的定义

TLS 对于安全性的改进

  1. 对于消息认证使用密钥散列法:TLS 使用”消息认证代码的密钥散列法”(HAMC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变更。
  2. 增强的伪随机功能(PRF):PRF 生成密钥数据。在 TLS 中,HMAC 定义 PRF。PRF 使用两种散列算法保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。
  3. 改进的已完成消息验证:TLS 将已完成消息基于 PRF 和 HMAC 值之上,这也比 SSL v3.0 更安全。
  4. 一致证书处理:与 SSL v3.0 不同, TLS 试图指定必须在 TLS 之间实现交换的证书类型。
  5. 特定警报消息:TLS 提供更多的特定和附加警报,以指示任一会话端点检测到的问题。