计算机网络学习笔记 ---- HTTPS

1 HTTPS RSA握手解析

1.1 TLS握手过程

在这里插入图片描述
其中每一个「框」都是一个记录(record),记录是 TLS 收发数据的基本单位,类似于 TCP 里的 segment。多个记录可以组合成一个 TCP 包发送,所以通常经过「四个消息」就可以完成 TLS 握手,也就是需要 2个 RTT 的时延,然后就可以在安全的通信环境里发送 HTTP 报文,实现 HTTPS 协议。

不同的密钥交换算法,TLS 的握手过程可能会有一些区别。考虑到性能的问题,双方在加密应用信息时使用的是对称加密密钥,而对称加密密钥是不能被泄漏的,为了保证对称加密密钥的安全性,所以使用非对称加密的方式来保护对称加密密钥的协商,这个工作就是密钥交换算法负责的。

1.2 RSA 握手过程

传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的。

在 RSA 密钥协商算法中,客户端会生成随机密钥,并使用服务端的公钥加密后再传给服务端。根据非对称加密算法,公钥加密的消息仅能通过私钥解密,这样服务端解密后,双方就得到了相同的密钥,再用它加密应用消息。

一共经历四次握手,过程图如下:
在这里插入图片描述

1.2.1 TLS 第一次握手

客户端首先会发一个「Client Hello」消息

在这里插入图片描述
消息里面有客户端使用的 TLS 版本号支持的密码套件列表,以及生成的随机数(Client Random),这个随机数会被服务端保留,它是生成对称加密密钥的材料之一

1.2.2 TLS 第二次握手

1、当服务端收到客户端的「Client Hello」消息后,会确认 TLS 版本号是否支持,和从密码套件列表中选择一个密码套件,以及生成随机数(Server Random)。

2、接着,返回「Server Hello」消息,消息里面有服务器确认的 TLS 版本号,也给出了随机数(Server Random),然后从客户端的密码套件列表选择了一个合适的密码套件。
在这里插入图片描述

其中,密码套件的基本形式是「密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法」,一般 WITH 单词前面有两个单词,第一个单词是约定密钥交换的算法,第二个单词是约定证书的验证算法。

上图中的密码套件的意思:

· 由于 WITH 单词只有一个 RSA,则说明握手时密钥交换算法和签名算法都是使用 RSA;
· 握手后的通信使用 AES 对称算法,密钥长度 128 位,分组模式是 GCM;
· 摘要算法 SHA256 用于消息认证和产生随机数;

客户端与服务端各自生成了一个随机数并交换,这两个随机数是后续作为生成「会话密钥」的条件,所谓的会话密钥就是数据传输时,所使用的对称加密密钥。

3、然后,服务端为了证明自己的身份,会发送「Server Certificate」给客户端,这个消息里含有数字证书。
在这里插入图片描述
4、随后,服务端发了「Server Hello Done」消息。
在这里插入图片描述

1.2.3 客户端验证证书

一个数字证书通常包含有:

· 公钥;
· 持有者信息;
· 证书认证机构(CA)的信息;
· CA 对这份文件的数字签名及使用的算法;
· 证书有效期;
· 还有一些其他额外信息;

数字证书签发和验证流程:
在这里插入图片描述
向 CA 申请的证书一般不是根证书签发的,而是由中间证书签发的,整个证书信任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Swing_zzZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值