📜  传输层安全 (TLS)(1)

📅  最后修改于: 2023-12-03 15:22:06.089000             🧑  作者: Mango

传输层安全 (TLS)

简介

传输层安全(Transport Layer Security,TLS)是一种基于加密协议的安全通信协议。它的前身是安全套接层协议(Secure Sockets Layer,SSL),在 SSL 3.0 基础上发展而来。TLS 协议为应用层协议提供了可靠的、安全的通信环境。

TLS 协议主要用于 Web 应用,为 HTTP 应用层协议提供了安全保障。实际上,HTTPS 协议就是运用了 SSL/TLS 协议来保证 Web 应用的安全。

工作原理

TLS 协议的工作分为两个阶段:握手阶段(Handshake)和数据传输阶段(Record)。

在握手阶段,服务器与客户端建立安全通信的过程中,它们对彼此的身份进行认证,并协商出一组加密算法和密钥信息,以确保后续数据的加密和身份验证。TLS 的握手协议包括以下步骤:

  1. 服务器向客户端发送握手请求。握手请求中包含一个预主密钥(Pre-Master Secret),并要求客户端生成一个随机数。
  2. 客户端接收到握手请求后,生成一个随机数,并用预主密钥加密后发送给服务器。
  3. 服务器和客户端根据预主密钥生成主密钥(Master Secret)和会话密钥(Session Key)。这个过程叫做密钥交换(key exchange)。
  4. 客户端发起认证请求,服务器用证书对客户端身份进行认证。
  5. 服务器发送一个完成通知,表示握手阶段完成。

在数据传输阶段,TLS 将数据分片,以记录(Record)的形式传输,每个记录都包含一个 TCP 报文。记录头部定义记录的类型(data、alert、handshake、change_cipher_spec)以及记录的长度。记录负载是加密后的数据、数字签名或验证值。

协议版本

TLS 有多个版本,包括以下:

  • TLS 1.0:发布于 1999 年,基于 SSL 3.0。
  • TLS 1.1:发布于 2006 年,修复了 TLS 1.0 中发现的漏洞和弱点。
  • TLS 1.2:发布于 2008 年,增加了一些密码套件以提高安全性。
  • TLS 1.3:发布于 2018 年,进一步简化了握手协议、增加了一些新的密码套件以加强安全性。
加密算法

TLS 协议支持多种加密算法,包括对称加密算法和非对称加密算法,下面介绍一些常用的加密算法:

  • 对称加密算法:用相同的密钥进行加密和解密。常见的对称加密算法有:DES、3DES、AES等。
  • 非对称加密算法:用公钥加密,用私钥解密,或用私钥加密,用公钥解密。常见的非对称加密算法有:RSA、DSA等。
  • 散列算法:将任意长度的消息压缩成一个固定长度的摘要(hash),常见的散列算法有:MD5、SHA1、SHA256等。
TLS 与 HTTPS

HTTPS 是建立在 TLS 之上的安全通信协议,用于 Web 应用。HTTPS 协议将 HTTP 应用层协议封装在 TLS 协议之外,以确保数据在传输过程中的安全性。HTTPS 的工作流程如下:

  1. 客户端向服务器发起 HTTPS 请求,请求时使用 https:// 协议,而非 http:// 协议。
  2. 服务器接收到 HTTPS 请求后,向客户端返回数字证书以确认身份。数字证书中包含证书的公钥,客户端用这个公钥加密数据。
  3. 客户端收到数字证书,检查证书的合法性,如果数字证书是由可信机构(CA)颁发的,则表示证书有效,否则表示证书无效。
  4. 客户端使用证书中的公钥对随机数和预共享密钥进行加密,并将加密后的数据发送给服务器。
  5. 服务器使用私钥解密数据,并通过预共享密钥生成主密钥、会话密钥等信息,以确保后续数据传输的安全性。
  6. 服务器将主密钥等信息加密后发送给客户端,客户端用会话密钥解密数据。
参考链接