浅谈HTTP 和 HTTPS (中间人问题)

news/2024/5/25 9:56:42/文章来源:https://blog.csdn.net/qq_65501447/article/details/136669462

前言

由于之前的文章已经介绍过了HTTP , 这篇文章介绍 HTTPS 相对于 HTTP 做出的改进

开门见山:

HTTPS 是对 HTTP 的加强版

主要是对一些关键信息 进行了加密

一.两种加密方式

1.对称加密

公钥 + 明文 = 密文

密文 + 公钥 = 明文

2.非对称加密

举个例子就好比 小区邮箱

提供一把锁(公钥,是给邮递员的) ,和一把钥匙(私钥,自己吃有)

邮递员把你的信,通过这把锁,锁到你的信箱里(使用公钥加密)

然后你就可以拿着你的钥匙打开邮箱(使用私钥解密)

前提是 锁 和 钥匙 是配对的(也就是公钥和私钥是配对的)

二.HTTPS的工作过程

总的目标:针对HTTP 这里的 header 和 body 进行加密

1.对称加密

但是上图有个很明显的问题,客服务器如果给很多的客户端发对接,那么这些客户端拿的是同一个 密匙 吗?

很明显,必须要求这些客户端的密匙是不一样的,这样彼此才不知道对方的密匙是什么

那么此时就要求每个客户端的密钥都不同,就需要每个客户端在和服务器进行连接的时候,把自己的密钥生成出来,客户端再通过网络发送给服务器

但是如果黑客把密钥进行了抓取,那么加密操作就形同虚设

那么如何进行解决呢,如果给密钥套上一层密钥可以吗?答案按是不行的,套多少次都会被截取。

2.非对称加密

跟前面说的一样 , 使用公钥和私钥,也就是对称密钥!!

就是客户端和服务器都生成自己的公钥和私钥

1.客户端给服务器发送一条请求,专门要服务器的公钥

2.服务器把私钥藏好,把公钥给客户端(公钥可能被劫持), 客户端使用公钥进行加密,再进行传输的时候,即使被黑客进行劫持,但是只有私钥才能解密,而私钥在服务器哪里!

3.服务器手里持有私钥,服务器可以对对称密钥进行解密,然后就可以得到了原始的对称密钥。

这里有个问题:既然已经引入了非对称加密,那么为什么还要引入对称加密呢?

 答案就是:效率。每个业务逻辑要求的是不一样的,引入非对称加密势必会影响到整体的性能,                         也就是在合适的场景下使用非对称加密。对称加密也有他自己的用武之地。

3.中间人问题

非对称加密其实还有一个比较隐蔽的问题,那就是中间人问题

总的来说就是

  1. 黑客 把pub1 进行获取 , 然后使用 自己的 pub 2 发给客户端,
  2. 客户端信以为真,使用 pub2 进行加密转给了黑客,黑客使用 自己的 pri2 进行解密之后 , 拿到了关键的对称密钥。
  3. 还不算完,为了不让服务器发现,黑客还把这个对称密钥使用之前获取的 pub1 加密,发给了服务器。
  4. 服务器以为是客户端发来的,那么就使用了pri 2 进行解密,得到了对称密钥。
  5. 此时,三者都有了对称密钥,那么客户端和服务器之间的通信,就非常危险了!

🎈那么如何进行解决呢?

                                        ---------->答案就是引入公证机构

服务器再创建的时候,需要先向公证机构进行申请。公证机构根据服务器的一些属性颁发 证书,证书中包含 网站域名,服务器公钥,过期时间,数字签名(被加密后的校验和)等。服务器就会保存好这个证书。

数字签名就是公证机构针对证书中的各个属性,计算出一个校验和,然后使用自己的私钥进行加密。

公证机构会生成自己的公钥和密钥。公钥通过操作系统分发给各个服务器,私钥自己进行保存。

当两者再次进行通信的时候,客户端收到服务器的证书,然后使用内置的公钥进行解密出数字签名,如果发现一致,那么就意味着服务器的证书是公证机构颁发的,是可信的! 因为服务器的数字签名是通过公证机构的对称密钥进行加密的。


总的来说:

https进行加密:

  1. 对称加密,加密业务数据
  2. 非对称加密,加密对称密钥
  3. “中间人”攻击,发现问题!
  4. 使用证书,校验服务器的公钥

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

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

相关文章

上海亚商投顾:沪指缩量调整 传媒、游戏股逆势大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日震荡调整,上证50指数跌近1%,保险等权重板块走低,中国太保跌超…

蓝桥杯刷题(二分)

前言: 最近学校的学业有点重,好多课的作业一下布置导致我时间紧张,今天好不容易找到了整块的时间来刷刷题,不过有几道题难度对我来说有一点大了,所以到现在为止也没做几道,希望自己在后面能更勤奋一点吧。 …

什么是字节码?采用字节码的好处是什么?

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),字节码是一种中间代码,它是由源代码经过编译生成的一种二进制表示形式。字节码通常不针对特定的硬件平台,而是针对虚拟机设计的&…

Matlab中inv()函数的使用

在Matlab中,inv()函数是用来求解矩阵的逆矩阵的函数。逆矩阵是一个与原矩阵相乘后得到单位矩阵的矩阵。在数学中,矩阵A的逆矩阵通常用A^-1表示。 什么是逆矩阵 在数学中,对于一个n阶方阵A,如果存在一个n阶方阵B,使得…

基于STM32的感应开关垃圾桶

1.定时器介绍 1.1 工作原理 使用精准的时基,通过硬件的方式,实现定时功能。 1.2 定时器分类 基本定时器(TIM6~TIM7)通用定时器(TIM2~TIM5)高级定时器(TIM1和TIM8) 1.3 通用定时器…

【系统架构师】-第19章-大数据架构设计理论与实践

四个特点: 大规模(Volume)、高速度(Velocity)和多样化(Variety),价值(Value)。 五个问题: 异构性(Heterogeneity)、规模…

12、Linux-Shell01:变量、字符串和数组、注释

目录 一、基础知识 二、变量 1、定义变量 2、使用变量 3、只读变量 4、删除变量 三、字符串和数组 1、字符串 ①单引号和双引号的区别 ②# ③切片 2、数组 四、注释 1、单行注释 2、多行注释 一、基础知识 Linux的Shell有很多种,这里讨论的是Bash。 …

Java双非大二找实习记录

先说结论:2.22→3.6线上线下面了七家,最后oc两家小公司,接了其中一个。 本人bg: 真名不经传双非一本,无绩点无竞赛无奖项无实习,23年12月开始学java。若非要说一点相关的经历,就是有java基础&…

SSA-LSTM多输入分类预测 | 樽海鞘优化算法-长短期神经网络 | Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

如何在 MySQL 数据库中安全地删除用户信息

在任何数据库管理系统中,安全地删除用户信息都是至关重要的。MySQL 作为一种常用的关系型数据库管理系统,在执行删除用户信息操作时,需要谨慎行事,以确保数据安全和隐私保护。本文将介绍如何在 MySQL 数据库中安全地删除用户信息&…

【C++庖丁解牛】STL简介 | string容器初次见面

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. 什么是STL2. STL的版本…

WPF监控平台(科技大屏)[一]

跟着B站的视频敲了一个略微复杂的WPF界面,链接如下.在这里我详细的写一份博客进行设计总结. 系统介绍和配置及主窗口设计_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wy421Y7QD?p1&vd_source4796b18a2e4c1ec8a310391a5644b6da 成果展示 实现过程 总体来说,我的…

【数据结构】双向链表及LRU缓存的实现

目录 前言 1. 在原有的自定义链表类 Linked 的基础上,添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上,使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础上…

Windows10/11配置WSL(Ubuntu)环境

文章目录 WSL介绍WSL部署扩展:辅助工具Windosw Terminal安装下载 WSL介绍 传统方式获取Linux操作系统,是安装完整的虚拟机及镜像环境,例如虚拟机VMware 而使用WSL,可以以非常轻量化的方式,得到Linux系统环境 它无需单独虚拟一套硬…

Android的UI渲染机制(二)

安卓系统中有 2 种 vsync 信号: (1)屏幕产生的硬件 vsync信号,主要用于通知应用程序开始在自己的窗口“画布”中执行一帧画面的绘制和渲染 (2)由SurfaceFlinger将其转成的软件 vsync 信号,经由…

流浪动物救助小程序|基于微信小程序的流浪动物救助系统设计与实现(源码+数据库+文档)

流浪动物救助小程序目录 目录 基于微信小程序的流浪动物救助系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、寻宠信息管理 3、动物求助管理 4、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐…

【PHP + 代码审计】文件包含

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

阿里云环境下,从仅知的一个外网域名如何找出前端程序的部署所在和启动命令

一、背景 一个年久失修的前端项目,临时接到需求要迭代,三四年未迭代过的项目,交接更无从谈起。 所幸的是,源码还在,知道外网访问的入口地址。 本文试着带你一起找到该前端项目部署在哪台机器,以及发布的过…

回收小程序系统后台管理功能

会员管理:管理员可以查看和管理会员的基本信息,如姓名、联系方式、寄送地址和订单记录等。 产品管理:对回收物品进行管理,包括分类、规格设定、数据统计等。 订单管理:对所有订单进行追踪和管理,确保订单处…

22、设计模式之状态模式(State)

一、什么是状态模式 状态模式是一种行为型设计模式。它允许对象在内部状态发生改变时改变它的行为,简单地讲就是,一个拥有状态的context对象,在不同状态下,其行为会发生改变。 二、角色组成 上下文(Context&#xff0…