传输层安全 | 安全套接字层 (SSL) 和 SSL架构

17 Mar 2025 | 5 分钟阅读

传输层安全

传输层实际上通过利用 TCP(或 SCTP)作为面向连接的协议,为应用层提供安全保障。这些应用程序的消息首先封装在安全协议包中,然后再封装在 TCP 中。由于安全性的性质需要实体之间建立连接,因此使用 UDP 的应用程序无法利用这些安全服务。传输层安全不适用于电子邮件,这是另一种应用程序。我们需要为这种应用程序提供特定的安全规定,因为它只允许发送方和接收方之间进行单向通信。这将在下面的部分中讨论。

目前,用于在传输层提供安全的两个最常用的协议是安全套接字层 (SSL) 和传输层安全 (TLS) 协议。实际上,后者是 IETF 对前者的修改版本。TLS 与本节讨论的 SSL 非常相似。TLS 和 SSL 在互联网范式中的位置如下图所示。

Transport Layer Security | Secure Socket Layer (SSL) and SSL Architecture

这些协议旨在保证数据保密性、数据完整性以及服务器和客户端身份验证等。使用 TCP 服务的应用层客户端/服务器程序(如 HTTP)可以将其数据封装在 SSL 数据包中 (HTTPS)。如果服务器和客户端都能够执行 SSL(或 TLS)程序,则客户端可以使用 URL https://... 而不是 http://... 来允许 HTTP 消息封装在 SSL(或 TLS)数据包中。例如,在线购物者可以通过互联网安全地交换银行信息。

安全套接字层 (SSL) 架构

SSL 的创建是为了保护和压缩应用层生成的数据。在大多数情况下,任何应用层协议都可以通过 SSL 发送数据;然而,HTTP 是最常用的协议。程序返回经过签名、加密和压缩(可选)的数据。此时,数据由可靠的传输层协议(如 TCP)接收。1994 年,Netscape 创建了 SSL。1995 年,版本 2 和 3 发布。本节讨论 SSLv3。

SSL 提供的服务

SSL 提供了针对从应用层接收到的数据的多项服务:

  • 分段 - SSL 首先将数据分成 214 字节或更小的块。
  • 压缩 - 客户端和服务器协商一致的无损压缩技术之一用于压缩每个数据片段。此服务不是必需的。
  • 消息完整性 - SSL 使用带密钥的哈希函数生成 MAC,以保护数据的完整性。
  • 机密性 - 严格来说,对称密钥加密用于加密原始数据和 MAC,以保持机密性。
  • 成帧 - 加密负载接收一个报头。之后,负载由可靠的传输层协议接收。

密钥交换算法 - 客户端和服务器必须各有自己独特的一组加密秘密,才能交换经过授权和机密的通信。然而,首先必须在双方之间建立一个预主密钥才能生成这些秘密。此预主密钥使用 SSL 指定的密钥交换协议之一建立。

加密/解密算法 - 客户端和服务器也必须就一组加密和解密技术达成一致。

哈希算法 - SSL 使用哈希算法来确保消息完整性(消息认证)。为此,已定义了许多哈希算法。

密码套件 - 每个 SSL 会话都有一个独特的密码套件,由密钥交换、哈希和加密算法的交互定义。

压缩算法 - 在 SSL 中,压缩不是必需的。没有定义的压缩算法。因此,系统可以自由选择其选择的任何压缩策略。

加密参数生成 - SSL 需要六个加密秘密:两个 IV(初始化向量)和四个密钥,以确保消息完整性和机密性。对于消息认证、加密以及用作计算中的初始块,客户端需要一个密钥。服务器也需要它。SSL 的一个要求是,用于一个方向和另一个方向的密钥是不同的。一个方向的攻击不会影响另一个方向。生成参数的过程如下:

  1. 客户端和服务器之间交换两个随机数,一个由客户端生成,另一个由服务器生成。
  2. 客户端和服务器使用已建立的密钥交换技术之一交换一个预主密钥。
  3. 图 1 说明了如何使用两个哈希算法(SHA-1 和 MD5)将预主密钥转换为 48 字节的主密钥。
  4. 图 2 说明了如何利用同一组哈希函数来生成可变长度的密钥材料,然后在其前面添加各种常量。重复该模块,直到生成足够的密钥材料。请记住,所选的密码套件和此套件所需的密钥数量决定了密钥材料块的长度。
  5. 图 3 说明了如何从主要材料中获取六个不同的秘密。

会话和连接 - SSL 区分连接和会话。客户端和服务器通过会话连接。会话建立后,双方共享数据,例如会话标识、验证双方的证书(如果需要)、压缩技术、密码套件以及用于生成消息认证加密密钥的主密钥。

会话的创建是必需的,但不足以让两个实体相互通信和交换数据。双方在生成使用主密钥传输包含身份验证和隐私的消息所需的密钥和参数时交换两个随机整数。

Transport Layer Security | Secure Socket Layer (SSL) and SSL Architecture
Transport Layer Security | Secure Socket Layer (SSL) and SSL Architecture

一个会话中可以有多个连接。在同一会话中,两个参与者之间的链接可以断开然后修复。当连接断开时,双方可以选择结束会话,但这并非必需。会话可以停止并重新启动。

Transport Layer Security | Secure Socket Layer (SSL) and SSL Architecture