您现在的位置是:首页 >技术杂谈 >https 建立连接过程分析网站首页技术杂谈

https 建立连接过程分析

阿雷由 2024-06-26 14:23:33
简介https 建立连接过程分析

从真实的抓包开始

在这里插入图片描述
根据抓包结果可以看到

从客户端发起请求开始,主要经过以下几个过程:
1、TCP 三次握手
2、浏览器发送 Client Hello 到服务器
3、服务器发送Server Hello 、证书、证书状态、服务端密钥交换,到浏览器
4、浏览器发送 客户端密钥交换、Change Cipher Spec、加密的握手信息,到服务端
5、服务器发送Session TicketChange Cipher Spec、加密的握手信息,到浏览器
6、之后客户端与服务器使用计算出的 master key ,通过对称加密(根据前面的密码套件,本次是 AES256 对称加密算法)开始正式https 交互

在这里插入图片描述

客户端的握手信息

Client Hello
包含客户端支持的所有加密套件列表、客户端的随机数等
在这里插入图片描述

服务端的握手信息

在这里插入图片描述

Server Hello
包含服务端选择的密码套件、服务端的随机数
在这里插入图片描述
Certificate
包含ca和目标网站证书
在这里插入图片描述
Certificate Status
主要是通过OSCP 查询证书状态

密钥交换过程

Server Key Exchange
这里是与RSA 算法不通的地方,在发送证书之后还会发送一次椭圆曲线的密钥
包含EC Diffie-Hellman 的公钥交换
其中EC 代表椭圆曲线算法(高版本都是短暂-椭圆曲线,ephemeral Elliptic Cure)

在这里插入图片描述

无论使用RSA 还是 ECDHE 做密钥交换,最终计算主密钥的公式都是如下:
client 随机数 + server 随机数 + pre-master = master secret

前两个随机数都是明文,并且通过网络传送,所以保密的关键在于 pre-master
两种密钥交换算法的区别在于
RSA 中,pre-master 单纯的由客户端生成,用服务端的 公钥加密之后发送给服务端,因为服务端有私钥,所以可以正常解密获取 pre-master ;使用这种方式做密钥交换的风险就是 一旦服务端私钥泄密,攻击者就可以 解密出 pre-master 加上监听获取到的 前两个随机数,就可以计算出 master secret(所以说RSA 不具备PFS -perfect forward secrecy 完美前导性安全)

ECDHE 中,服务端临时生成 椭圆曲线EC 的公私钥对 Server Params ,发送公钥给客户端;
客户端也生成一个 椭圆曲线EC 的公私钥对 Client Params,发送公钥给服务端,而私钥分别由客户端、服务端保管,随后分别在本地计算 pre-master 。 如果服务端私钥泄露,但是无法拿到客户端和服务端 椭圆曲线的私钥,也是没办法进行破解工作。(因此 ECDHE 具备PFS -perfect forward secrecy 完美前导性安全)

ECDHE (ephemeral Elliptic Cure Diffie-Hellman Exchange)全称 临时椭圆曲线DH 交换算法,其中DH 就是两个人名缩写。

Client Key Exchange
包含EC Diffie-Hellman 的公钥交换
客户端首先通过 Server Params 和自己的私钥,计算出 pre-master
再结合前面2个随机数计算出 master secret
最后用计算出的 master secret 加密一段校验信息发送给服务端
在这里插入图片描述

New Session Ticket
session ticket 是tls1.2 引入的机制,用于替换session id
同时 服务端使用客户端发来的 Client Params 和自己的私钥,计算出 pre-master
再结合前面2个随机数计算出 master secret
最后用计算出的 master secret 加密一段校验信息发送给客户端
在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。