网络协议学习——HTTPS

目录

​编辑

一,认识HTTPS

二,加密方式

 1,对称式加密

2,非对称式的加密

3,数据指纹(数据摘要)

4,数据签名

三,HTTPS的工作原理

实现方式

 数字证书


 

一,认识HTTPS

在HTTP中,在发起请求或者响应的时候,我们的报头的cookie信息会被明文的显示出来。所以这就会导致不安全。导致隐私的泄露。所以HTTPS协议便应运而生。如下便是HTTPS协议的图示:

HTTPS协议其实就是在HTTP协议的条件之下再加上一个加密解密层。 

二,加密方式

 1,对称式加密

对称加密的实现是通过产生一个密钥来对客户端要发出去的报文进行加密的方式,然后在服务端接收到了报文以后便通过相同的密钥来对这段报文进行解密,进而得到这一段报文。

特点:加密算法简单,加密速度快,加密效率高。

2,非对称式的加密

非对称式的加密方式是通过产生两个密钥的方式来实现的。这两个密钥中,一个叫做私钥,一个叫做公钥。公钥是公开的,大家都能获取得到。私钥是私密的,只有我自己有。当我们使用公钥来对报文进行加密时,只有拥有私钥的人才能解密。当使用私钥来对报文进行加密是大家都能进行解密。

特点:加密算法复杂,加密速度慢。

3,数据指纹(数据摘要)

数据指纹(摘要)是一种通过哈希散列的方式将某段报文变成相应的字符串的过程。因为使用了特定的哈希方法,所以当报文被修改时这段字符串也会发生变化。

数据指纹(摘要)不是严格意义上的加密方法,但是因为使用了哈希的方式处理字符串从而让字符串的内容很难被反推得到。从而可以用来比对我得到的内容是否被修改过,也可以用来实现网盘当中的秒传功能或者是数据库中的密码管理。

网盘秒传功能

当我们要将某个资源放到网盘上面时,通常我们的资源中的某一段内容会被网盘服务端抽取出来。然后这段资源便会被哈希加密得到一段字符串。然后,网盘服务器会去相应的库里面查询是否由相同的资源,如果有便不会在将相同的资源上传到服务器,而是会在你的用户空间下建立软连接指向对应的已有的资源

4,数据签名

 数据签名其实就是在数据指纹(摘要)基础上再进行一次加密。进而让数据摘要也让别人看不到。

三,HTTPS的工作原理

再数据传输的过程中,要解决的问题有两个:

1,传输的数据被监听。

2,传输的数据被篡改。

实现方式

1,对称式加密

再客户端和服务端进行通信时,我在客户端进行对称式加密。这样,便可以将加密后的报文发给服务端了。但是,这样做的问题是加密后的报文我的服务端也解析不了,不知道是什么意思。所以,客户端就要将密钥一并打包发给服务端,让服务端拥有能够解密报文的能力。

如果发生中间劫持怎么办?

 但是,上面的方式其实还是有问题的。因为我们的数据不是直接发送给服务端的,而是要经过第三方才能将数据发送到服务端。

 如果其中的第三方是一个黑客,那我们的的数据就暴露无遗了。因为黑客也拿到了密钥,他便能随意的解开我们的数据。这就是发生了中间劫持。所以,对称式加密是不安全的。

2,非对称式加密

非对称式加密的实现,有两种方式:

1,客户端和服务端都非对称式加密

 客户端和服务端都对数据进行加密,此时客户端便会形成两把密钥:C (公钥) C'(私钥)

服务端也会形成两把密钥:S(公钥) S‘(私钥)。然后服务端和客户端再收发数据时便将公钥发给对方来实现加密功能,而私钥自己保存用于解密。

第一步:生成密钥,交换密钥

第二步:使用对方的密钥来对数据进行加密

这样便能对数据进行加密且不会发生出现在第一种加密方式下的问题。

但是,太慢怎么办?

 前面已经提到过了,非对称式加密的算法都是比较复杂的,所以加密会很慢。所以,为了解提升效率,我们可以让服务器和客户端两端一个做非对称加密,一个做对称加密。

第一步:服务端形成非对称密钥  客户端形成对称密钥

第二步:客户端再对服务端发起请求得到密钥S

第三步:客户端使用S对C进行加密发送到服务端,服务端再用私钥S'来对加密后的C进行解密进而得到C

这样便能实现报文传输时的加密和解密功能。

如果发生掉包怎么办?

还是和上一个问题一样,客户端的数据不是直接到达服务端的,服务端的数据也不是直接到达客户端的。还是要经过中间人,如果按照上面的方式传输其实还是会发生问题的。比如中间人掉包。

中间人加入:

中间人生成非对称密钥:

客户端向服务端请求得到密钥S,但是中间人将密钥掉包:

如果发生上面的情况,那我们的数据便不会是安全的了。因为C会使用M加密,M加密后会被M'解开,进而中间人会得到C。然后中间人再用S来对C加密转给服务端,这样便能神不知鬼不觉的监听客户端和服务端间传输的数据。

 数字证书

1.什么是数字证书

服务端在使用HTTPS协议在使用前,需要向CA机构申请一份证书。这份证书便是一个数字证书。

在服务端申请CA证书之前,服务端得先形成自己的公钥和私钥。然后,在特定的平台下将服务器的信息和公钥提交给CA机构。服务器端提交的信息便是明文信息+公钥。然后CA机构先对数据使用特定的哈希算法来形成数据摘要(数据指纹),然后CA机构用自己的密钥对数据摘要进行加密形成数据签名。再将明文+数据签名打包形成CA证书发给服务端

所以,当客户端申请服务端的公钥时。服务器便会将CA证书发给客户端,让客户端得到一个没有被修改后的公钥。

 中间人能不能替换掉数据签名?

答案是不能,因为只有CA机构才有这段签名的私钥。如果中间人改了这段数据,客户端便会不认识。

中间人能不能替换掉整个证书?

答案是可以的,但是在比对的过程当中客户端还是会发现一些不同并警告用户。

 所以,HTTPS协议采用的加密方式便是:对称加密+非对称加密+CA证书

但还是要说一句,世界上没有不透风的墙。这个世界上也没有不能被攻破的加密方式,但是只要攻破这个加密方式的成本远高于加密的成本,那我们便可以说这个加密方式是安全的。

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

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

相关文章

配mmdetection

总流程: 1. 安装conda 参考链接后面补上 列出可用的conda环境 conda env list 删除指定环境 conda remove --name myenv --all 创建并激活指定环境 conda create --name openmmlab python3.8 -y conda activate openmmlab 2. 装pytorch,版本别装错…

zabbix图表时间与服务器时间不一致问题

部署完zabbix后,有时候会发现zabbix服务器的时间明明是对的,但是图标的时间不对,通过以下的配置可以快速解决。 登录zabbix-nginx容器 docker exec -u root -it docker-compose-zabbix-zabbix-web-nginx-mysql-1 bash修改php配置文件 vi /e…

excel散点图怎么每个点添加名称

最终效果图: 添加图标元素->数据标签->其他数据标签选项 选择单元格中的值 手动拖动数据标签,调整到合适的位置。

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范,就是接口 监听器的作用是,监听某种变化(一般就是对…

RISC-V GNU Toolchain 工具链安装问题解决(含 stdio.h 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客:RSIC-V工具链介绍及其安装教程 - 风正豪 (大佬的博客写的非常详细,唯一不足就是 sudo make linux -jxx 是全部小写。) 工具链前前后后我装了…

搜维尔科技:SenseGlove Nova 允许以最简单的方式操作机器人并与物体交互

扩展 Robotics 和 QuarkXR 人机界面 XR 应用 Extend Robotics 利用扩展现实技术,让没有机器人专业知识的个人能够远程控制机器人。他们的 AMAS 解决方案使操作员能够不受地理限制地轻松控制机器人。 需要解决的挑战【搜维尔科技】 目前,操作机器人是一…

day4|gin的中间件和路由分组

中间件其实是一个方法, 在.use就可以调用中间件函数 r : gin.Default()v1 : r.Group("v1")//v1 : r.Group("v1").Use()v1.GET("test", func(c *gin.Context) {fmt.Println("get into the test")c.JSON(200, gin.H{"…

Git指令速查

一、Git初始化 作用:初始化git仓库,想要使用git对某个项目进行管理,需要git init进行初始化 # 在当前目录新建一个Git代码库,初始化仓库。 在当前目录下生成一个隐藏文件夹.git,不能修改.git下的任何东西 $ git ini…

jmeter性能压测

jvm指令 jstat -gcutil -h5 -t 1 3s 发压端的tcp这么达到1000TPS jmeter的jvm的设置

六自由度Stewart控制系统matlab仿真,带GUI界面

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 六自由度Stewart平台控制系统是一种高精度、高稳定性的运动模拟装置,广泛应用于飞行模拟、汽车驾驶模拟、虚拟现实、精密定位等领域。其工作原理基于Stewart机构&a…

利用Flutter混淆工具提高应用的反编译难度

在移动应用开发中,保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具,帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆,并提供了相关的操作步骤和注意事项。 📝 摘要 本…

Web3:数字化社会的下一步

随着技术的不断进步和互联网的发展,我们正逐渐迈入一个全新的数字化社会阶段。在这个新的时代,Web3作为数字化社会的重要组成部分,将发挥着举足轻重的作用。本文将探讨Web3在数字化社会中的意义、特点以及对未来发展的影响。 1. 重新定义数字…

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…

CentOS7安装Flink1.17伪分布式

前提条件 拥有1台CentOS7 CentOS7安装好jdk,官方文档要求java 11,使用java 8也可以。可参考 CentOS7安装jdk8 下载安装包 下载安装包 [hadoopnode1 ~]$ cd installfile/ [hadoopnode1 installfile]$ wget https://archive.apache.org/dist/flink/flin…

【EasyExcel】—— 实现excel动态表头设置、多个sheet

引入jar <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency>代码 public static void main(String[] args) {//选择存储地址String fileName "/User…

Neo4j数据库(一)

目录 新建节点 Neo4j CQL创建具有属性的节点 多个标签到节点 单个标签到关系 MATCH命令 RETURN命令&#xff1a; Neo4j CQL - MATCH & RETURN匹配和返回 总结&#xff1a;本文介绍了Neo4j的CREATE&#xff0c;MATCH&#xff0c;RETURN的基本操作 新建节点 Neo4j创建一…

基于MPPT的风力机发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1风能与风力发电机模型 4.2风力机功率特性与最大功率点 4.3 MPPT 5.完整工程文件 1.课题概述 基于MPPT的风力机发电系统simulink建模与仿真。MPPT使用S函数编写实现。基于最大功率点跟踪&#xff08…

StreamingT2V文本生成视频多模态大模型,即将开源!

1、前言 Picsart人工智能研究所、德克萨斯大学和SHI实验室的研究人员联合推出了StreamingT2V视频模型。通过文本就能直接生成2分钟、1分钟等不同时间&#xff0c;动作一致、连贯、没有卡顿的高质量视频。 虽然StreamingT2V在视频质量、多元化等还无法与Sora媲美&#xff0c;但…

Vue3学习笔记+报错记录

文章目录 1.创建Vue3.0工程1.1使用vue-cli创建1.2 使用vite创建工程1.3.分析Vue3工程结构 2.常用Composition2.1 拉开序幕的setup2.2 ref函数_处理基本类型 1.创建Vue3.0工程 1.1使用vue-cli创建 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 如果不是&#xff0…

Mybatis——一对一映射

一对一映射 预置条件 在某网络购物系统中&#xff0c;一个用户只能拥有一个购物车&#xff0c;用户与购物车的关系可以设计为一对一关系 数据库表结构&#xff08;唯一外键关联&#xff09; 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import …