HTTPS协议详解

目录

前言

一、HTTPS协议

1、加密是什么

2、为什么要加密

二、常见加密方式

1、对称加密

2、非对称加密

三、数据摘要与数据指纹

1、数据摘要

2、数据指纹

四、HTTPS加密策略探究

1、只使用对称加密

2、只使用非对称加密

3、双方都使用非对称加密

4、对称加密+非对称加密

5、知识补充

(1)CA证书 

(2)证书形成过程

(3)验证证书的过程

6、证书认证+对称加密+非对称加密

7、常见问题

(1)中间人有没有可能篡改证书

(2)中间人有没有可能掉包整个证书

(3)为什么CA形成证书时要形成数字签名

(4)为什么不直接将数据进行加密,而是先进行哈希散列


前言

        本章主要介绍关于HTTPS协议,以及HTTPS协议加密解密整个过程,这也是面试中常考的一个话题,接下来我们一起进入网络的世界吧!

一、HTTPS协议

        HTTPS协议仅仅只是在HTTP协议上增加了一个加密层,可以说HTTPS协议是HTTP协议的升级版;

1、加密是什么

        所谓加密就是将HTTP报文通过某种手段,由明文变为密文,比如我们之前可能都做过一道题目;如何不创建变量来交换两个整型;如有下面两个变量;

int a = 10;

int b = 20;

        可能在没有学习异或运算符前,这题确实很困难,但是在我们学习完异或运算符后,可以巧妙利用异或运算符的特性来解决这道题目;异或运算符有如下特性;

a ^ a = 0;

a ^ 0 = a;

        利用如上特性,我们不难解出上题;

a = a ^ b;    --->   int c = a ^ b;

b = a ^ b;    --->   b = c ^ b   -> a ^ b ^ b;

a = a ^ b;    --->   a = c ^ c ^ b;

        我们可以将上面a与b异或的结果看作一个加密过程;只有通过特定的解密才可得到真正的结果;

2、为什么要加密

        前面我们提过,HTTP协议无论是通过GET请求提交参数或是POST请求提交参数都可能会被别看看到;因为它们是明文显示的,这会造成私人信息泄漏的风险;除了私人信息泄漏风险,同时在互联网早期时,经常由于HTTP协议的不私密导致,用户在发送HTTP请求时,在传输过程中,可能遇到中间人,这个中间人可能会篡改HTTP请求内容;导致出现各种情况,如我们在网上发送一个下载QQ音乐的请求,可能会被运营商等中间人劫持,给我们发送一个下来网易云音乐的连接,而普通用户并无法区分连接,一股脑下载后发现下载的是另一个软件,这种类似问题频频出现,因此我们必须给我们的HTTP请求进行加密,所以HTTPS协议因此诞生了;

二、常见加密方式

1、对称加密

        所谓对称加密就是采用单密钥的方式生成一对密钥对,其中的每一个密钥都可以进行加密与解密的操作;

特点:算法公开、计算量小、加密速度快、效率高;

常见对称加密算法:DES、RC2等

2、非对称加密

        这种通常需要两个密钥来进行加密解密,其中这两个密钥一把叫做公钥,这把密钥是可以被公开的,另一把叫私钥,这把密钥通常私密保存;

特点:算法强度复杂、加密解密速度对比对称加密慢很多;

公钥加密只能通过私钥解密

私钥加密只能通过公钥解密

三、数据摘要与数据指纹

1、数据摘要

        所谓数据摘要指的是将数据通过单散列哈希函数生成一串固定长度的字符串,我们称其为数据摘要;

特点:唯一性很强,通常不会发生冲突;

数据摘要 VS 加密

        数据摘要是单向的,无法逆向还原原数据;而加密可以通过解密来进行还原原数据;

2、数据指纹

        数据指纹指的是将我们的数据摘要再次进行加密,形成的便是数据指纹,也可以称作数字签名;

四、HTTPS加密策略探究

1、只使用对称加密

        如果通信双方各持有一对密钥X,双方即可通过密钥X来进行通信;

        看着似乎合理,双方各持有一个密钥,客户端发送前将hello通过密钥X加密成加密报文,然后服务端收到加密报文后将加密报文通过X进行解密成hello;

        那么问题来了,如何让双方看到同一对密钥呢?通过服务端生成后发送给客户端吗?那样在发送密钥时也可能被截获吗?截获后双方又不就不是加密通信了吗?那样不就又回到了最开始的问题吗?因此这种方案显然是不行的;

2、只使用非对称加密

        若只使用非对称加密策略,此时假设我们服务端生成一把公钥Y和一把私钥X;

        当我们将公钥Y通过网络发送给客户端后,公钥Y不怕被别人截获,此时客户端可通过公钥Y进行加密,通过公钥Y发送的信息只能由私钥X来进行解密,因此即使中间人得到了公钥Y也无法进行解密,这样看起来好像很合理,实际上漏洞百出;

        我们如何保证服务端到客户端的安全呢?这种只使用非对称加密的方式显然只能保证一端的安全性;

3、双方都使用非对称加密

        若双方都拥有一对非对称密钥对,如客户端拥有公钥X与私钥X',服务端拥有公钥Y与私钥Y'。

        客户端和服务端分别把自己的公钥给对方,自己持有私钥,此时每次进行通信时使用对端的公钥进行加密,由于中间人没有双反私钥,因此此时无法获取双方加密密文了;这种方案看着似乎也可以,实际上也存在漏洞;上面的安全通信假设都是建立在双方已经建立好安全通信的准备了;若是双方在交换公钥时,中间人就已经开始出手了呢?关于这个我们后面再继续讲解中间人是如何进行攻击的。

4、对称加密+非对称加密

        假设服务端拥有一对非对称密钥,公钥X与私钥X’,客户端拥有对称密钥Y;

        当服务端将公钥X传输给客户端时,客户端将自己的对称密钥Y经过公钥X进行加密,发送给服务端,服务端收到后用自己的私钥X‘对客户端的对称密钥进行解密,此后双方使用对称密钥Y进行通信;

        这种方案看起来似乎也没有多大问题,可这一切都建立在双方已经成功建立好加密通信信道后,若是在它们交换密钥过程中同样也会出现问题,就如同上面那种情况一样,关于如何破解,同样,我们将在下面进行介绍;

        当服务端将自己的公钥X发送给服务端时,被中间人劫持,获得了公钥X,并且中间人也生成一对非对称密钥对,将公钥Z给客户端,此时客户端并不知道这个公钥Z是来自中间人的,他认为他收到了来自服务端的公钥Z,因此他将自己的对称密钥Y通过公钥Z进行加密,并发送给服务端,此时也被中间人劫持,并用自己的私钥Z‘对其进行解密,得到了客户端的对称密钥Y,然后中间人还将Y用服务端的公钥X进行加密,发送给服务端,服务端也不知道这个来自于中间人,也对其进行解密得到了客户端的对称密钥Y,此后它们通过对称密钥Y进行通信时,由于中间人也有对称密钥Y,此时它们之间的通信都可以被中间人轻松获取,这样就破解了上述方式,第三种加密方式也可以通过该方法进行破解;

5、知识补充

(1)CA证书 

        服务端使用HTTPS协议前都需要向CA机构申请一份CA证书,证书就像身份证具有权威性;证书中里最少包含如下信息

(1)证书发布机构

(2)证书有效期

(3)公钥

(4)证书所有者

(5)签名

(6)域名

等等信息

(2)证书形成过程

        公司想要CA证书需要向CA机构提交申请资料,CA机构会拿公司提供的资料的原文件内容经过哈希散列形成数据摘要,再拿数据摘要使用CA私钥进行加密形成数字签名,最后拿数字签名和证书资料合起来,变成了我们一份完整的证书;

(3)验证证书的过程

        如何验证一份证书是否合法呢?如下所示;

        我们拿到一份证书后,取出其数据部分,使用CA同样的哈希函数进行散列形成数据摘要,然后拿着数字签名使用CA的公钥进行解密,也得到一份数据摘要,如果这两份数据摘要相同则表示这份证书没有任何问题;因此若是对证书中的信息进行任何修改,得到的两个数据摘要都不会相同;

6、证书认证+对称加密+非对称加密

        这种加密策略也就是HTTPS采用的加密策略,

        首先需要服务端向CA机构申请CA证书,得到CA证书后,每次有客户端发送连接请求时,服务端首先都会给客户端发送一份自己的证书,客户端拿到证书后,对证书进行验证,若验证通过,客户端会取出证书中数据,如域名、服务端公钥等,若域名与我要访问的服务端域名匹配,说明证书没有被完整掉包过,然后生成自己的一对对称密钥,然后用服务端的公钥对对称密钥进行加密,接着将加密报文发送给服务端,由于只有服务端有私钥,因此只有服务端可以获得客户端的对称密钥,服务端获得客户端的对称密钥后,双方就可以使用这个对称密钥进行后续的通信了;

7、常见问题

(1)中间人有没有可能篡改证书

        若篡改证书数据内容,在验证证书合法性时,由于数据被修改,形成的数据摘要与数字指纹形成的数据摘要不同,因此可以判断出证书不合法;

        又由于中间人没有CA机构的私钥,因此也不可能再用修改后的数据形成一份数字指纹,因为大家都只使用CA机构的公钥,而私钥和公钥是配对的,因此中间人也不可能在生成一份修改数据后的数字指纹;

(2)中间人有没有可能掉包整个证书

        若中间人也想CA机构申请了一份证书,在服务端发送证书给客户端时,中间人直接掉包整个证书,此时客户端在验证证书时,发现证书数据中的域名与自己访问的域名不一致,也会发现有问题,因此防止了中间人掉包整个证书的可能;

(3)为什么CA形成证书时要形成数字签名

        数字签名是为了防止中间人对数据进行篡改,若没有数字签名验证,中间人可以修改证书中的数据,此时客户端收到证书后,也不知道证书内容是否被修改,证书内的公钥一旦被修改,又回到了之前的问题了;形成数字签名可以确保服务端提供公钥的合法性;

(4)为什么不直接将数据进行加密,而是先进行哈希散列

        因为哈希散列后的数据大小是固定的,这样可以大大减小签名密文的长度,加快验证数字签名的运算速度;

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

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

相关文章

html-css-js使用axios和ajax获取接口并携带请求头+获取输入框或选择器内容

需求:使用axios或者Ajax获取接口,有些需要获取到输入框,或者选择器内容之后传给接口,也就是写了几种不同请求的方法,网上有很多方法,本文章算是个归纳吧。 一、axios请求传参请求头 1.github下载axios 我…

MS2358:96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器,适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入,所以不需要外部器 件,非常适…

领域驱动设计(Domain-Driven Design DDD)——模型驱动设计的构造块2

书接上回领域驱动设计(Domain-Driven Design DDD)——模型驱动设计的构造块1-CSDN博客 四、领域对象的生命周期 每个对象都有生命周期,管理这些对象面临诸多挑战,主要的挑战有以下两类。 在整个生命周期中维护完整性 防止模型陷入管理…

内侧APP分发平台:移动应用开发的加速器

在数字化时代,移动应用已成为企业触达用户的重要渠道。为了迅速占领市场,开发者需要一种能够快速发布和测试移动应用的解决方案。内侧APP分发平台应运而生,它通过简化应用的封装、测试和分发流程,极大地提升了移动应用的上市速度。…

【大数据面试知识点】Spark中的累加器

Spark累加器 累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。 累加器一般是放在行动算子…

12. 整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 …

第14课 多维数组

文章目录 前言一、多维数组的定义二、多维数组的初始化三、多维数组的使用(以二维数组为例)1. 矩阵转置问题 三、课后练习1. 求一个m*n矩阵中所有元素的累加和2. 查找并输出一个m*n矩阵中的最小元素以及其在矩阵中的位置3. 将m*n矩阵A复制为m*n矩阵B&…

leetcode 贪心(分发糖果、K次取反后最大化的数组和、加油站)

1005.K次取反后最大化的数组和 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。) 以这种方式修改数组后…

Linux报错:audit: backlog limit exceeded

今天,一台虚拟机上操作昨天打开的连接一直没响应,新打开连接连接不上。SSH校验不通过。 通过IT的后台,可以看到满屏的audit: backlog limit exceeded。 问题原因:audit服务记录的审计事件超出默认(或设置)数量 ,达到或…

边缘计算网关在温室大棚智能控制系统应用,开启农业新篇章

项目需求 ●目前大棚主要通过人为手动控温度、控水、控光照、控风,希望通过物联网技术在保障产量的前提下,提高作业效率,降低大棚总和管理成本。 ●释放部分劳动力,让农户有精力管理更多大棚,进而增加农户收入。 ●…

Python进行批量字符替换的3种方法

一、问题的提出 之前,我写过一篇如何在word中计算数学算式: 如何用Python批量计算Word中的算式-CSDN博客 为了计算算式,就需要对算式进行格式化,把不规则的算式转换成规则的算式,这时就会涉及到一些字符的批量替换。…

如何在 Linux 中配置 firewalld 规则

什么是FirewallD “firewalld”是firewall daemon。它提供了一个动态管理的防火墙,带有一个非常强大的过滤系统,称为 Netfilter,由 Linux 内核提供。 FirewallD 使用zones和services的概念,而 iptables 使用chain和rules。与 ip…

【LLM-RAG】知识库问答 | 检索 | embedding

note RAG流程(写作论文中的background:公式设定、emb、召回内容、召回基准)(工作中的思路:嵌入模型、向量存储、向量存储检索器、LLM、query改写、RAG评测方法)仅为个人关于RAG的一些零碎总结,…

【网络面试(4)】协议栈和套接字及连接阶段的三次握手原理

1. 协议栈 一直对操作系统系统的内核协议栈理解的比较模糊,借着这一篇博客做一下简单梳理, 我觉得最直白的理解就是,内核协议栈就是操作系统中的一个网络控制软件,就是一段程序代码,它负责和网卡驱动程序交互&#xff…

Docker 从入门到实践:Docker介绍

前言 在当今的软件开发和部署领域,Docker已经成为了一个不可或缺的工具。Docker以其轻量级、可移植性和标准化等特点,使得应用程序的部署和管理变得前所未有的简单。无论您是一名开发者、系统管理员,还是IT架构师,理解并掌握Dock…

7.11全排列(LC46-M)

算法: 排列和组合很像,但是有顺序。 还是用回溯算法。 与组合不同之处(无startindex,有used数组): 首先排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合。 可以看出元素1在[1,2]中已经使…

大学物理II-作业1【题解】

1.【单选题】——考查高斯定理 下面关于高斯定理描述正确的是(D )。 A.高斯面上的电场强度是由高斯面内的电荷激发的 B.高斯面上的各点电场强度为零时,高斯面内一定没有电荷 C.通过高斯面的电通量为零时,高斯面上各点电场强度…

基于被囊群算法优化的Elman神经网络数据预测 - 附代码

基于被囊群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于被囊群算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于被囊群优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#x…

2023-12-15 LeetCode每日一题(反转二叉树的奇数层)

2023-12-15每日一题 一、题目编号 2415. 反转二叉树的奇数层二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &…

lambda表达式和包装器

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 我们在使用库里的排序算法时如果排序的是自定义类型或者库里默认的排序不能满足我们则需求&…