HTTPS ECDHE 握手解析(计算机网络)

news/2024/6/16 11:40:42/文章来源:https://blog.csdn.net/qq_61504864/article/details/137240006

使用了 ECDHE,在 TLS 第四次握手前,客户端就已经发送了加密的 HTTP 数据,而对于 RSA 握手过程,必须要完成 TLS 四次握手,才能传输应用数据。

所以,ECDHE 相比 RSA 握手过程省去了一个消息往返的时间,有点「抢跑」的意思,它被称为是「TLS False Start」,跟「TCP Fast Open」有点像,都是在还没连接完全建立前,就发送了应用数据来提高传输效率。

TLS 第一次握手

客户端首先会发一个「Client Hello」消息,消息里面有客户端使用的 TLS 版本号、支持的密码套件列表,以及生成的随机数(Client Random

TLS 第二次握手

服务端收到客户端的「打招呼」,会返回「Server Hello」消息,消息面有服务器确认的 TLS 版本号,也给出了一个随机数(Server Random,然后从客户端的密码套件列表选择了一个合适的密码套件。

接着,服务端为了证明自己的身份,发送「Certificate」消息,会把证书也发给客户端。

下面这一步就和 RSA 握手过程有很大的区别了,因为服务端选择了 ECDHE 密钥协商算法,所以会在发送完证书后,会发送「Server Key Exchange」消息,RSA则没有发送该消息。

这个过程服务器做了三件事:

  • 选择了一种椭圆曲线,选好了椭圆曲线相当于椭圆曲线基点 G 也定好了,这些都会公开给客户端;
  • 生成随机数作为服务端椭圆曲线的私钥,保留到本地;
  • 根据基点 G 和私钥计算出服务端的椭圆曲线公钥,这个会公开给客户端。

为了保证这个椭圆曲线的公钥不被第三方篡改,服务端会用 RSA 签名算法给服务端的椭圆曲线公钥做个签名。

随后,就是「Server Hello Done」消息,服务端跟客户端表明:“打招呼完毕”。

至此,TLS 两次握手就已经完成了,目前客户端和服务端通过明文共享了这几个信息:Client Random、Server Random 、使用的椭圆曲线、椭圆曲线基点 G、服务端椭圆曲线的公钥,这几个信息是后续生成会话密钥的材料。

TLS 第三次握手

客户端收到了服务端的证书后,会校验证书是否合法,如果证书合法,那么服务端到身份就是没问题的。校验证书的过程会走证书链逐级验证,确认证书的真实性,再用证书的公钥验证签名,这样就能确认服务端的身份了,确认无误后,就可以继续往下走。

客户端会生成一个随机数作为客户端椭圆曲线的私钥,然后再根据服务端前面给的信息,生成客户端的椭圆曲线公钥,然后用「Client Key Exchange」消息发给服务端。

至此,双方都有对方的椭圆曲线公钥、自己的椭圆曲线私钥、椭圆曲线基点 G。于是,双方都就计算出点(x,y),其中 x 坐标值双方都是一样的。

最终的会话密钥,就是用「客户端随机数 + 服务端随机数 + x(ECDHE 算法算出的共享密钥) 」三个材料生成的

之所以这么麻烦,是因为 TLS 设计者不信任客户端或服务器「伪随机数」的可靠性,为了保证真正的完全随机,把三个不可靠的随机数混合起来,那么「随机」的程度就非常高了,以增加安全性。

算好会话密钥后,客户端会发一个「Change Cipher Spec」消息,告诉服务端后续改用对称算法加密通信。

接着,客户端会发「Encrypted Handshake Message」消息,把之前发送的数据做一个摘要,再用对称密钥加密一下,让服务端做个验证,验证下本次生成的对称密钥是否可以正常使用。

TLS 第四次握手

最后,服务端也会有一个同样的操作,发「Change Cipher Spec」和「Encrypted Handshake Message」消息,如果双方都验证加密和解密没问题,那么握手正式完成。于是,就可以正常收发加密的 HTTP 请求和响应了。

RSA 和 ECDHE 握手过程的区别:

  • RSA 密钥协商算法「不支持」前向保密,ECDHE 密钥协商算法「支持」前向保密;
  • 使用了 RSA 密钥协商算法,TLS 完成四次握手后,才能进行应用数据传输,而对于 ECDHE 算法,客户端可以不用等服务端的最后一次 TLS 握手,就可以提前发出加密的 HTTP 数据,节省了一个消息的往返时间;
  • 使用 ECDHE, 在 TLS 第 2 次握手中,会出现服务器端发出的「Server Key Exchange」消息,而 RSA 握手过程没有该消息;

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端之HTML——网页的骨架!!

目录 一、HTML介绍 二、HTML标签 (一)基础标签 (二)其他标签 2.1 6个常用标签 2.2 8个文本标签 2.3 6个列表标签 2.4 4个表格标签 2.5 4个媒体标签 2.6 1个嵌入标签 2.7 …

HBuilder uniapp发行h5遇到报错:此应用 DCloud appid 为 __UNI__95950AD ,您不是这个应用的项目成员。

uniapp打包遇到不是项目成员问题,如下截图: 解决方法如下: 打开项目的mainfest.json文件,在AppID位置点击重新获取,获取后重新点发行打包即可 另遇到HBuilder账号认证问题,如公司wifi打不开认证地址&#…

一文入门Ubuntu22

目录 1.安装Ubuntu22 2.常用目录 3.常用指令 1.sudo 超级用户权限运行命令 2.ls 罗列当前文件信息 3.文件目录相关: 1.cd改变工作路径: 2.pwd 3.创建目录和文件: 4.which 5.ps 6.kill 7.ping 4.用户相关 5.ssh与scp 6.服务相关…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结: 这项研究通过低频1/f噪声测量方法,探究了在关态(OFF-state)应力作用下,AlGaN/GaN高电子迁移率晶体管(HEMTs)中由应力引起的损伤的定位。研究中结合了电致发光(EL&#xf…

谈谈MVCC机制

在MySQL中,MVCC(多版本并发控制)是InnoDB存储引擎使用的并发控制机制。它提供对数据的并发访问,并确保多用户环境中数据的一致性和隔离性。 InnoDB通过“Undo log”存储每条记录的多个版本,提供历史记录供读取&#x…

Spring Boot项目启动速度优化

1、配置自动配置排除列表,减少启动自动配置扫描,配置项spring.autoconfigure.exclude 2、启动类添加索引注解Indexed,去除启动过程中 Components 的扫描步骤,直接从索引文件读取。 import org.springframework.stereotype.lndexe…

自定义 Unity Scene 的界面工具

介绍 文档中会进行SceneView的自定义扩展,实现显示常驻GUI和添加自定义叠加层(Custom Overlay)。 最近项目开发用回了原生的Unity UI相关内容。对于之前常用的FairyGUI来说,原生的UGUI对于UI同学来讲有些不太方便。再加上这次会…

【精品方案】智慧金融大数据分析平台总体架构方案

以下是部分PPT内容,请您参阅。如需下载完整PPTX文件,请前往星球获取: 1.实现数据共享 通过数据平台实现数据集中,确保金融集团各级部门均可在保证数据隐私和安全的前提下使用数据,充分发挥数据作为企业重要资产的业务价…

String Encryptor custom Bean not found with name ‘jasyptStringEncryptor‘...

项目采用 spring boot 2.6.13 jasypt-spring-boot-starter 3.0.5 apollo-client 1.6.0 自定义jasyptStringEncryptor,服务器上启动死活报找不到bean jasyptStringEncryptor,采用默认的,密文配置项自然解密失败导致服务无法启动。 经过一…

华为云RDS for Mysql入门与配置

华为云RDS for MySQL支持混合SSD实例,它结合了华为云容器、本地SSD盘和高速云盘。 优势: 主备实例提供故障自动切换和手动切换,业务中断时间为秒级,以及异地灾难备份,最大程度上在出现故障的情况下保障整个数据库集群…

基于STM32的汽车防窒息系统

文章目录 基于STM32的汽车防窒息系统系统简介材料展示视频制作硬件连接原理图PCB实物图GSM模块使用GSM模块代码 SGP30模块SGP30模块代码 步进电机驱动步进电机代码 其他模块主逻辑代码 总结 基于STM32的汽车防窒息系统 系统简介 随着社会的发展目前汽车的流行,汽车大…

WebSocket 和 HTTP 的区别:简单易懂

在当今的数字时代,及时交付内容和维持用户互动已成为网络应用不可或缺的要素。这一需求催生了新的通信规范——WebSocket 和 HTTP,尽管两者都服务于网络通讯,它们之间却存在显着的差异。本篇文章旨在剖析这两种协议在应用案例、技术细节、性能…

C语言动态内存讲解+通讯录2.0

文章目录 前文malloc和freecallocrealloc枚举常量的简单说明及使用 通讯录2.0动态开辟通讯录,满了就扩容保存数据和载入数据 通讯录2.0演示推荐好用的软件 前文 本文主要介绍动态开辟的几个函数,以及改进之前的通讯录。 我们局部变量等是在栈区上开辟空间的,而我们动态开辟的空…

微信小程序开发【从入门到精通】——页面导航

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

绘制特征曲线-ROC(Machine Learning 研习十七)

接收者操作特征曲线(ROC)是二元分类器的另一个常用工具。它与精确度/召回率曲线非常相似,但 ROC 曲线不是绘制精确度与召回率的关系曲线,而是绘制真阳性率(召回率的另一个名称)与假阳性率(FPR&a…

42.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色删除功能的封装

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:41.角色删除功能…

61、服务攻防——中间件安全CVE复现K8sDockerJettyWebsphere

文章目录 K8sDockerWebSphere K8s k8s:简单来说,跟docker一样,是个容器系统。 k8s对外攻击面总结 常见漏洞:未授权访问、提权漏洞 Docker docker逃逸:1、由内核漏洞引起;2、由Docker软件设计引起&#x…

74HC595芯片工作原理(附使用方法)

一、74HC595脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP&…

《第3选择》解决所有难题的关键思维 - 三余书屋 3ysw.net

第3选择:解决所有难题的关键思维 《第3选择》解决所有难题的关键思维,面对两难困境,从冲突中找到互相协同的出路 你好,今天我们要聊的这本书是《第3选择》,它出自美国著名作家史蒂芬科维之手。科维是国际上非常知名的…

让工作自动化起来!无所不能的Python

文章目录 前言一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书赠书活动 前言 随着我国企业数字化和信息化的深入…