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

对称非对称加密,https和http,https通讯原理,Charles抓包原理

文章目录

  • 对称加密的非对称加密
  • http和https原理
  • TCP三次握手四次挥手
  • https通讯流程:
  • Charles抓包原理

对称加密的非对称加密

对称加密:发送方的接收方式使用同一个秘钥进行加密和解密,发送方将需要发送的数据,选择某种加密算法,加上秘钥,加密之后传输给接收方,接收方接收到数据使用秘钥和相同的加密算法进行解密,获得数据信息。对称加密的优点是加密速度快,但是,接收方和发送方拥有同样的秘钥,容易泄露,安全得不到保证,且秘钥传递的过程中也容易泄露。

非对称加密:发送方生成一对秘钥,公钥和私钥,公钥可以交给别人,用来加密,私钥用来解密,自己保留,传输过程中即使公钥和传输的数据别截获了,没有私钥也解密不了。

http和https原理

http是什么:http是一种基于请求响应的应用层协议,设计的初衷是为了简单高效的传输超文本数据,所以不涉及任何的数据加密,身份校验和完整性验证,安全性较差。

https是什么:https在http的基础上使用对称加密和非对称加密保证的数据传输的安全性,在握手阶段使用非对称加密传输秘钥,建立连接之后使用秘钥进行对称加密,保证数据的安全,https对数据进行加密,身份的校验还有数据的额完整性,保证数据的安全。

TCP三次握手四次挥手

TCP三次握手:目的是为了在不可靠的网络中建立可靠的连接,并协商初始序号

  • 第一步,客户端服务端发送SYN请求请求建立连接
  • 第二步,SYN收到之后发送SYN+ACK报文,表明同意建立连接
  • 第三步,客户端收到消息之后发送ACK再次确认
  • 之后就可以发送消息

在这里插入图片描述

为什么不能两次握手,要三次握手?这个是为了防止失效的连接请求再次发送到了服务端,服务端同意连接之后,客户端拒绝了,但是服务端认为建立了连接,等待消息的接收,造成资源浪费。

TCP四次挥手:目的是为了确保算法数据传输完毕,优雅释放连接

  • 第一步,客户端发送fin表示不再发送数据,告诉服务端我数据传输结束
  • 第二步,服务端接收到数据,发送ACK确认,表明收到服务端的请求,但是我可能还有一些数据需要发送给你,你还要接收
  • 第三步,服务端发送完数据之后,发送fin报文,表明我的数据也发送完了,可以关闭了
  • 第四步,客户端回复ACK确认收到信息,关闭连接

在这里插入图片描述

为什么不能两次挥手:由于客户端请求关闭连接,自己没有数据需要发送,但由于http是全双工的两边都是可以发送数据,服务器的数据可能还没有发送完成,这个时候客户端还需要接收数据不能关闭连接

为什么不能三次挥手:三次挥手是可以的,不过得满足特定条件,当客户端发送关闭连接,这个时候服务端已经也没有数据需要发送了,就可以进行关闭

第四步能不能不要了:不能,第四步是为了确保客户端已经收到了服务端的fin信息,服务端收到之后才会关闭连接,如果没有收到信息,服务端会进行超时重传,再次发送fin给客户端,在2msl时间里,客户端收到信息之后回再次发送ACK

https通讯流程:

TCP三次握手

  1. 目的:建立可靠的数据传输
  2. 过程:
    • 客户端 → 发送SYN包 → 服务器
    • 服务器 → 回复SYN+ACK包 → 客户端
    • 客户端 → 发送ACK包 → 服务器

TLS握手

  1. 目的:保证数据的安全性,协商秘钥和验证服务器证书
  2. 过程:
    • 客户端发起握手,发送信息(支持的TSL版本,支持的加密套件,客户端生成的随机数)
    • 服务器响应,发送信息(确定的TSL版本,选定的加密套件,服务器生成的随机数,服务器的CA证书)
    • 客户端验证服务器的证书
    • 交换密钥,客户端生成预主密钥,使用服务器的公钥加密,发送到服务器,服务器解密获取预主密钥
    • 生成会话密钥,服务器和客户端都使用两个随机数和这个预主密钥生成会话密钥

数据传输

  1. 目的:使用协商的对称密钥加密实际通信数据
  2. 过程:
    • 客户端和服务端使用秘钥对数据加密之后再发送

TCP四次挥手

  1. 目的:安全关闭TCP连接,释放资源
  2. 过程:
    • 客户端 → 发送FIN包 → 服务器。
    • 服务器 → 回复ACK包 → 客户端。
    • 服务器 → 发送FIN包 → 客户端。
    • 客户端 → 回复ACK包 → 服务器。

Charles抓包原理

作为一个代理服务器,拦截客户端和服务器之间的通讯,做响应的处理之后再发送到对应的地址

  • 客户端向服务发送证书请求
  • Charles拦截请求,伪装客户端向服务器发送请求
  • 服务器返回CA证书
  • Charles获取证书的公钥,自己制作证书,返回自己证书给客户端
  • 客户端检查证书,生成秘钥,使用Charles公钥加密,发送给服务器
  • Charles拦截,使用自己的私钥解密,使用服务端的公钥加密,发送给服务器
  • 服务器用自己的私钥解密,想客户端发送响应
  • Charles拦截,自己给客户端响应
  • 连接建立

在这里插入图片描述

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

相关文章:

  • 三态门Multisim电路仿真——硬件工程师笔记
  • 大模型在多发性硬化预测及治疗方案制定中的应用研究
  • Python 安装使用教程
  • 探索未来AI的无限可能:使用oTTomator Live Agent Studio平台上的开源AI代理!
  • JSON-LD 开发手册
  • 衡石科技chatbot分析手册--钉钉数据问答机器人配置
  • 衡石科技使用手册-企业即时通讯工具数据问答机器人用户手册
  • java中agent的作用
  • 免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成
  • 云手机主要是指什么?
  • 纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)
  • DAY 45 Tensorboard使用介绍
  • 2 大语言模型基础-2.2 生成式预训练语言模型GPT-2.2.2 有监督下游任务微调-Instruct-GPT强化学习奖励模型的结构改造与维度转换解析
  • 高效读取文件中指定行段的两种方法
  • 矩阵方程 线性代数
  • EA自动交易完全指南:从策略设计到实盘部署
  • 区块链技术有哪些运用场景?
  • CppCon 2018 学习:A Little Order! Delving into the STL sorting algorithms
  • 《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
  • mkyaffs2img 的 命令行工具的编译
  • Dubbo3高并发控制实战技巧
  • SCAU期末笔记 - 操作系统 选填题
  • QT中QSS样式表的详细介绍
  • localStorage 和 sessionStorage
  • Python + Selenium 自动化爬取途牛动态网页
  • 在vue当中使用动画
  • Hily×亚矩云手机:社交元宇宙的“云端心跳加速器”
  • JVM 垃圾回收(GC)笔记
  • LLaMA-Factory框架之参数详解
  • Webpack原理剖析与实现