传输层加密协议 —TLS

时间:2024-11-11
新悦网络

编辑:

传输层安全性( TLS ) 是一种加密协议,旨在为计算机网络上的通信提供安全保障。该协议广泛应用于电子邮件、即时消息和IP 语音等应用中,但其在保护HTTPS 方面的应用最为广泛。

TLS 协议的主要目的是通过使用加密技术(例如使用证书)在两个或多个通信计算机应用程序之间提供安全性,包括隐私性(机密性)、完整性和真实性。它在表示层运行,本身由两层组成:TLS 记录和 TLS握手协议。

与之密切相关的数据报传输层安全性( DTLS ) 是一种通信协议,可为基于数据报的应用程序提供安全性。在技术写作中,当“( D ) TLS ”适用于两个版本时,通常会提到它。

 

描述


客户端-服务器应用程序使用 TLS协议以一种旨在防止窃听和篡改的方式通过网络进行通信。

由于应用程序可以使用或不使用 TLS(或 SSL)进行通信,因此客户端必须请求服务器建立 TLS 连接。实现此目的的主要方法之一是使用不同的端口号进行 TLS 连接。端口 80 通常用于未加密的HTTP流量,而端口 443 是用于加密HTTPS流量的常用端口。另一种机制是向服务器发出特定于协议的STARTTLS请求,以将连接切换到 TLS - 例如,在使用邮件和新闻协议时。

一旦客户端和服务器同意使用 TLS,它们就会使用握手程序协商有状态连接。协议使用非对称密码握手来建立密码设置,以及会话特定的共享密钥,使用对称密码对进一步的通信进行加密。在此握手过程中,客户端和服务器就用于建立连接安全性的各种参数达成一致:

  • 当客户端连接到启用 TLS 的服务器并请求安全连接时,握手开始,并且客户端提供支持的密码套件(密码和哈希函数)列表。
  • 从此列表中,服务器选择它也支持的密码和哈希函数,并将该决定通知客户端。
  • 然后,服务器通常会以数字证书的形式提供身份证明。证书包含服务器名称、保证证书真实性的受信任证书颁发机构(CA) 以及服务器的公共加密密钥。
  • 客户端在继续之前确认证书的有效性。
  • 要生成用于安全连接的会话密钥,客户端可以执行以下操作之一:
    • 使用服务器的公钥加密一个随机数,并将结果发送给服务器(只有服务器才能使用其私钥解密);然后双方使用该随机数生成唯一的会话密钥,用于会话期间的后续数据加密和解密,或者
    • 使用Diffie-Hellman 密钥交换安全地生成一个随机且唯一的会话密钥,用于加密和解密,该密钥具有前向保密的附加属性:如果服务器的私钥将来被泄露,则它不能用于解密当前会话,即使该会话被第三方拦截和记录。

这样就结束了握手并开始建立安全连接,该连接使用会话密钥进行加密和解密,直到连接关闭。如果上述任何一个步骤失败,则 TLS 握手失败,并且不会创建连接。

TLS 和 SSL 不能简单地归入OSI 模型或TCP/IP 模型中的任何单个层。TLS 运行于“某些可靠的传输协议( TCP)之上”,这意味着它位于传输层之上。它为更高层提供加密,这通常是表示层的功能。但是,应用程序通常将 TLS 用作传输层,即使使用 TLS 的应用程序必须主动控制发起 TLS 握手和处理交换的身份验证证书。

当受 TLS 保护时,客户端和服务器之间的连接将具有以下所有属性: 

  • 该连接是私密的(或具有保密性),因为使用对称密钥算法来加密传输的数据。此对称加密的密钥是针对每个连接唯一生成的,并且基于在会话开始时协商的共享密钥。在传输第一个字节的数据之前,服务器和客户端会协商使用哪种加密算法和加密密钥的详细信息(见下文)。共享密钥的协商既安全(协商的密钥对窃听者不可用,也无法获得,即使是将自己置于连接中间的攻击者也无法获得),又可靠(没有攻击者可以在协商期间修改通信而不被发现)。
  • 可以使用公钥加密技术来验证通信双方的身份。此验证对于服务器来说是必需的,对于客户端来说是可选的。
  • 该连接是可靠的(或具有完整性),因为传输的每条消息都包括使用消息认证码进行的消息完整性检查,以防止在传输过程中发生未检测到的数据丢失或更改。

TLS 支持多种不同的方法来交换密钥、加密数据和验证消息完整性。因此,TLS 的安全配置涉及许多可配置参数,并且并非所有选项都提供上面列表中描述的所有隐私相关属性。

有人试图破坏 TLS 试图提供的通信安全性,并且该协议已多次修订以应对这些安全威胁。在发现潜在的安全漏洞后,网络浏览器开发人员已多次修改其产品以防御这些漏洞。

 

协议

发布

地位

SSL 1.0

未发表

未发表

SSL 2.0

1995

2011 年已弃用(RFC  6176)

SSL 3.0

1996

2015 年已弃用(RFC  7568)

TLS 1.0

1999

2021 年弃用 ( RFC  8996 )

TLS 1.1

2006

2021 年弃用 ( RFC  8996 )

TLS 1.2

2008

自 2008 年开始使用

TLS 1.3

2018

自 2018 年开始使用

 

SSL 和 TLS 协议

 

数据报传输层安全性


数据报传输层安全性(简称 DTLS)是一种相关通信协议,它允许基于数据报的应用程序以专门设计的方式进行通信,从而为它们提供安全性以防止窃听、篡改或消息伪造。DTLS 协议基于面向流的传输层安全性 (TLS) 协议,旨在提供类似的安全保障。但是,与 TLS 不同,它可以与大多数面向数据报的协议一起使用,包括用户数据报协议(UDP)、数据报拥塞控制协议(DCCP)、无线接入点控制和配置(CAPWAP)、流控制传输协议(SCTP) 封装和安全实时传输协议(SRTP)。

由于 DTLS 协议数据报保留了底层传输(应用程序)的语义,因此它不会受到与流协议相关的延迟的影响,但是应用程序必须处理数据包重新排序、数据报丢失以及大于数据报网络数据包大小的数据。由于 DTLS 使用 UDP 或 SCTP 而不是 TCP,因此在用于创建 VPN 隧道时, 它避免了TCP 崩溃问题。

2006 年最初发布的 DTLS 1.0 版并不是一份独立文档。它是作为 TLS 1.1 的一系列增量版本发布的。[ 11 ]同样,2012 年发布的后续 DTLS 是 TLS 1.2 的增量版本。它被赋予了 DTLS 1.2 的版本号以匹配其 TLS 版本。最后,2022 年的 DTLS 1.3 是 TLS 1.3 的增量版本。与之前的两个版本一样,DTLS 1.3 旨在提供“与 TLS 1.3 相当的安全保证,但顺序保护/不可重放性除外”。

许多VPN 客户端(包括Cisco AnyConnect 和 InterCloud Fabric、 OpenConnect、ZScaler隧道、F5 Networks Edge VPN Client、和 Citrix Systems NetScaler)都使用 DTLS 来保护 UDP 流量。此外,所有现代 Web 浏览器都支持用于WebRTC的 DTLS-SRTP 。

 

最新内容

知识库