https 加密原理握手过程详解

HTTPS通过TLS1.2进行加密通信,其握手过程包括四次交互。客户端首先发送ClientHello,然后服务器回应ServerHello,接着客户端发送加密的pre_master_key并告知将使用会话秘钥,最后服务器解密pre_master_key,双方生成相同的会话秘钥,完成加密准备。
摘要由CSDN通过智能技术生成

HTTPS握手过程

HTTPS的握手过程比较繁琐,我们来回顾下。

先是建立TCP连接,毕竟HTTP是基于TCP的应用层协议。

在TCP成功建立完协议后,就可以开始进入HTTPS阶段。

HTTPS可以用TLS或者SSL啥的进行加密,下面我们以TLS1.2为例。

总的来说。整个加密流程其实分为两阶段

第一阶段是TLS四次握手,这一阶段主要是利用非对称加密的特性各种交换信息,最后得到一个"会话秘钥"。

第二阶段是则是在第一阶段的"会话秘钥"基础上,进行对称加密通信。

 

我们先来看下第一阶段的TLS四次握手是怎么样的。

第一次握手

  • • Client Hello:是客户端告诉服务端,它支持什么样的加密协议版本,比如 TLS1.2,使用什么样的加密套件,比如最常见的RSA,同时还给出一个客户端随机数

第二次握手

  • • Server Hello:服务端告诉客户端,服务器随机数 + 服务器证书 + 确定的加密协议版本(比如就是TLS1.2)。

第三次握手

  • • Client Key Exchange: 此时客户端再生成一个随机数,叫 pre_master_key 。从第二次握手的服务器证书里取出服务器公钥,用公钥加密 pre_master_key,发给服务器。

  • • Change Cipher Spec: 客户端这边已经拥有三个随机数:客户端随机数,服务器随机数和pre_master_key,用这三个随机数进行计算得到一个"会话秘钥"。此时客户端通知服务端,后面会用这个会话秘钥进行对称机密通信。

  • • Encrypted Handshake Message:客户端会把迄今为止的通信数据内容生成一个摘要,用"会话秘钥"加密一下,发给服务器做校验,此时客户端这边的握手流程就结束了,因此也叫Finished报文

第四次握手

  • • Change Cipher Spec:服务端此时拿到客户端传来的 pre_master_key(虽然被服务器公钥加密过,但服务器有私钥,能解密获得原文),集齐三个随机数,跟客户端一样,用这三个随机数通过同样的算法获得一个"会话秘钥"。此时服务器告诉客户端,后面会用这个"会话秘钥"进行加密通信。

  • • Encrypted Handshake Message:跟客户端的操作一样,将迄今为止的通信数据内容生成一个摘要,用"会话秘钥"加密一下,发给客户端做校验,到这里,服务端的握手流程也结束了,因此这也叫Finished报文

四次握手中,客户端和服务端最后都拥有三个随机数,他们很关键,我特地加粗了表示。

第一次握手,产生的客户端随机数,叫client random

第二次握手时,服务器也会产生一个服务器随机数,叫server random

第三次握手时,客户端还会产生一个随机数,叫pre_master_key

这三个随机数共同构成最终的对称加密秘钥,也就是上面提到的"会话秘钥"。

 

你可以简单的认为,只要知道这三个随机数,你就能破解HTTPS通信。

而这三个随机数中,client random 和 server random 都是明文的,谁都能知道。pre_master_key却不行,它被服务器的公钥加密过,只有客户端自己,和拥有对应服务器私钥的人能知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值