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

【网络协议】【http】【https】ECDHE-TLS1.2

【网络协议】【http】【https】ECDHE-TLS1.2

ECDHE算法

1.客户端和服务器端事先确定好使用哪种椭圆曲线,和曲线上的基点G,这两个参数都是公开的,
双方各自随机生成一个随机数作为私钥d,并与基点 G相乘得到公钥Q(Q=dG),此时客户端的公钥Q1, 私钥
d1
,服务器的公钥 Q2,私钥d2
双方交换各自的公钥,最后客户端计算点(x1,y1)=d1Q2,服务器计算点(x2,y2)=d2Q1,由于椭
圆曲线上是可以满足乘法交换和结合律,所以 d1Q2=d1d2G=d2d1G=d2Q1
因此双方的x坐标是一样的,所以它是共享密钥,也就是会话密钥生成材料。(会话密钥根据客户端随机数,服务器端随机数 以及x生成)

ECDHE生成会话密钥

1.客户端
客户端向服务器发送一个“ClientHello”消息
客户端支持的协议版本。
客户端支持的密码套件(密钥交换算法+签名算法+对称加密算法+摘要算法)列表。
客户端生成的一个随机数(Client Random)

2.服务器
服务器收到客户端消息后,返回一个“ServerHello”消息
服务器选择的协议版本。
服务器从客户端提供的密码套件列表中选定的密码套件。
服务器生成的一个随机数(Server Random)
服务器会发送自己的数字证书,供客户端验证服务器的身份。
服务器发送【server key Exchange】消息(这里的消息会进行签名 因为这个数据不能出错,需要证明可靠性)生成椭圆曲线Diffie-Hellman(ECDH)的公钥(d2),私钥(Q2)对,并将公钥Q2发送给客户端。

3.客户端身份验证与密钥生成:
客户端收到服务器的数字证书后,会验证证书的有效性,确保服务器的身份可信。
客户端也有自己的ECDH密钥公钥(d1),私钥(Q1),并将公钥Q1发送给服务端。通过ECDHE算法,与服务器的公钥(Q2)以及双方的私钥数生成一个共享的秘密密钥x。
密钥派生:
客户端和服务器各自基于双方生成的共享密钥x以及客户端随机数,服务端随机数,生成最终的会话密钥
消息认证:
客户端使用会话密钥加密之前发送的所有数据的摘要,并发送给服务器进行验证。
4.服务器同样验证摘要,确认无误后,双方进入安全的数据通信阶段。

后续会说明一下session ticket,session id 和TLS1.3,以及基于TLS1.3的QUIC
但是由于TLS1.3及其后续资料没有确切规范,说什么的都有,如有问题,希望大佬指出,并能给出我参考资料 那将万分感谢!

部分转自:https://zhuanlan.zhihu.com/p/686461033
部分转自:https://www.cnblogs.com/ToTigerMountain/articles/18220849

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

相关文章:

  • (十五)WebGL中gl.texImage2D函数使用详解
  • CSS 颜色
  • C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
  • 杀死安装 CentOS-7-x86_64-DVD-1908
  • 55.【5】BUUCTF WEB NCTF2019 sqli
  • LeetCode 题目 2545. 根据第 K 场考试的分数排序
  • 算法随笔_12:最短无序子数组
  • 计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计
  • Linux-C/C++--初探linux应用编程概念
  • 用sklearn运行分类模型,选择AUC最高的模型保存模型权重并绘制AUCROC曲线(以逻辑回归、随机森林、梯度提升、MLP为例)
  • 动手学大数据-3社区开源实践
  • 使用Pydantic驾驭大模型
  • 【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发之常见布局
  • 【论文投稿】Python 网络爬虫:探秘网页数据抓取的奇妙世界
  • 队列的基本用法
  • 网络安全VS数据安全
  • Linux(NFS服务)
  • python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测
  • SSM课设-学生管理系统
  • 【Pytorch实用教程】TCN(Temporal Convolutional Network,时序卷积网络)简介
  • 网络安全 | 什么是正向代理和反向代理?
  • 3 前端(中):JavaScript
  • VIT论文阅读与理解
  • JavaScript笔记APIs篇01——DOM获取与属性操作
  • SQL表间关联查询详解
  • select函数
  • 建造者模式(或者称为生成器(构建器)模式)
  • 【深度学习】Huber Loss详解
  • A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置
  • 李宏毅机器学习HW1: COVID-19 Cases Prediction