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

网络原理——HTTP/HTTPS ---- HTTPS

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

目录

    • HTTPS
      • 加密与解密
      • HTTPS的工作流程
        • 使用对称密钥来加密
        • 使用非对称密钥 来对 对称密钥进行加密
        • 第三方公证
        • 总结

HTTPS

https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部分就和 http一样了

其中 S => SSL(安全相关的协议) 即HTTPS = HTTP + SSL

HTTPS引入的背景就是 臭臭名昭著的 运营商劫持事件
实际上,不只是运营商可以劫持,其他黑客也可以劫持,来窃取用户的信息,或者篡改请求里面的内容

试想一下,如果黑客在用户登录支付宝的时候,获取到账户余额,甚至获取到 用户的支付密码,那么后果不堪设想

因此,在互联网上,明文传输是很危险的的事情

HTTPS就是在HTTP的基础之上进行了加密,进一步来保证用户的信息安全

加密与解密

加密就是将明文(要传输的信息) 进行一系列变更之后 生成 密文
解密就是 把密文 在进行一系列变更之后 还原成 明文

这两种之间的相互转化,是通过 密钥 来实现的
即 将明文通过 密钥 转化为 密文 就是加密
将 密文 通过 密钥 转化为 明文 就是解密

而对于加密,又分为两种方式
(1)对称加密 ,指的就是 加密和解密使用的是同一个密钥.这种加密,后续进行解密的速度比较快
(2)非对称加密,指的是,此时加密解密使用的密钥是一对,分为公钥和私钥. 这种加密后续解密的速度比较慢,但是安全性更高
可以使用公钥加密,此时就是私钥解密;若通过私钥加密.此时就是公钥解密

实际上,所谓的安全都是相对的,指的实际上就是破解的成本比较高

HTTPS的工作流程

http通信本身是一个不安全的通信,为了能够保证安全,引入了加密

使用对称密钥来加密

这是相对简单的方法
在这里插入图片描述
此时黑客截获的数据,看到的是加密后的数据,无法看到原始的数据,更不用说篡改数据了

但是存在一个很大的问题

对称密钥,当存在很多个客户端的时候,客户端必须保证每一个客户端都有自己的一个密钥,与别人不一样
因为如果所有的客户端使用的都是同一个密钥,那么黑客通过自己的电脑不就也能拿到对称密钥了吗,就能够进行解密了

此时就应该让客户端自己生成一个密钥,告诉服务器就好了
在这里插入图片描述
那么问题就会出现,
这样的密钥,如果直接通过明文传输,那么后续的数据加密也就 形同虚设了
如果使用 对称密钥进行加密 ,那么就会暴露出和上面一样的问题,造成死循环

此时就要引入非对称密钥

使用非对称密钥 来对 对称密钥进行加密

实际上,为什么不直接使用非对称密钥来加密请求数据?? 本质上就是因为 非对称密钥的加密解密操作 的系统开销高很多
,消耗的时间,也比对称密钥要高很多,不太适合使用非对称密钥的方式来加密 业务数据

此时首先要做的就是对 对业务数据进行加密的对称密钥 使用非对称密钥 进行加密

此时的工作流程就是:
服务器生成一对公钥和私钥,当客户端连上服务器后,此时就将公钥告诉客户端,私钥就自己持有

在这里插入图片描述
此时,对于非对称密钥来说,所有客户端(包括黑客)拿到的公钥都是一样的,但是也是无法解密的,因为私钥在服务器手里

但是实际上,这样还是会存在问题 — 中间人攻击
在这里插入图片描述
此时关键环节就是,黑客可以自己生成一对 公钥 pub2 和 私钥 pri2
在这里插入图片描述
客户端无法区分出,当前的公钥 pub2 是不是 服务器,还是被掉包了的

客户端就会拿着pub2针对 对称密钥进行加密,并且发送给服务器

此时黑客就能拿到 密文,针对pub2 使用 pri2进行解密,从而拿到这里的 对称密钥

继续把拿到的对称密钥 通过 pub进行加密,发送给服务器

那么黑客 面对就能拿到对称密钥,扮演服务器的角色,面对服务器的时候,扮演客户端的角色,数据就泄露了

那么如何解决中间人攻击呢?? 就要引入第三方公证

第三方公证

实际上,解决中间人攻击最关键的一点就是 ,让客户端能够区分,当前来自服务器的公钥,是不是被伪造出来的公钥

解决办法就是引入第三方公证

公证机构正对客户端拿到的 公钥进行公证,此时客户端 看到这个公钥被公证了,就能认为 是这个公钥是合法的了

对于服务器,在自己的网站上线之后,就要去第三方公证机构 申请一个证书
在这里插入图片描述
其中证书里面就会包含一些信息
(1)发证机构
(2)证书的有效期
(3服务器的公钥
(4)证书的所有者
(5)持有者网站的主域名
(6)数字签名

在这里,最主要的就是这个数字签名

实际上,会根据前面的5点数据,形成一个校验和,就是基于MD5/CRC的方式,将原始数据的每个字节都带入进去,计算一遍,最终得到的一串数

数组签名就是针对这个校验和 再来一次加密,这个加密是通过 非对称密钥的形式

步骤就是,
(1)公证机构拿着一对非对称密钥 pub(公证) 和 pri(公证)
拿着pri(公证)对证书数据的校验和 进行了加密,得到了数字签名
在这里插入图片描述
此时服务器就会保存好自己申请到的证书

(2)客户端请求连接服务器的时候,服务器返回的响应里面就会包含证书
客户端就会 拿着公证机构的 公钥来进行解密
获取公证机构的公钥不是 通过网络的形式(如果通过网络的形式,就可能会出现中间人攻击)
而是操作系统内部会内置 真正的公证机构的公钥

接下来就可以拿着公证机构的公钥(来自操作系统) 来对证书里面的数字签名进行 解密了

解密之后就能拿到校验和,再自己根据证书里面的内容 计算一遍校验和

如果这两个校验和是一样的,那么就说明整个证书都是没有被篡改过的,此时证书里面的公钥就是可信的

那么为什么这种方式就能解决中间人攻击??
对于黑客来说,虽然能够和普通用户一样拿到数字签名背后的校验和
但是,拿到也没有用!!!

如果黑客修改了证书里面的公钥,那么客户端拿到经过黑客修改的证书后,计算出来的校验和 和 通过数字签名拿到的校验和 对比,就会发现不一样,判定证书非法
那如果黑客修改了公钥,并且通过修改后的内容自己计算一个新的数字签名 ??
如果这样做,由于黑客是拿不到公证机构的私钥的,只能通过自己的私钥来加密
那么用户拿到证书后,就会拿操作系统内置的公钥进行解密,.就会解密失败.因为压根就不是同一对密钥,也很会判定证书非法!!!

总结

为了保证数据的安全,不适用明文传输,而是使用对称密钥来进行加密后进行传输
那么就要保证每一个客户端都有自己对应的密钥,就可以让客户端自己生成后告诉服务器

但是这样的密钥在告诉服务器的过程,是通过网络传输的,就可能被黑客获取到
因此要进行加密,此时如果还是使用对称密钥来 对密钥进行加密,还是会暴露出上面的问题

于是引入了非对称密钥.来对 对称密钥 进行加密
但是还是会存在问题,就是 “中间人攻击”

为了解决中间人攻击,就引入了第三方公证机构

此时通过三层防护,就能保证网络数据的安全

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

相关文章:

网络原理——HTTP/HTTPS ---- HTTPS

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 HTTPS加密与解密HTTPS的工作流程使用对称密钥来加密使用非对称密钥 来对 对称密钥进行加密第三方公证总结 HTTPS https本质上就是在http的基础之上 增加了加密层,抛开加密层之后,剩下的部…...

网络协议二

一、套接字Socket 基于 TCP UDP 协议的 Socket 编程,在讲 TCP 和 UDP 协议的时候,我们分客户端和服务端,在写程序的时候,我们也同样这样分。 在网络层,Socket 函数需要指定到底是 IPv4 还是 IPv6,分别对应设…...

内存映射mmap技术详解

一、mmap基础概念 mmap 即 memory map,也就是内存映射。mmap 是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,…...

react 合成事件

React合成事件-CSDN博客 当然,很高兴为你解释React中的合成事件概念,非常适合React初学者理解。 想象一下,你正在组织一场派对,为了让派对顺利进行,你需要管理各种活动,比如游戏、音乐和食物分配。但是&a…...

springboot配置集成RedisTemplate和Redisson,使用分布式锁案例

文章要点 自定义配置属性类集成配置RedisTemplate集成配置分布式锁Redisson使用分布式锁简单实现超卖方案 1. 项目结构 2. 集成RedisTemplate和Redisson 添加依赖 依赖的版本与继承的spring-boot-starter-parent工程相对应&#xff0c;可写可不写 <!--spring data redis…...

随机数相关

产生随机数对象 固定写法&#xff1a; Random 随机数变量名 new Random();Random r new Random();生成随机数 int i r.Next(); //生成一个非负数的随机数 Console.WriteLine(i);i r.Next(100); // 生成一个 0~99的随机数 左边始终是0 左包含 右边是100 右不包含 Consol…...

EulerMaker Yocto Open Build Service

EulerMaker & Yocto & Open Build Service 1 介绍1.1 概述 2 工具2.1 Yocto 【嵌入式领域】介绍目标好处三大关键组件创建流程发行版本 2.2 Open Build Service 【OBS】【服务器领域】介绍应用 2.3 EulerMaker 【全场景】介绍特性需求背景&#xff08;1&#xff09;能支…...

SQL面试问题集

目录 Q.左连接和右连接的区别 Q.union 和 union all的区别 1、取结果的交集 2、获取结果后的操作 Q.熟悉开窗函数吗&#xff1f;讲一下row_number和dense_rank的区别。 Q.hive行转列怎么操作的 Q.要求手写的题主要考了聚合函数和窗口函数&#xff0c;row_number()&#…...

基于单片机的八路抢答器设计论文

绪 论1.1 课题研究的相关背景 抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。现在大多数抢答器均使用单片机(如MCS-5…...

一个最简单基于spring的websocket服务端+客户端实现案例

1、服务端 代码分为两部分&#xff1a; 一个是服务器终端类&#xff1a;用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage import org.springframework.stereotype.Component;import javax.websocket.*; import javax.websoc…...

三.二、关于 Vue.js 中`transition`组件使用:页面切换动画和标签移动动画都是要用到的

一、引言 在 Vue.js 中&#xff0c;transition组件提供了一种简单而强大的方式来实现页面过渡效果。它可以让元素在状态改变时&#xff0c;如进入或离开视图时&#xff0c;以平滑的动画方式进行过渡。通过transition&#xff0c;我们可以为应用增添更加生动和吸引人的用户体验…...

指纹考勤系统

目录 1.课题研究目的和内容 1.1 课题研究目的 1.2 课题研究内容 2.系统总体方案设计及功能模块介绍 2.1总体方案设计 2.2 ATK-301模块介绍 2.3 TFTLCD显示功能模块介绍 2.4 蜂鸣器报警功能模块介绍 2.5 时钟模块介绍 3.系统硬件设计与实现 3.1 系统硬件电…...

怎么找抖音视频素材?下载抖音的素材视频网站分享给你

在这个视觉印象至关重要的时代&#xff0c;选用高质量的视频素材对于制作抖音视频来说是关键。如果你正在寻找适合的视频素材来丰富你的抖音创作&#xff0c;以下这份详细的视频素材网站指南将帮助你迈出第一步。 蛙学府网 蛙学府网提供了丰富多样的视频素材&#xff0c;包括动…...

【pytorch】大模型训练张量并行

Large Scale Transformer model training with Tensor Parallel (TP) 张量并行如何工作 原始 Tensor Parallel (TP) 模型并行技术于Megatron-LM论文中被提出&#xff0c;是一种用于培育大规模Transformer模型的高效模型并行技术。我们在本练习指南中介绍的序列并行 (SP) 实际…...

Flutter 中的 CupertinoSliverNavigationBar 小部件:全面指南

Flutter 中的 CupertinoSliverNavigationBar 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;CupertinoSliverNavigation…...

【数据库系统概论】程序题

“学生管理数据库”包含以下三个表&#xff0c;即学生表Student、课程表Course和选课表SC&#xff0c;结构如下&#xff1a; Student&#xff08;Sno&#xff0c;Sname&#xff0c;Ssex&#xff0c;Sage&#xff0c;Sdept&#xff09;Course &#xff08;Cno&#xff0c;Cname&…...

群体优化算法---蝙蝠优化算法分类Iris数据集

介绍 蝙蝠算法&#xff08;Bat Algorithm, BA&#xff09;是一种基于蝙蝠回声定位行为的优化算法。要将蝙蝠算法应用于分类问题&#xff0c;可以通过将蝙蝠算法用于优化分类器的参数&#xff0c;图像分割等 本文示例 我们使用一个经典的分类数据集&#xff0c;如Iris数据集&…...

【C++】类和对象1.0

本鼠浅浅介绍一些C类和对象的知识&#xff0c;希望能得到读者老爷们的垂阅&#xff01; 目录 1.面向过程和面向对象 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1.类的访问限定符 4.2.封装 5.C中struct和class的区别 6.类域 7.类的实例化 8.类对象模型 8.1.类…...

Linux下gcc编译32位程序报错

gcc使用-m32选项&#xff0c;编译32位程序时&#xff0c;报错&#xff1a;/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory gcc编译32位程序时&#xff0c;报错&#xff1a;/usr/include/stdio.h:27:10: fatal error: bits/li…...

godot.bk

1.搜索godot国内镜像&#xff0c;直接安装&#xff0c;mono是csharp版本 2.直接解压&#xff0c;50m&#xff0c;无需安装&#xff0c;直接运行 3.godot里分为场景&#xff0c;节点 主场景用control场景&#xff0c;下面挂textureact放背景图片&#xff0c;右键实例化子场景把…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...