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

前言

由于之前的文章已经介绍过了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.mzph.cn/news/750427.shtml

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

相关文章

调皮的String及多种玩法(上部)

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 欢迎🙏点赞🗣️评论📥收藏💓关注 💖衷心的希…

数据库引论:2.SQL简介

SQL(Structured Query Language,结构化查询语言) 2.1 SQL查询语言概览 SQL语言包含 数据定义语言(Data-Definition Language,DDL)。SQL DDL提供定义关系模式、删除关系以及修改关系模式的命令。数据操纵语言(Data-Manipulation Language,DML)。SQL DML提供从数据库中查询信息…

企业微信 API 接口调用教程:深入解析企业微信 API 的用法

本文通过 access_token 凭证的方式来讲解怎么调用 企业微信 API,并一步步介绍如何获取企业微信 API 的 corpsecret、corpid、access_token 凭证以及怎么向企业微信的应用发送消息。 企业微信 API 在线地址为:qiyeweixin.apifox.cn/ ,这个在线…

蓝桥杯单片机快速开发笔记——PWM

一、原理分析 使用定时器输出PWM(脉宽调制)信号是通过微控制器的定时器模块来生成一种周期性的脉冲信号,通过控制脉冲的高电平时间(占空比)来控制输出信号的平均功率。以下是生成PWM信号的基本原理概述: 定…

计算机网络——物理层(编码与调制)

计算机网络——编码与调制 基带信号和宽带信号编码与调制数字数据编码为数字信号非归零编码归零编码反向不归零编码曼彻斯特编码差分曼彻斯特编码4B/5B编码 数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号 我们之前讲了物理层的一些基础知识和两个准则&a…

4.如何通过组策略给所有电脑挂载共享文件路径?AD域控如何给所有加域的电脑挂载共享文件夹路径?

(1)如何将一个文件夹设置为共享文件? 步骤如下: 1.找到你想共享的文件夹。 2.右键单击该文件夹,选择“属性”选项。 3.在文件夹属性窗口中,切换到“共享”选项卡。 4.点击“共享此文件夹”复选框&…

智慧城市与数字孪生:共创未来城市的智慧生活

目录 一、智慧城市与数字孪生的概念与特点 二、智慧城市与数字孪生共创智慧生活的路径 1、城市规划与建设的智能化 2、城市管理与服务的智慧化 3、城市安全与应急管理的智能化 三、智慧城市与数字孪生面临的挑战与对策 四、智慧城市与数字孪生的发展趋势与展望 1、技术…

SQL-Labs靶场“32-33”关通关教程

君衍. 一、32关 GET单引号闭合宽字节注入1、源码分析2、宽字节注入原理3、联合查询注入4、updatexml报错注入5、floor报错注入 二、33关 GET单引号addslashes逃逸注入1、源码分析2、联合查询注入3、updatexml报错注入4、floor报错注入 SQL-Labs靶场通关教程: SQL注入…

安装python、pycharm,打好基础,准备飞起

python安装使用 安装python安装包 以下为自定义安装python安装包,无特殊要求可直接进行安装。 勾选Add Python 3.6 to PATH, 然后点击 Customize installation,进行自定义安装。 所有的都勾上,然后点击Next。 可选择自己需要…

(附数据集)基于lora参数微调Qwen1.8chat模型的实战教程

基于lora微调Qwen1.8chat的实战教程 日期:2024-3-16作者:小知运行环境:jupyterLab描述:基于lora参数微调Qwen1.8chat模型。 样例数据集 - qwen_chat.json(小份数据) - chat.json(中份数据&…

Day39:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化

目录 SpringBoot-监控系统-Actuator SpringBoot-接口系统-Swagger 思维导图 Java知识点: 功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方组件使用等. 框架库:MyB…

hot100 -- 矩阵

👂 Peter Pan - kidult. - 单曲 - 网易云音乐 👂 Bibliothque(图书馆) - Jasing Rye - 单曲 - 网易云音乐 目录 🌼前言 🌼二分模板 🎂矩阵置零 AC 标记数组 AC 标记变量 🚩…

【JAVA】JAVA方法的学习和创造

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

【04】WebAPI

WebAPI 和标准库不同,WebAPI 是浏览器提供的一套 API,用于操作浏览器窗口和界面 WebAPI 中包含两个部分: BOM:Browser Object Model,浏览器模型,提供和浏览器相关的操作DOM:Document Object Model,文档模型,提供和页面相关的操作BOM BOM 提供了一系列的对象和函数,…

OpenCV 环境变量参考

返回:OpenCV系列文章目录(持续更新中......) 上一篇: OpenCV4.9.0配置选项参考 下一篇:OpenCV4.9.0配置选项参考 引言: OpenCV是一个广泛使用的图像和视频处理开源库,拥有丰富的图像算法和函…

51单片机-AT24C02(I2C总线)

目录 一,介绍及元件工作原理 7.时序结构(重要) 8.i2C总线数据帧(重要) 二,应用 一,介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…

一起学数据分析_2

写在前面:代码运行环境为jupyter,如果结果显示不出来的地方就加一个print()函数。 一、数据基本处理 缺失值处理: import numpy as np import pandas as pd#加载数据train.csv df pd.read_csv(train_chinese.csv) df.head()# 查看数据基本…

05.BOM对象

一、js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如:变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型, 定义了一套操作HTML文档的APIBOM 浏览器对象模型,定义了一套操作浏览器窗口的API 二、windo…

wsl ubuntu 安装cuda nvcc环境

wsl ubuntu 安装cuda环境: CUDA Toolkit 11.6 Downloads | NVIDIA DeveloperDownload CUDA Toolkit 11.6 for Linux and Windows operating systems.https://developer.nvidia.com/cuda-11-6-0-download-archive?target_osLinux&target_archx86_64&Distri…