《HTTPS协议》

文章目录

  • 一、什么是HTTPS协议
  • 二、理解关键字
  • 三、为什么要加密
  • 四、常见的加密方式
    • 1.对称加密
    • 2.非对称加密
  • 五、如何进行加密?
    • 1.只使用对称加密
    • 2.只使用非对称加密
    • 3.双方都使用非对称加密
    • 4.使用对称加密+非对称加密
    • 5.对称加密+非对称加密+CA证书认证
      • 5.1数据摘要(数据指纹)
      • 5.2数字签名
      • 申请证书
      • 数字签名形成过程
      • CA证书的认证过程
    • 回到方案5



一、什么是HTTPS协议

HTTPS协议是HTTP协议在应用层的基础上,加上一层加密层形成的协议。

二、理解关键字

  • 1.加密就是把明文(要传输的信息)进行一系列变换,生成密文的过程。
  • 2.解密就是把密文再进行一系列变换,还原成明文的过程。

三、为什么要加密

在这里插入图片描述

未被劫持时:
在这里插入图片描述

被劫持后:
在这里插入图片描述

下载链接就被替换成了qq.com。
在互联网上,?明文传输是比较危险的事情!!!
HTTPS?就是在?HTTP?的基础上进行了加密,?进一步的来保证用户的信息安全

四、常见的加密方式

1.对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的。

举个例子:

客户端要给服务器发送一个明文数字5,但是不想直接发送一个数字5,而是经过密钥加密后,发送的是一个密文数字7。
服务器接收到密文7后,需要使用与客户端相同的密钥来进行解密。

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

2.非对称加密

非对称加密会有一个公钥,一个私钥,明文经过公钥加密后,这个世界上只有唯一一个私钥能对该密文进行解密。而反过来,使用私钥对一个明文进行加密后,也只有唯一一个公钥可以对该密文解密。

公钥是指:公开的密钥,私钥:不公开,自己保存的密钥。

特点:效率低,算法复杂,计算量大。

在这里插入图片描述

五、如何进行加密?

1.只使用对称加密

在这里插入图片描述

然而,会出现一个非常严重的问题。

在客户端向服务器发送请求的过程,往往需要通过路由器等网络设备,而这些设备如果被黑客入侵,就会出现下面问题。
在这里插入图片描述
而一旦将密钥直接发送,就会被黑客知晓,这个加密就形同虚设,所以还需要对密钥进行加密,也就是:密钥的密钥。
但此时就会产生一个问题,这样就要加无数个密钥。

方案一不安全。

2.只使用非对称加密

1.客户端获取到服务器的公钥,此时黑客也会获取到服务器的公钥。
2.客户端使用公钥加密后发送密文给服务器。黑客无法解密,因为黑客没有私钥。
3.服务器使用自己的私钥进行解密。
4.服务器再次使用自己的私钥,对另一个明文进行加密发送给客户端,此时黑客获取到密文,使用服务器的公钥进行解密。获取到了服务器发送给客户端的明文,极有可能篡改。

总结:方案二也不安全,仅仅在客户端向服务器发送密文时安全,服务器向客户端发送密文时会被黑客截取解密。

在这里插入图片描述

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

  • 1.客户端发送自己的公钥C给服务器
  • 2.服务器发送自己的公钥P给客户端
  • 3.客户端使用服务器的公钥P进行加密,服务器使用自己的私钥P’进行密文解密
  • 4.服务器使用客户端的公钥C加密,客户端使用自己的私钥C’进行密文解密

整个过程看似黑客都无法破解密文,因为黑客没有私钥。
然而仍然是不安全的,还有效率太低。
具体怎么不安全,后面说。

在这里插入图片描述

4.使用对称加密+非对称加密

这个方案先来解决效率问题。

1.在前期,服务器直接发送公钥P给客户端,即使黑客获取到,也没有意义。
此时,客户端通过公钥P,对自己的对称密钥C进行加密,由于黑客没有服务器的私钥P’,也就无法获取到客户端的对称密钥C。
而在服务器获取到客户端的对称密钥C后,就使用对称加密的方式进行HTTPS请求和响应,这样效率就会提高了。

在这里插入图片描述
2.安全问题实际上还是没有得到解决,因为一旦黑客在最一开始就获取到了服务器的公钥P,就可以对其进行篡改,将其篡改成黑客自己的公钥和私钥。

在这里插入图片描述

  • 1.获取到服务器的公钥P后,将其篡改,并发送自己的公钥H给客户端,公钥本身无法说明自己的可信性,客户端无法识别真伪,会误认为H就是客户端的公钥。
  • 2.客户端将自己的对称密钥通过第一步获取到的"服务器"的公钥H进行加密: C+H-YYY黑客截取到报文后进行解密:YYY+H’= C,从此获取到了客户端的密钥C。
  • 3.黑客再用自己曾经获取到的服务器的公钥P,将密钥C加密后发送给服务器,C+P= str ,发送给服务器,服务器使用自己的私钥P’解密后P’+str=C,获取到了客户端的对称密钥C,从此客户端和服务器使用对称密钥进行通信的所有报文信息,都暴露了。

总结:方案4存在的问题是,客户端无法认证从服务器收到的公钥P是否可信!!!

为了解决这个问题,引入了CA证书这个东西。

5.对称加密+非对称加密+CA证书认证

为了更清楚理解CA证书,先引入几个概念。

5.1数据摘要(数据指纹)

• 数据摘要,其基本原理是利⽤单向散列函数(Hash函数)对信息进行运算,⽣成⼀串固定长度的数字摘要。数字摘要并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。

• 摘要常见算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)

• 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比。

举个例子:
这里有一篇文章:通过MD5算法后,生成一串固定长度的字符串XXXXXXXXXXXXXXXXXXXXXXXX,这个字符串通常会很长,这个字符串就是数字摘要。

5.2数字签名

• 摘要经过加密,就得到数字签名。

申请证书

在这里插入图片描述
1.申请者需要生成公钥和私钥对,私钥自己保存,公钥,申请者的域名,申请者信息(法人,名字等等),申请者的公钥,这些信息需要生成一个.csr请求文件,提交给CA权威机构进行审核。

重要的是,如果认证成功,证书的主要内容如下:
在这里插入图片描述

其中最重要的信息是:

  • 1.公钥
  • 2.数字签名

在证书的明文信息中,这个公钥信息,是属于申请者的公钥。

而实际上,还有一个公钥私钥对,是CA权威机构专属的公钥和私钥对,是用来生成数字签名的。

数字签名形成过程

关于数字签名,前面说过,就是由数据摘要经过加密后形成的。
但是这怎么加密呢???
就是通过CA机构自己的私钥进行加密的!!!

在这里插入图片描述

  • .csr文件中的明文信息经过MD5等算法后,形成数据摘要,数据摘要再经过CA机构的私钥进行加密后,形成数字签名,数字见面跟明文信息结合起来后,就形成了证书。

这两个公钥私钥是不一样的,一个是CA权威机构自己的公钥私钥对,一个是申请者的公钥私钥对。

CA证书的认证过程

在这里插入图片描述

回到方案5

解释清楚CA证书后,
方案5就是在方案4的基础上,解决了公钥的可信性的问题。
CA机构是世界上唯一的能颁发认证证书的机构,除非他授权当地的一些机构,否则没有任何机构能有权限颁发CA证书。
所以,安全性就得到了保障。


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

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

相关文章

GPT-4-turbo还是大家心中第一!Claude 3竞技场人类投票成绩出炉:仅居第三

Claude 3的竞技场排名终于揭晓了: 在仅仅3天的时间里,20000张投票使得排名的流量达到了前所未有的高度。 最后,Claude 3的"大杯"模型Opus以1233的分数赢得了胜利,成为了第一个能和GPT-4-Turbo匹敌的选手。 "中杯…

Flink 资源管理

文章目录 前言ResourceManager详解Slot 管理器SlotProviderSlot资源池Slot共享Slot共享的优点Slot 共享组与 Slot 共享管理器Slot资源申请 总结 前言 在Flink中,资源管理是一个核心组件,它负责分配和管理计算资源,以确保任务能够高效、稳定地…

Python使用Beautiful Soup及解析html获取元素并提取内容值

Python使用Beautiful Soup及解析html获取元素并提取内容值 1. 包括解析获取标题2. 根据标签及id获取所有元素3. 根据标签及class获取所有元素4. 获取元素下的标签的值5. 获取元素下的parent及child的元素的值参考 1. 包括解析获取标题 2. 根据标签及id获取所有元素 3. 根据标…

QGridLayout网格布局和QVBoxLayout垂直布局有着非常大的差别

QGridLayout网格布局:1.把这块控件划分成一个个的 单元格 2.把你的控件填充进入 单元格 3.这些有关限制大小的函数接口统统失效 setMaximumWidth() setMinimumWidth() setPolicySize()图示:我是用的网格布局,左边放QT…

C# WinForm AndtUI第三方库 Table控件使用记录

环境搭建 1.在NuGet中搜索AndtUI并下载至C# .NetFramework WinForm项目。 2.添加Table控件至窗体。 使用方法集合 1.单元格点击事件 获取被点击记录特定列内容 private void dgv_CellClick(object sender, MouseEventArgs args, object record, int rowIndex, int columnIn…

观察者模式:Java 中的一对多依赖关系解决方案

观察者模式是一种行为设计模式,用于定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于解耦发布者和订阅者,使得系统更易于扩展和维护。 使用条件 观察…

【Python】装饰器函数

专栏文章索引:Python 原文章:装饰器函数基础_装饰函数-CSDN博客 目录 1. 学习装饰器的基础 2.最简单的装饰器 3.闭包函数装饰器 4.装饰器将传入的函数中的值大写 5. 装饰器的好处 6. 多个装饰器的执行顺序 7. 装饰器传递参数 8. 结语 1. 学习装饰…

C/C++蓝桥杯之整除序列

问题描述:有一个序列,序列的第一个数是n,后面的每个数均是前一个数整除2的结果,请输出这个序列中值为正数的所有项。 输入格式:输入一行,包含一个整数n。 输出格式:输出一行,包含多…

利用IDEA创建Java项目使用Servlet工具

【文件】-【项目结构】 【模块】-【依赖】-【】-【JAR】 找到Tomcat的安装路径打开【lib】找到【servlet.jar】点击【确定】 勾选上jar,然后【应用】-【确定】 此时新建文件可以发现多了一个Servlet,我们点击会自动创建一个继承好的Servlet类

计算机等级考试:信息安全技术 知识点三

1、拨号用户远程认证服务(Remote Authentication Dial-In User System,RADIUS)是一个网络协议,提供集中式AAA管理 2、在Windows NT里,口令字密文保存在SAM文件。 3、tracert是操作系统提供的命令。 4、Rootkit是一种内核隐藏技术&#xff…

STL容器之哈希的补充——其他哈希问题

1.其他哈希问题 ​ 减少了空间的消耗; 1.1位图 ​ 位图判断在不在的时间复杂度是O(1),速度特别快; ​ 使用哈希函数直接定址法,1对1映射; ​ 对于海量的数据判断在不在的问题,使用之前的一些结构已经无法满足&…

基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 假设一个收集轨道,上面有5个采集堆,这5个采集堆分别被看作一个4*20的矩阵(下面只有4*10),每个模块&…

【python3】多进程Pipe实现数据流模型

当涉及到数据流模型时,常见的方法是使用管道(Pipe)来实现进程间的通信。在数据流模型中,计算过程表示为数据流图,数据从一个节点流向另一个节点,并在节点之间进行转换和处理。 以下是一个稍微复杂一些的数…

opencv编程

opencv编程 引言: ​ 本实验旨在介绍使用OpenCV进行图像处理和视频处理的基本操作。OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了丰富的图像和视频处理功能,既可以进行图像的读取、显示…

187基于matlab的弹道目标跟踪滤波方法

基于matlab的弹道目标跟踪滤波方法,扩展卡尔曼滤波(extended Kalman filter, EKF)、转换测量卡尔曼滤波(conversion measurement Kalman filter, CMKF)跟踪滤波,得到距离、方位角、俯仰角误差结果。程序已调…

llama2c(3)之tokenizer和encode

2、tokenizer和编码 2.1 tokenizer tokenizer的model不同于Transformer的model,Transformer的model是一些权重参数,tokenizer的model是一些分词,将一个句子分成分词的中介(模型)。,具体就是tokenizer.py文…

c 不同类型指针的转换

int 指针与unsigned char类型指针互转 #include <stdio.h> #include <stdlib.h>int main(void){int a(0x1<<24)|(0x2<<16)|(0x3<<8)|0x4; //0x1020304printf("16进制:%x\n",a);u_int8_t *p(u_int8_t *)&a; //int指针转为unsig…

人工智能|机器学习——DBSCAN聚类算法(密度聚类)

1.算法简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法&#xff0c;簇集的划定完全由样本的聚集程度决定。聚集程度不足以构成簇落的那些样本视为噪声点&#xff0c;因此DBSCAN聚类的方式也可以用于异常点的检测。 2.算法原…

Spring AOP基于注解方式实现

1. 场景介绍 目前假设我们有一个计算器类&#xff0c;并要为其中的方法添加日志功能。 计算器类如代码所示&#xff1a; public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j);}public class Calculator…

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程

《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程 逻辑扇区根据逻辑扇区号算出物理编号中断例程&#xff1a;通过逻辑扇区号对软盘进行读写 代码安装 int 7ch 测试程序效果 实现通过逻辑扇区号对软盘进行读写 逻辑扇区 计算公式: 逻辑扇区号 (面号*8…