HTTPS协议和HTTP协议的区别详细图解

news2025/2/6 2:56:23

文章目录

  • HTTPS协议
    • 加密是什么?
    • 对称加密
    • 非对称加密
  • Cookie 和 Session的区别

HTTPS协议

HTTP协议内容都是按照文本的方式明文传输的,是没有经过加密的,没有加密就意味着裸奔,所以协议中的内容就很容易引起一些不良人士的获取和篡改。

比如,我们想要在网上下载一个软件时,有时候,下载的软件包并不是我们想要的软件,而是其他的软件,这种情况就是对我们协议中的内容进行了篡改;

对于这种危险,所以就引入了HTTPS,HTTPS 也是一个应用层协议,是在HTTP协议的基础上引入了“加密层”,对协议内容进行了加密;

加密是什么?

加密就是把 明文(要传输的信息),经过中间一系列的转换,最后变成密文(将信息隐藏)

解密就是将 密文 经过一系列的转换,转变成明文

在 加密和解密 过程中,都需要利用一些中间数据来辅助加密或解密的过程,这些数据就称为密钥;

例如,如《水浒传》中梁山为了拉卢俊义入伙,“智多星”吴用和宋江便生出一段“吴用智赚玉麒麟”的故事来,利用卢俊义正为躲避“血光之灾”的惶恐心理,口占四句卦歌,写在卢俊义的家中:

芦花丛中一扁舟,

俊杰俄从此地游。

义士若能知此理,

反躬难逃可无忧。

暗藏“卢俊义反”四字,广为传播。结果,成了官府治罪的证据,终于把卢俊义“逼”上了梁山。

明文:芦花丛中一扁舟,俊杰俄从此地游。义士若能知此理,反躬难逃可无忧。

暗文:卢俊义反

密钥:每句话的第一个字(假设成一个工具),在明文转密文时,需要利用这个工具,密文转明文时,也需要这个工具

加密的方式有很多,但是总体主要分为两大类:对称加密 和 非对称加密

对称加密

加密和解密使用的密钥,是同一个密钥

假设密钥为key

明文 + key => 密文

密文 + key => 明文

举个简单的例子:

假设 key = 8888,info = 1234,使用按位与的方法对 info 进行加密,就得到密文b:

b = info ^ key = 1234 ^ 8888 = 9834

密文 b 再按位与 key 就得到明文 info :

info = b ^ key = 1234

对称加密如下图,在客户端这里,将请求通过密钥转换成了密文后发送给服务器,就算是在中途被黑客获取,由于黑客获取到的是密文,黑客就不容易破解,不容易拿到真的内容,就会更安全一点,服务器这边拿到密文后,通过密钥将密文进行解密,转换成明文请求

在这里插入图片描述

但是,上述的对称加密就有一个致命的问题,因为,一个服务器并不是只和一个客户端进行通信的,它可能和许多的客户端都在通信,那么,这许多的客户端密钥都是相同的吗?答案是:不是的。

如果是相同的,那么,扩散性就太大了,只要知道一个密钥,就可以解开所有的密文,这样是不行的,所以每个客户端的密钥都是不同的,那么,这样就会出现一个比较复杂的问题,就是,服务器要记录每个客户端和对应密钥的关联关系。

所以每个客户端在和服务器建立连接时,就会把密钥给产生出来(涉及到一些随机数机制在里面,保证了每个客户端生成的密钥都不同),然后,客户端再将自己的密钥通过网络传输给服务器;但是,这下就有麻烦了,**将自己的密钥通过网络通信传输给服务器,**如果密钥被黑客截获了,这不就凉了么。所以,就引入了“非对称加密”!!!

非对称加密

非对称加密 有两个密钥(一对),这俩密钥,一个称为“公钥”(公钥就是可以公开的),一个称为“私钥”(私钥是只能自己拥有),这里的加密和解密方式就是:

在这里插入图片描述

非对称加密这里就可以使用公钥加密,私钥解密 或者 私钥加密,公钥解密的方式,如下图:

1️⃣服务器会生成一对密钥,就是公钥和私钥,服务器持有私钥,客户端持有公钥

2️⃣客户端会生成对称密钥,通过公钥将对称私钥进行加密,通过网络发给服务器,就算是中间的路由设备被黑客入侵,黑客拿到的也是加密后的请求,因为公钥加密需要私钥解密,但是私钥只有服务器才有,这样就大大提高了安全性,然后,服务器收到密文请求后,利用手里面的私钥进行解密,拿到对称密钥,然后,服务器再给客户端返回响应,进行确认

3️⃣这时候,客户端和服务器就都拿到了对称密钥,在之后的通信过车中,客户端在使用对称密钥加密,服务器使用对称密钥解密,就很大程度提高了安全性;
在这里插入图片描述

既然引入了非对称加密,直接用非对称加密不就行了,为什么还要使用对称加密呢???

因为,进行非对称加密/解密,运算成本比较高,运算速度也比较低,对称加密,运算成本低,速度快。

所以,使用非对称加密,只是用来进行这种关键环节(密钥传输)的传输,后续要传输大量的业务数据,使用对称加密效率更高。

如果业务数据都使用非对称加密,整体的传输效率就会大打折扣,在TCP那里,因为可靠性带来的影响,就引入了许多机制想方设法的来提高效率,如果在应用层再使用非对称加密,那么前面提高的效率不都付诸东流了么,引入安全性,引入加密,也肯定是会影响效率的,但是,影响归影响,尽量把这里的影响降到最低。

上述的 对称加密 + 非对称加密 就已经大大提高了安全性,但是只有这些,还是不够的,上述流程还存在严重的漏洞,如果黑客利用好这个漏洞,仍然是可以获取到原始的明文数据的!!!

这里面的漏洞的就是 “中间人攻击”

过程如下:

1️⃣服务器生成公钥pub1,私钥priv1,然后将公钥发送给客户端

2️⃣在传输过程中,公钥pub1传输到被黑客入侵的设备上时,黑客自己生成了一个公钥pub2,私钥priv2,然后将公钥pub1进行替换,替换成黑客的公钥pub2,再发送给客户端

3️⃣客户端拿到公钥pub2后,使用公钥将对称密钥加密,然后再发送给服务器,在传输过程中,黑客拿到这个加密对称密钥后,因为这个对称密钥是由黑客的公钥pub2加密的,而私钥priv2也在黑客手中,所以黑客就可以获取到这个对称密钥。

4️⃣黑客获取到对称密钥后,因为服务器的公钥pub1已经被黑客截取,所以黑客再使用服务器的pub1将对称密钥加密,再发送给服务器,就这样,看着好似风平浪静,其实暗潮汹涌😐,之后进行通信时,黑客就可以拿着对称密钥对我们的数据进行解密;

在这里插入图片描述

如何解决上述中间人攻击问题呢???

之所以能进行中间人攻击,关键要点在于客户端没有“分辨能力”,客户端不知道这个公钥是不是黑客伪造的。对于这种情况,HTTPS就引入了“公证机构”,对服务器生成的公钥向公证机构提出申请(提交一些资料,例如域名,公钥,厂商等),公证机构就会进行审核,审核通过后就会给服务器颁发一个“证书”。

这个证书是计算机里的概念,不是纸质证书,就是一段结构化的数据,这段数据中就会包含一些重要信息,例如,服务器公钥,证书的过期时间,数字签名等,然后服务器就会保存好这个证书,之后客户端就不再是向服务器索要公钥了,而是索要证书,如下图讲解:

1️⃣客户端会向服务器索要证书,然后服务器返回证书给客户端

2️⃣客户端拿到证书后就对证书进行校验

证书校验的核心机制就是数字签名!!!

数字签名就是一个加密后的校验和,在公证机构给服务器颁发证书时,公证机构会针对证书中的各个属性按照一定的算法,计算出一个校验和,并且对这个校验和进行加密,就得到了这个数字签名。

这里的加密也是非对称加密,公证机构自己生成一对公钥和私钥(但是这里的公钥和私钥和服务器生成的公钥和私钥是不一样的),公证机构自己持有私钥,公钥会发布给每个客户端,而这个公钥往往都是内置在系统中的,安装了操作系统,就会自带公证机构的公钥

在这里插入图片描述

3️⃣客户端拿到证书中的“数字签名”后,使用系统内置的公证机构的公钥对数字签名进行解密,拿到最初的校验和,之后客户端再对证书中的属性按照同样的算法再进行计算,得到一个新的校验和,然后拿新的校验和和证书中的校验和进行对比,如果一致,就可以认为证书没有被篡改过,证书中的公钥就是可信的;

4️⃣接下来就可以约定对称密钥,进行网络通信了;

所以,在上述机制下,黑客就无法对证书中的内容进行篡改,即使窜开了,也很容易被发现,因为,当黑客收到证书之后,如果直接修改里面的公钥,替换成自己的公钥,那么客户端在进行校验时,校验和就会不一致,客户端就可以认为是篡改过了,这个情况相信大家也都遇见过,这种情况客户端这边往往会弹出一个对话框进行警告,当前页面存在风险;

如果黑客替换了公钥之后,能否自己在计算出一个“数字签名”呢???

答案是:不能的,因为针对校验和加密时,需要使用 公证机构 的私钥,才能进行加密,而黑客没有这个私钥,如果黑客使用自己的私钥对校验和加密,那么,客户端这边就无法使用系统中内置的公证机构的公钥进行解密;

综合上述内容,只要通过了校验,证书就是可信的,就说明了证书中的公钥就是服务器原始的公钥;

所以就可以得出结论:

HTTPS 加密 是通过:

1️⃣使用对称加密,加密业务数据

2️⃣使用非对称加密,加密了对称密钥

3️⃣使用证书,保护服务器的公钥

通过这三部分相结合,最终保证了HTTPS的安全性!!!

Cookie 和 Session的区别

网络通信过程中,使用的是HTTP协议,它是一种无状态协议,比如,在登录一个网站时,登录成功后,之后在访问这个网站的其他页面时,都需要重新登录,无法识别出当前用户是否已经登录了,不会保存用户的这个登录状态。所以,针对这种情况就是用cookie和session来保存用户的信息。

举个例子,在刚入大学时,学校就会收集新生的基本信息,例如,姓名,年龄,身份证号,手机号等,来保存到学校的教务系统中,但是,在这么多的学生信息中,学校是如何查询某个学生的具体信息呢,所以,学校就给每个学生都搞了一个学号,使得学号和学生的个人信息对应起来,在疫情那几年呢,学生进学校都需要刷学生证,通过刷学生证,在学校的教务系统中检查出来我是否是本校的学生,包括在学校内,我就可以拿着学生证去任何一个地方。所以,在这些角色里面,教务系统就相当于一个服务器,学生的信息就保存在服务器的session中,每个学生都会有一个session,学号就相当于是一个SessionId据,学生证就相当于是一个cookie,通过拿着学生证,学校就可以通过学生证中的学号从从教务系统中识别出我的身份,就能够去到学校的任何一个地方。

Cookie是浏览器持久化存储数据的一种机制,主要用来保存页面生成的数据或者服务器返回的数据,Cookie中保存的数据也是键值对的格式(用户自定义的),之后也是可以将Cookie中的值发送给服务器,然后服务器使用Cookie来完成一些业务逻辑;

所以Cookie 是客户端存储数据的机制

Session 是服务器存储数据的机制

机制,主要用来保存页面生成的数据或者服务器返回的数据,Cookie中保存的数据也是键值对的格式(用户自定义的),之后也是可以将Cookie中的值发送给服务器,然后服务器使用Cookie来完成一些业务逻辑;

所以Cookie 是客户端存储数据的机制

Session 是服务器存储数据的机制

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

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

相关文章

STM32自制手持小风扇实验

1.1 介绍: 实验功能说明:功能(1)按一下按键小风扇开启,再按一下关闭。 功能(2)按一下按键小风扇一档风速,再按一下二挡,依次三挡…关闭。 按键模块说明:按下…

CommandLineRunner

CommandLineRunner 是 Spring Boot 中的一个接口,它允许你在 Spring 应用程序启动之后(即在 SpringApplication.run() 执行完成后)立即执行一些代码。这在你需要初始化数据、检查配置文件参数或执行其他启动任务时非常有用。 实现 CommandLin…

win10蓝屏CRITICAL_PROCESS_DIED

目录 前言 处理过程 第一阶段处理:重置虚拟内存 第二阶段处理:sfc /scannow 扫描系统并修复损坏文件 前言 连续一周开机一段时间后蓝屏,刚开始的蓝屏提示的是KERNEL_DATA_INPAGE_ERROR,后来经过一番操作,依然出现…

vue使用axios请求后端数据

前后端分离项目的基础: 前后端跨域访问 vite.config.js中加入 // 1.为什么要跨域 //因为浏览器的同源策略,不同站点之间访问需要跨域 //实现跨域的方式:server: {proxy: {// 假设要跨域访问的后端 API 地址以 /api 开头/api: { //表示拦截以/api开头的…

牛客算法小题

目录 牛客.求和​编辑 牛客.abb 牛客.合并k个有序链表 牛客.滑雪(暴力->递归->记忆化搜索) 牛客.旋转字符串 牛客.求和 我没想到是dfs,另外我的dfs能力确实也不强,另外难度大的是他的那个输出 import java.util.Scanne…

医用氧检测标准:医用氧用什么检怎么检都做了明确规定

新规在《中国药典》2020 年版二部 XGB2021-061条于2022年5月22日实施。 医用氧技术指标&#xff1a;氧≥99.5% 、一氧化碳<0.0005、二氧化碳&#xff1c;0.03%、水分含量&#xff1c;0.0067%&#xff09; 一氧化碳对人体有害&#xff0c;过量的二氧化碳也会影响人的呼吸&a…

2024.8.20 作业

目录 思维导图&#xff1a; 面试题练习&#xff1a; 1、C语言中指针数组和数组指针的区别 2、结构体字节对齐的原理 3、TCP和UDP的区别 4、同步通信和异步通信的区别 5、多线程的理解 6、大小端验证 7、互斥锁 8、共享内存特点 9、C语言的指针 10、gcc编译 11、socket套接字 1…

探索顶级PDF水印API:PDFBlocks(2024年更新)

引言 在一个敏感信息常常面临风险的时代&#xff0c;能够轻松高效地保护文档的能力至关重要。PDF水印已成为企业和个人寻求保护其知识产权、确保文件保密性的基本工具。 PDFBlocks 文字水印 API是什么&#xff1f; PDFBlocks API 提供了一个强大的解决方案&#xff0c;用于在…

轮询系统寻客户

寻找收单客户&#xff0c;不管是源头老板&#xff0c;还是二手中介&#xff0c;不管是PayPal&#xff0c;条纹&#xff0c;还是其他信用卡或轮询系统&#xff0c;只要能收单&#xff0c;都可以免费加入我们。 ​在寻卖单客户&#xff0c;不管是源头订单还是跳转订单&#xff0c…

Redis篇一:初识Redis

文章目录 前言1. 初始Redis2. MySQL VS Redis3. 什么是分布式系统&#xff08;也是一种处理大量数据时的处理方式&#xff09;3.1 单机架构3.2 数据库与应用服务分离3.3 负载均衡3.4 数据库读写分离3.5 引入缓存&#xff08;Redis&#xff09;3.6 数据库分库分表3.7 引入微服务…

如何使用Web Scraper爬虫抓取数据?

Web Scraper是一个基于Chrome/火狐浏览器的插件&#xff0c;能够在网页上自动爬取数据&#xff0c;提供了丰富的配置&#xff0c;支持自动翻页、登录认证、JavaScript渲染等等&#xff0c;可以解决多数爬虫难题。 Web Scraper的安装也很简单&#xff0c;在Chrome应用商店里搜索…

【每日刷题】Day104

【每日刷题】Day104 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 2. 1004. 最大连续1的个数 III…

RabbitMQ环境搭建

2.5.RabbitMQ 安装 a.docker方式安装&#xff1a; 1.在我的docker学习笔记中具有详细的安装过程 b.rpm包方式安装&#xff1a; 1.MQ下载地址2.这里是提前下载好后上传安装包到服务器得opt目录下&#xff1a; 3.安装MQ需要先有Erlang语言环境&#xff0c;安装文件的Linux命令…

机器学习:逻辑回归--下采样

目录 前言 一、为什么使用下采样 1.例如&#xff1a; 2.导致&#xff1a; 3.办法&#xff1a; 4.结果&#xff1a; 二、代码实现 1.完整代码 2.导入库 3.可视化混淆矩阵 4.导入数据 5数据预处理 6.下采样 7.取出训练集和测试集 8.建立模型 9.进行测试 总结 前…

Spring模块详解Ⅰ

目录 SpringSpring框架的主要功能模块1. Core Container&#xff08;核心容器&#xff09;2. Data Access/Integration&#xff08;数据访问与集成&#xff09;3. Web4. AOP (Aspect-Oriented Programming&#xff0c;面向切面编程)5. Instrumentation&#xff08;工具集&#…

CentOS7设置默认免密登录用户root

CentOS7设置默认免密登录用户root 步骤1、打开要更改的 CentOS 系统2、切换到root用户2、reboot重启系统 步骤 1、打开要更改的 CentOS 系统 2、切换到root用户 2、reboot重启系统

前端(Vue)动态换肤的通用解决方案及原理分析(1)

动态换肤原理分析 比如此处将来会实现换肤功能&#xff0c;所以我们不能直接写死&#xff0c;而需要通过一个动态的值进行指定。 <el-menu:default-active"activeMenu":collapse"!$store.getters.sidebarOpened":background-color"$store.getters…

手机使用技巧:如何恢复Android手机不见的短信

在您的 Android 手机上丢失短信可能是一种令人沮丧的经历&#xff0c;尤其是在文本包含重要信息的情况下。幸运的是&#xff0c;有一些方法可以在Android上恢复已删除的短信。在这篇博文中&#xff0c;我们将讨论几种在Android手机上恢复已删除短信的方法。 为什么需要恢复Andr…

测绘程序设计|认识VS2017|VS2017新建项目|VS2017使用技巧

由于微信公众号改变了推送规则&#xff0c;为了每次新的推送可以在第一时间出现在您的订阅列表中&#xff0c;记得将本公众号设为星标或置顶喔~ 分享了如何使用VS2017新建项目、VS2017的项目结构以及一些使用技巧~ &#x1f33f;前言 Visual Studio作为微软旗下一款热门的编程…

C语言典型例题46

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 题目&#xff1a; 习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的&#xff0c;奖金可提成10%&#xff1b; 利润高于100 000元&#xff0c;低于200000元&…