https 建立连接过程分析

news2024/12/28 19:26:25

从真实的抓包开始

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

从客户端发起请求开始,主要经过以下几个过程:
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 加密一段校验信息发送给客户端
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/581571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】搭建SFTP文件服务器

一、协议介绍1.1 FTP 协议1.11 特点1.12 基本工作原理 1.2 SFTP协议1.21 特点1.22 基本工作原理 1.3 ssh协议1.31 特点1.32 基本工作原理 1.4 其他常见文件传输协议 二、搭建Linux的SFTP文件服务器三、连接测试3.1 电脑连接3.2 手机连接 一、协议介绍 1.1 FTP 协议 1.11 特点…

chatgpt赋能python:Python如何实现不换行

Python如何实现不换行 Python是一种高级编程语言,它的应用领域非常广泛,尤其是在数据分析、人工智能、网络爬虫等领域中拥有广泛的应用。而在Python中,有时候需要控制输出内容的样式,比如在输出时避免出现换行,这个需…

Bootstrap中的js插件使用

1. 标签页 1.1 init <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevic…

sqli_labs21-23

less21 这题是cookie注入&#xff0c;如果不登录进去是看不到cookie信息的&#xff0c;所以我们要先登录进去 用户admin&#xff0c;密码admin 抓包后发现cookie字段有base64编码信息&#xff0c;选中后burp自动检测翻译 既然是cookie注入并且字段是被加密了的&#xff0c;说明…

chatgpt赋能python:Python中5/2问题引发的思考

Python中5/2问题引发的思考 在Python中&#xff0c;我们常常遇到数字计算的问题&#xff0c;比如5/2。当我们在Python中执行如下代码时&#xff1a; print(5/2)输出结果为2.5。 但是在其他编程语言中&#xff0c;比如C和Java&#xff0c;同样的计算结果是2&#xff0c;而不是…

chatgpt赋能python:Pythonnumpy库下载教程:学习数据分析必备工具

Python numpy库下载教程&#xff1a;学习数据分析必备工具 介绍 Python是一种优秀的脚本语言&#xff0c;常用于数据分析、机器学习等领域&#xff0c;而Numpy是Python中最基础的科学计算库&#xff0c;提供了大量针对数组及矩阵操作的函数和方法。然而&#xff0c;对于初学者…

jQuery元素操作和尺寸位置

1. 遍历元素 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

Kubernetes_核心组件_kubelet_kubelet服务全解析

文章目录 前言一、查看kubelet当前运行1.1 查看kubelet当前运行1.2 kubelet配置文件1.3 kubelet启动参数文件1.4 kubelet启动全过程 (自定义启动参数文件) 二、kubelet启动过程2.1 kubelet启动过程2.2 自定义kubelet所有文件并运行步骤1&#xff1a;新建静态token文件和user&am…

Fourier分析入门——第11章——Fourier变换

目录 第11章 Fourier变换(Transform) 11.1 引言 11.2 逆向正弦和余弦变换(The Inverse Cosine and Sine Transforms) 11.3 正向正弦和余弦变换(The Forward Cosine and Sine Transforms) 11.4 离散谱对比谱密度(Discret spectra vs. spectral density) 11.5 Fourier变换的…

chatgpt赋能python:Python中4.5/2等于多少?——解密Python的除法运算

Python中4.5/2等于多少&#xff1f;——解密Python的除法运算 Python作为一种常用的编程语言&#xff0c;在业界有着广泛的应用。而除法是Python中常用的运算之一。但是&#xff0c;当我们输入4.5/2时&#xff0c;会得到什么样的结果呢&#xff1f;这篇文章将解密Python的除法…

Spring Boot:从入门到实践的全面指南

文章目录 1. Spring Boot简介及特性1.1 简介&#xff1a;什么是Spring Boot1.2 特性&#xff1a;Spring Boot的优势与特点1.3 四大核心&#xff1a;Spring Boot的核心组成 2. Spring Boot入门案例2.1 Spring Boot项目开发步骤2.2 创建一个Spring MVC的Spring Boot Controller2.…

chatgpt赋能python:Python不能参加奥赛的原因

Python不能参加奥赛的原因 Python 是一种广泛使用的高级编程语言&#xff0c;以其简单易学、可读性高等特点受到了众多程序员的喜爱&#xff0c;但是它在国际奥林匹克竞赛中并不被允许参赛。本文将会介绍 Python 不能参加奥赛的原因&#xff0c;并且分析该限制是否合理。 原因…

使用 GitHub Actions 自动部署 Hexo 个人博客

文章目录 申请 GitHub Token源码仓库配置 Github Action重新设置远程仓库和分支查看部署 每次部署 Hexo 都需要运行 hexo cl & hexo g & hexo d 指令三件套完成推送到远程仓库&#xff0c;随着文章越来越多&#xff0c;编译的时间也会越来越长&#xff0c;通过 Github …

前缀树概念

前缀树&#xff08;prefix tree&#xff09; 准备一个Str[]&#xff0c;数组中元素有[“abc”,“bcd”,“abg”,“bcde”,“qwe”]&#xff0c;如何将数组中元素加到树中呢&#xff1f; 从最开始的字符串abc说&#xff0c;第一个字符是a&#xff0c;从一个空的头节点出发&#…

jQuery属性操作和内容文本值

1. 属性操作 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…

全局CSS样式1

1. 响应式基础 1.1 init <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compati…

chatgpt赋能python:Python两行三列列表:更高效的数据展示方式

Python 两行三列列表&#xff1a;更高效的数据展示方式 在Python编程中&#xff0c;经常会需要对数据进行展示。而最常见的方式则是使用列表。然而&#xff0c;当数据量较大时&#xff0c;传统的列表显示方式显得过于冗长。Python两行三列列表的使用&#xff0c;不仅可以增加代…

chatgpt赋能python:Python不挂科,学会这些技能就足够

Python不挂科&#xff0c;学会这些技能就足够 Python已成为现代编程语言中最受欢迎的一种&#xff0c;它擅长处理数据、人工智能等复杂的软件开发任务。互联网时代的到来也让Python的使用场景更加广泛&#xff0c;从前后端开发到数据分析。无论是学习Python的初学者还是有一定…

MQTT(3):MQTT协议原理

官方文档中对于MQTT协议包的结构有着具体的说明&#xff1a;http://mqtt.org/documentation 在MQTT协议中&#xff0c;一个MQTT数据包由&#xff1a;固定头&#xff08;Fixed header&#xff09;、可变头&#xff08;Variable header&#xff09;、消息体&#xff08;payload&…

chatgpt赋能python:介绍Python在SEO中的重要性

介绍Python在SEO中的重要性 随着互联网的不断发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;变得越来越重要。SEO一直是网络营销的重要组成部分&#xff0c;可以增加网站的可见性和流量。Python作为一种强大的编程语言&#xff0c;可以帮助网站优化人员更好地管理和…