当前位置: 首页 > news >正文

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)

  • 简介
  • 1. TLS握手过程概述
  • 2. TLS握手过程细化
  • 3. 主密钥(对称密钥)生成过程
  • 4. 密码规范变更

简介

主要讲述了混合加密流程完成后,客户端和服务器如何共同获得相同的对称密钥,并通过该密钥进行数据的加密和解密。详细介绍了HTTPS的加密过程,并进一步阐述了TLS握手过程,包括客户端发送Client Hello请求给服务器,告知其支持的TLS版本、生成的随机数以及密码套件等信息,以便服务器根据这些信息与客户端协商并建立安全的连接。

1. TLS握手过程概述

TLS握手过程包括四次握手
1.客户端首先发送Client Hello请求。
2.服务器收到Client Hello后,发送Server Hello、Server Random、Certificate、Server Key Exchange、Server Hello Done等报文。
3.客户端收到服务器端的报文后,生成主密钥并加密后发送给服务器端。
4.服务器端收到客户端的加密数据后,用私钥解密,得到主密钥。
5.双方使用主密钥进行对称加密,完成数据传输。

在这里插入图片描述

2. TLS握手过程细化

在TLS1.2协议中,主密钥(对称密钥)由双方交换参数、协商算法各自生成。不再由客户端生成后,加密传输给服务端。

1.Client Hello包含TLS版本、随机数(Client Random)、密码套件(CipherSuites)等信息。
2.Server Hello确认收到Client Hello,并发送Server RandomECDHE密钥交换算法、Certificate、Server Key Exchange、Server Hello Done等报文。
3.Client收到服务器端的报文后,生成客户端参数(Client Key Exchange),并用服务器端的公钥加密后发送给服务器端。
4.服务器端收到客户端的加密数据后,用私钥解密,生成主密钥。与此同时,客户端也生了相同的主密钥。
5.客户端和服务器端分别用主密钥进行数据加密和解密。

3. 主密钥(对称密钥)生成过程

1.客户端验证完服务器端的合法性后,生成自己的客户端参数(Client Key Exchange),并用服务器端的公钥加密后发送给服务器端。
2.服务器端收到客户端的加密数据后,用私钥解密,得到客户端参数。
3.客户端和服务器端分别用两个参数(Client Key Exchange、Server Key Exchange),通过协商好的ECDHE算法生成预主密钥。然后预主密钥再次和两个随机数(Client Random、Server Random)进行ECDHE算法计算,生成主密钥
4.主密钥用于后续的数据加密和解密。

4. 密码规范变更

1.在生成主密钥后,客户端和服务器端改变密码规范,从非对称加密变为对称加密。
2.使用主密钥进行数据的加密和解密,提高安全性。

往期文章参考:
01.HTTPS的实现原理-HTTPS的概念
02.HTTPS的实现原理-HTTPS与HTTP的区别详解
03.HTTPS的实现原理-HTTPS的工作流程
04.HTTPS的实现原理-HTTPS的混合加密流程

http://www.lryc.cn/news/510131.html

相关文章:

  • 提示词工程
  • 基于python网络爬虫的搜索引擎设计
  • ip-协议
  • Git(11)之log显示支持中文
  • oneflow深度学习框架使用问题总结(Windows/Linux)
  • 论文研读:AnimateDiff—通过微调SD,用图片生成动画
  • SQLAlchemy示例(连接数据库插入表数据)
  • Springboot3国际化
  • 阿尔萨斯(JVisualVM)JVM监控工具
  • 框架专题:反射
  • 【Go】context标准库
  • LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读
  • git设置项目远程仓库指向github的一个仓库
  • 实战演练JDK的模块化机制
  • jdk17+springboot3项目加密部署
  • rm -rf 删除/下bin lib lib64 sbin软链接系统恢复
  • 并发与竞争
  • Java后端开发 ”Bug“ 分享——订单与优惠卷
  • Linux系统之tee命令的基本使用
  • idea 8年使用整理
  • 多个微服务 Mybatis 过程中出现了Invalid bound statement (not found)的特殊问题
  • k8s,service如何找到容器
  • 观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?
  • docker compose deploy fate cluster
  • 字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)
  • 网工日记:FTP工作模式
  • unity使用代码在动画片段中添加event
  • 嵌入式轻量级开源操作系统:HeliOS的使用
  • 解决VMware的ubuntu22虚拟机没有网络
  • 金属衬底介质片对平面波的反射-问题的解析求解和FEM求解