计算机网络-HTTP相关知识-RSA和ECDHE及优化

HTTPS建立基本流程

  • 客户端向服务器索要并验证服务器的公钥。
  • 通过密钥交换算法(如RSA或ECDHE)协商会话秘钥,这个过程被称为“握手”。
  • 双方采用会话秘钥进行加密通信。

RSA流程

RSA流程包括四次握手:

  • 第一次握手:客户端发送支持的TLS版本、生成的Client Random和支持的密码套件列表。
  • 第二次握手:服务器处理确认TLS协议版本,然后发送生成的Server Random、密码套件列表(包括密钥交换算法、签名算法、对称加密算法、对称加密算法分组方式和摘要算法)以及服务器的数字证书(包含公钥)。
  • 第三次握手:客户端处理验证证书真伪,生成会话密钥(由Client Random + Server Random + pre-master key组成以保证随机性),然后发送服务器公钥加密过的刚生成的pre-master key(预主密钥),告诉服务端之后使用加密方式发送消息,并发送之前所有发送的数据做个摘要,并使用会话密钥加密,以验证可用性。
  • 第四次握手:服务器处理生成会话密钥,然后发送告诉客户端之后使用加密方式发送消息,并发送之前所有发送的数据做个摘要,并使用会话密钥加密,以验证可用性。

RSA缺陷

RSA的主要缺陷是没有前向安全性。这意味着如果一个会话的秘钥被泄露,那么所有以前的会话都可能被解密。

DHE算法

  • DHE算法基于离散对数问题,即对于 aimodp=b,当 p 很大时,已知 a、b 无法快速获得 i ,时间复杂度为 O(p​) ,但是如果正向计算(已知 a、i,求b )是可以做到 O(logp) 的。
  • DHE算法的流程如下:
    • 双方确定模数P和底数A。
    • 各自随机生成私钥i,j作为指数。
    • 通过 Bi=Aimodp、Bj=Ajmodp 得到公钥并交换。
    • 以 K=Bij=Bjimodp 为会话密钥。
  • 在static DH算法中,一方私钥是固定的,无法保证前向安全,所以有了DHE,其中E就是 ephemeral 临时的。
  • DHE算法的缺点是虽然保证了前向安全性,但是需要大量乘法,性能不佳。

ECDHE算法

  • ECDHE算法基于椭圆曲线上的加法,对于椭圆曲线上一点 A,过A的一条切线与圆锥曲线相交,交点关于x轴对称的点记为2A。
  • ECDHE算法的流程如下:
    • 双方确定椭圆曲线和曲线是基点G。
    • 各自随机生成私钥d1、d2。
    • 计算公钥 Q1=d1G、Q2=d2G并交换。
    • 计算得到 d1Q2=d2Q1 中的x相同的(预主密钥)。
  • ECDHE算法的优势是利用了ECC圆锥曲线特性,计算量更少,前向安全性,ECDHE 允许 TLS False Start 即在第三次挥手之后可以直接进行数据传输。

ECDHE流程

ECDHE流程包括四次握手:

  • 第一次握手:客户端发送支持的TLS版本、生成的Client Random和支持的密码套件列表。
  • 第二次握手:服务器处理确认TLS协议版本,生成私钥、公钥,然后发送生成的Server Random、密码套件列表(类型同RSA)、服务器的数字证书、选定的圆锥曲线以及对应公钥。
  • 第三次握手:客户端处理生成私钥、公钥,会话密钥 = Client Random + Server Random + ECDHE计算出的点的x坐标 保证随机性,然后发送圆锥曲线公钥(客户端公钥加密)、告诉服务端之后使用加密方式发送消息、之前所有发送的数据做个摘要,并使用会话密钥加密,验证可用性。
  • 第四次握手:服务器处理生成会话密钥,然后发送告诉客户端之后使用加密方式发送消息、之前所有发送的数据做个摘要,并使用会话密钥加密,验证可用性、Session Ticket 会话复用。

HTTPS优化

  • 硬件优化

    • 升级CPU,加快密钥计算。
    • 选用支持 AES-NI 特性的 CPU。
  • 软件优化

    • openssl升级。
    • linux内核升级。
  • 协议优化

    • 选用 ECDHE 密钥交换,支持 TLS False Start。
    • 选择 x25519 椭圆曲线,该曲线是目前计算最快的椭圆曲线。
    • 有CPU支持就选AES,如果没有就选择ChaCha20。
    • 安全性要求不是很高使用 AES128 代替 AES256。
    • 升级TLS1.3,将第一、三次握手合并,两次握手之后即可加密传输。密钥交换算法仅留下了支持前向安全性的ECDHE,仅留下了几个安全性高的密码套件,0RTT会话复用。
  • 证书优化

    • 选择椭圆曲线(ECDSA)证书,而不是 RSA 证书,相同安全程度下ECDSA密钥更短。
  • 会话复用

    • Session ID:双方会在内存缓存会话密钥,并用唯一的 Session ID 来标识,Session ID 和会话密钥相当于 key-value 的关系,定时过期。客户端再次连接时,hello 消息里会带上 Session ID,服务器收到后就会从内存找,如果还有就继续使用,省略后续挥手过程。占用服务器内存。
    • Session Ticket:首次连接后的第四次挥手加密会话密钥作为  Ticket 发给客户端。服务器收到 Ticket 后判断有效期,有效就恢复会话。在 TLS1.3 中把 Ticket 和 HTTP 请求一同发送给服务端即可,我们称之为Pre-shared Key(PSK)。
    • 重放攻击:如果中间人截获了客户端使用会话重用技术的 POST 请求,会导致服务器被恶意修改。应对方法包括设定过期时间,只对GET请求等使用会话复用。

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

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

相关文章

vue项目入门——index.html和App.vue

vue项目中的index.html文件 在Vue项目中,index.html文件通常作为项目的入口文件,它包含了Vue应用程序的基础结构和配置。 该文件的主要作用是引入Vue框架和其他必要的库,以及定义Vue应用程序的启动配置。 import Vue from vue import App …

uniapp-打包app-图标配置

依次找到manifest->App图标配置,然后点击浏览,从本地文件夹中选择你们项目的logo,然后点击自动生成所有图标并替换,即可:

JS-23-原型继承

一、JS的原型继承 在传统的基于Class的语言如Java、C中,继承的本质是扩展一个已有的Class,并生成新的Subclass。 但是,JavaScript由于采用原型继承,根本不存在Class这种类型。 但是办法还是有的。我们先回顾Student构造函数&am…

【最佳实践】高效调优目标检测模型

【最佳实践】高效调优目标检测模型 数据层面算法层面CNN还是Transformer?学习率和优化器损失函数的权重正负样本平衡模型微调与迁移学习模型性能监控与早停可视化与模型解释超参数进化其他方面总结 在深入繁复的计算机视觉领域,目标检测无疑是一项挑战且…

Flutter仿Boss-3.登录页

效果 介绍 在Flutter应用程序中创建登录页面对于用户认证和参与至关重要。登录页面作为用户访问应用程序功能的入口。它应该提供无缝的体验,同时确保安全和隐私。这里仿Boss应用设计的登录页面,我们将创建一个登录页面,允许用户使用手机号码…

Photoshop 2024 Mac/win---图像处理的新纪元,解锁无限创意

Photoshop 2024是一款功能强大的图像处理软件,以其卓越的性能和广泛的应用领域,赢得了设计师、摄影师、图形艺术家等各类创意工作者的青睐。它提供了丰富的绘画和编辑工具,让用户能够轻松进行图片编辑、合成、校色、抠图等操作,实…

网站官网-首页源码html+css+js

网页设计与网站建设作业htmlcssjs 预览 说明 单页面,轮播图 获取:https://hpc.baicaitang.cn/2080.html

部署项目遇到的各种问题总结

文章目录 前言一、后端问题 jar包运行出现错误宝塔面板使用jdk17二、数据库问题 版本问题三、前端问题 连不上后端总结 前言 在做完项目之后,为了让别人访问到自己的网站,就需要部署前端后端以及数据库,但是在部署的过程中出现了各种问题和困…

Vue-Next-Admin:适配手机、平板、PC的开源后台管理模板

摘要:随着移动设备和PC的普及,为了满足不同设备的需求,开发一个能够自适应手机、平板和PC的后台管理系统变得至关重要。本文将介绍一个基于Vue3.x、Typescript、Vite、Element Plus等技术的开源模板库——Vue-Next-Admin,帮助开发…

界面组件DevExpress WinForms v23.2 - 进一步增强HTML CSS支持

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

CMakeLists.txt编写简单介绍:CMakeLists.txt同时编译.cpp和.cu

关于CMakeLists.txt的相关介绍,这里不赘诉,本人的出发点是借助于CMakeLists.txt掌握基本的C++构建项目流程,下面是本人根据网络资料以及个人实践掌握的资料。 CMakeList.txt构建C++项目 下图是一个使用CUDA实现hello world的项目,一般来说,一个标准的C++项目包括三个文件…

VScode debug python(服务器)

方法一: 创建launch.json文件: launch.json文件地址: launch.json文件内容: {"version": "0.2.0", //指定了配置文件的版本"configurations": [{"name": "Python: Current File&…

使用tcpdump和wireshark进行服务器抓包分析

目录 前言 1.tcpdump简介 2.Wireshark简介 3.实际案例 4.代码示例 5.总结 前言 服务器抓包分析是一种非常常见和有效的网络故障排查和性能优化手段。通过捕获服务器上的网络流量,可以帮助我们深入了解服务器与其它设备之间的通信情况,发现问题并进…

探索Flutter混淆在提高应用安全性方面的作用

在移动应用开发中,保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具,帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆,并提供了相关的操作步骤和注意事项。 📝 摘要 本…

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。 一、S3上传和下载文件(AWS门户) …

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…

RN实现全局数据共享(非Redux,使用原生内置的方法实现)

下面这个方法是在RN使用全局数据共享的,使用原生React的方式搞得,相对于Redux配置相对简单,适合小型项目 项目内创建MyContext.js // MyContext.jsimport React from react;const MyContext React.createContext();export default MyContext;App.js引入 // App.jsimport Rea…

浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的

在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的&#xff0c;那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript&#xff0c;我们就可以操作DOM树中任意一个节点&#xff0c;例如隐藏/显示节点、改变颜色、…

github 仓库 修改开源协议

记录一下如何修改协议。 然后commit到你想要的主干或者分支就可以了。

视频汇聚/安防监控/EasyCVR平台播放器EasyPlayer更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构&#xff0c;可以在复杂的网络环境中快速、灵活部署&#xff0c;平台视频能力丰富&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…