笔记-HTTPS握手流程

HTTPS(超文本传输安全协议)的连接流程结合了传输层的TCP三次握手和TLS(传输层安全性协议)的握手过程来提供一个安全的连接。这个过程可以大致分为以下几个步骤:

1. TCP三次握手

这是任何HTTP或HTTPS连接开始的地方。客户端和服务器之间建立一个TCP连接,这是一个可靠的连接,确保了数据包正确无误地到达。

2. TLS握手

在TCP连接成功建立之后,TLS握手过程开始,目的是安全地交换密钥,验证服务器,并且建立加密通道。

a) 客户端Hello(Client Hello)

客户端发送一个“Client Hello”消息到服务器,包含:

  • 客户端支持的TLS版本。
  • 可接受的加密算法(密码套件)列表。
  • 一个客户端随机数(Client Random),之后用于生成加密密钥。

b) 服务器Hello(Server Hello)

服务器响应一个“Server Hello”消息,包含:

  • 选择的TLS版本和密码套件。
  • 一个服务器随机数(Server Random)。
  • 服务器证书(通常是X.509格式)。

c) 服务器证书验证

客户端验证服务器证书的有效性,它可能包括:

  • 确认证书由可信的证书颁发机构(CA)签名。
  • 检查证书的有效期。
  • 确认证书中的域名与正在连接的服务器域名一致。

d) 密钥交换

客户端使用从服务器证书中提取的公钥,发送预主密钥(Pre-Master Secret),这通常是加密的。

e) 会话密钥生成

客户端和服务器都使用客户端随机数、服务器随机数和预主密钥生成相同的会话密钥,这将用于此后的对话加密。

f) 客户端完成(Client Finished)

客户端发送一个“Finished”消息,这通常是之前所有消息的加密和散列值,用于服务器验证。

g) 服务器完成(Server Finished)

服务器同样发送一个“Finished”消息,客户端验证这个消息以确保没有中间人攻击。

3. 加密通信

HTTPS使用的是一种称为公钥基础设施(PKI)的体系结构,在这种体系结构中,确实使用了公钥和私钥机制,但它结合了对称加密和非对称加密的优点来提供安全通信。

  1. 非对称加密
    • 在初始的握手阶段,服务器会向客户端发送其公钥作为数字证书的一部分。
    • 客户端将使用此公钥加密信息(如预主密钥),然后发送回服务器。
    • 只有持有对应私钥的服务器才能解密这些信息,这确保了即使这些信息被截获,没有私钥也无法解密。
    • 这个过程是非对称的,因为加密(公钥)和解密(私钥)使用不同的密钥。
  2. 对称加密
    • 一旦非对称步骤完成,客户端和服务器就会使用交换的信息来生成对称的会话密钥。
    • 后续的通信将使用这个对称密钥进行加密和解密,这意味着客户端和服务器都使用同一个密钥。
    • 对称加密比非对称加密更快,适合大量数据的加密通信。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注