认识HTTPS以及了解HTTPS的加密过程

news2024/9/21 11:11:57

目录

简单认识HTTPS:

运营商劫持: 

加密的理解: 

HTTPS的工作过程: 

对称加密: 

非对称加密: 

中间人攻击

证书 


简单认识HTTPS:

HTTPS 也是一个应用层协议。是在 HTTP 协议的基础上引入了一个加密层。加密层之前叫做SSL,现在叫TLS了,所以也叫SSL/TLS协议。

我们知道HTTP是按照文本的明文方式进行传输的,这就使得传输过程中容易出现被篡改的情况。提到这些我们就不得不说一下“运营商劫持”。

运营商劫持: 

运营商劫持的事情想必各位应该都遇到过,比如你想要下载一个qq音乐,正常情况下点击下载后会直接下载qq音乐,而有些情况会出现点击下载后给你下载了一个360手机助手,这就是典型的运营商劫持事件。那为什么会出现运营商劫持?为了钱!!!我们通过网络传输的数据包会经经过运营商的网络设备(如路由器,交换机等等),那么运营商的网络设备就可以解析出你传输的数据内容, 并进行篡改。点击下载本质上就是向服务器发送一个http请求,然后从服务器获得的http响应当中包含了下载的链接,然而运营商劫持之后,就会把给你的响应中的下载链接更换为360手机助手了。

当然,除了运营商之外也会有黑客利用相同的手段来窃取用户的隐私信息和篡改信息来谋取利益。我们都知道在互联网上进行明文传输是非常危险的,试想一下登录支付宝的时候被黑客获取到余额甚至密码有多可怕...

所以HTTPS就是在HTTP的基础上进行了加密,通过加密来进一步保障用户的信息安全。那么具体是怎么加密的呢? 

加密的理解: 

简单来说加密就是把要传输的明文,也就是要传输的信息,通过一些手段进行变换生成密文。  

解密就是把加密过的密文经过一系列的变换还原成明文的过程。

在这个加密和解密的过程中 , 往往需要一个或者多个中间的数据 , 辅助进行这个过程 , 这样的数据称为密钥 。

举个简单的例子:比如我们经常在电视中看到的电报,当A给B发送电报的时候,为了防止电报被直接截取并破译,就会进行一个加密的操作,即使被截获了,敌人也不能在短时间内破译,但是对于AB双方来说,他们之间有一个约定,别人是不知道的,所以B得到加密的电报的时候就可以直接还原成明文了。

在这其中:

密文:发送的电报

密钥:约定

明文:电报本身要传递的信息

HTTPS的工作过程: 

加密的方式有很多, 但是整体可以分成两大类: 对称加密 和 非对称加密

对称加密: 

对于对称加密就是通过同一个密钥,可以把明文加密成密文,也可以把密文还原的明文。

举个例子:我们用按位异或充当一个密钥,假设明文a=1234,密钥key=8888,那么加密后的密文b=a^key=9834。针对b再次进行使用按位异或得到明文为1234。对于字符串来说也是同理,每个字符都可以表示成一个数字。这里只是简单举个例子,HTTPS当中并不是使用按位异或。

 如图:

在这个过程当中客户端发送的是通过密钥加密过的密文,即便黑客截取到了密文,不知道密钥也是无法解密的。尽管如此,我们需要注意的是,这是一个客户端的情况,如果是多个客户端呢?这个时候服务器就需要知道每个对应客户端的密钥是什么了,也就是说服务器需要记录每个客户端的密钥,不仅如此,也想要保证客户端和服务器之间能够传递密钥。但是只要就又会引出一些安全问题:

比如我们在在客户端和服务器建立连接的时候, 双方协商确定这次的密钥是啥。但是这样的话黑客也就可以获取到密钥了!!!



 

如果我们直接这样传输,黑客就轻松的获得了密钥,就变得更危险了,所以我们需要对密钥的内容也进行加密!这样的话我们就需要对密钥再加一个密钥,这就出现了一个无限循环的套娃问题,就行不通了。

所以我们可以考虑使用非对称加密!  

非对称加密: 

非对称加密要用到两个密钥 , 一个叫做 " 公钥 ", 一个叫做 " 私钥 ";

公钥和私钥是配对的 。最大的缺点就是 运算速度非常慢 ,比对称加密要慢很多 ;

通过公钥对明文加密, 变成密文,通过私钥对密文解密,变成明文。

也可以反着用:
通过私钥对明文加密, 变成密文
通过公钥对密文解密, 变成明文

这里举个例子: 

A 要给 B 一些重要的文件, 但是 B 可能不在. 于是 A 和 B 提前做出约定:
B 说: 我桌子上有个盒子, 然后我给你一把锁, 你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件。在这个场景中, 这把锁就相当于公钥, 钥匙就是私钥。公钥给谁都行(不怕泄露), 但是私钥只有 B 自己持有。持有私钥的人才能解密。

对于非对称加密,服务器生成一对公钥私钥,客户端持有公钥,服务器持有私钥,此时客户端的公钥从服务器拿,黑客也会知道公钥,但是黑客不知道私钥,私钥是服务器自己的,别人没法知道。

客户端使用公钥,对对称密钥进行加密,传输给服务器,然后服务器拿着自己的私钥来解密获得对称密钥,此时客户端服务器就可以使用这个对称密钥进行后续的传输了。

由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密。

同时非对称密钥也不是绝对安全的,比如出现中间人攻击的情况。

中间人攻击

中间人攻击就类似于《毒战》中孙红雷扮演的角色,属于卧底。比如客户端向服务器发出请求,询问公钥,同时黑客在中间截获,向服务器也发出请求获取到服务器生成的非对称密钥中的公钥pub1,于是黑客将公钥告诉客户端公钥是pub2(公钥是黑客生成的非对称密钥中的),之后客户端生成对称密钥key,同时使用使用pub2对对称密钥key进行加密,准备将对称密钥发送给服务器,但由于使用的是pub2加密的key,所以黑客有相应的私钥pri2,可以进行解密,同时把对称密钥通过获取到的pub1公钥发送给服务器,这样黑客就完成了信息的获取。

如图所示:

那么怎么知道公钥是黑客的还是服务器的?(解决中间人攻击的关键)

证书 

证书本质上是引入第三方的公证机构。

服务器(网站)在设立的时候就需要去专门的机构进行认证,申请证书,审核通过会颁发证书。同时服务器生成的公钥也包含在证书中。(类似你去公安局办个身份证,身份证包含了你的各种信息) 

有证书之后,客户端向服务器请求公钥的时候,就不止是请求一个公钥了,是要把整个证书请求过来,当客户端拿到证书之后就可以对证书进行校验(看看证书是不是假的,是不是被改的,是不是无效的等等),如果发现证书无效,浏览器就会弹框报警。

证书中的签名是一个被加密的字符串,客户端可以通过认证机构提供的公钥进行解密,解密之后得到一个hash1值,然后客户端在通过同样的方法对其他字段算一次hash值得到hash2,看看hash1(从签名中接出来的)和hash2(客户端自己算的)是不是相同,相同说明有效,否则无效。同时黑客是无法进行更改证书的,比如把公钥换了,这样hash1和hash2就对不上了,就认为是无效的。而且黑客也无法重新生成签名,因为黑客不知道认证机构的私钥。

 

 

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

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

相关文章

逆向-还原代码之(*point)[4]和char *point[4] (Interl 32)

// source code #include <stdio.h> #include <string.h> #include <stdlib.h> /* * char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组 * char *point[4] // 指针数组。 a[4][5] // 一连串的指针…

客快物流大数据项目(一百一十六):远程调用 Spring Cloud Feign

文章目录 远程调用 Spring Cloud Feign 一、​​​​​​​简介

OpenGL入门之 深入三角形

一、引言 本教程使用GLEW和GLFW库。  通过本教程&#xff0c;你能轻松的、深入的理解OpenGL如何绘制一个三角形。  如果你不了解OpenGL是什么&#xff0c;可以阅读OpenGL深入理解。 二、基本函数和语句介绍 通过阅读以下的函数&#xff0c;你的大脑里能留下关于OpenGL基本函…

【每日一题Day184】LC1187使数组严格递增 | dp

使数组严格递增【LC1187】 给你两个整数数组 arr1 和 arr2&#xff0c;返回使 arr1 严格递增所需要的最小「操作」数&#xff08;可能为 0&#xff09;。 每一步「操作」中&#xff0c;你可以分别从 arr1 和 arr2 中各选出一个索引&#xff0c;分别为 i 和 j&#xff0c;0 <…

前端学习:HTML块、类、Id

目录 快 一、块元素、内联元素 二、HTML 元素 三、HTML元素 类 一、分类块级元素 二、分类行内元素 Id 一、使用 id 属性 二、 class与ID的差异 三、总结 快 一、块元素、内联元素 大多数HTML元素被定义为块级元素或内联元素。 块级元素在浏览器显示时&#xff0c;通常会…

Docker常用命令详解,有这些足够了

首先启动类 启动docker&#xff1a;systemctl start docker 停止docker&#xff1a;systemctl stop docker 重启docker&#xff1a;systemctl restart docker 查看docker状态&#xff1a;systemctl status docker 开机自启动&#xff1a;systemctl enable docker 查看docker概要…

【CocosCreator入门】CocosCreator组件 | Widget(对齐)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中的Widget组件用于UI布局和调整&#xff0c;可以通过调整Widget组件来实现UI元素的自适应和排版。 目录 一、组件介绍 二、组件属性 三、组件使用 四、脚本示例 一、组件介绍 在Coc…

Python中的统计学(二)

大数定律和中心极限定律都是概率论中重要的定理。它们之间的不同在于它们所涉及的随机变量和极限的不同。 大数定律是指随着样本容量的增大&#xff0c;样本均值越来越接近于总体均值的定律。即样本均值的极限等于总体均值&#xff0c;也就是说&#xff0c;当样本量足够大时&a…

绝了!!PDF转换没想到这么简单

PDF处理是很多小伙伴的“痛”&#xff0c;在工作学习中&#xff0c;PDF转换、PDF编辑、PDF和图片的各种问题都是需要快速解决的&#xff0c;但市面上不少付费的软件让我们很是肉痛&#xff01; 今天给大家推荐5个免费的神仙PDF转换网站&#xff0c;解决你的所以PDF问题~ 记得…

Simulink 自动代码生成电机控制:硬件开发板系统介绍

目录 前言 电源电路 MCU电路 开发板接口 关于电流采样和过流保护 驱动部分 总结 前言 在介绍开发板之前突然有感而发想多说两句&#xff0c;本人从事电控行业也是有一些年头了&#xff0c;除了刚刚毕业就接触的电机控制外&#xff0c;就是电源控制相关的&#xff0c;像三相P…

Point-to Analysis指针分析(2)

https://blog.csdn.net/qq_43391414/article/details/111046505 下面介绍一种新的指针分析的算法Steensgaard算法&#xff0c;并将其与上一篇文章介绍 Steensgaard算法 不同于Andersen算法,Steensgaard在前者的基础上&#xff0c;再次对问题进行了简化&#xff0c;从而指针分析…

远程访问及控制

目录 一、SSH远程管理 1&#xff09;SSH的简介 2&#xff09;SSH的优点 3&#xff09;常用的SSH软件的介绍 4&#xff09;SSH 的组成 5&#xff09;SSH的密钥登录 密钥登录的过程&#xff1a; 二、SSH的运用 1 &#xff09;SSH配置文件信息 2&#xff09;存放ssh服务…

JAVA 进程CPU过高排查

1. top命令看一下JAVA进程&#xff1a; 占用500%多&#xff0c;非常恐怖&#xff0c;程序卡得动不了了。 2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID&#xff0c;我的PID是13342&#xff0c;通过此命令可以查看实际占用CPU最高的的线程的ID&#xff0c;此处几位…

ChatGPT+Ai绘图【stable-diffusion实战】

ai绘图 stable-diffusion生成【还有很大的提升空间】 提示词1 Picture a planet where every living thing is made of light. The landscapes are breathtakingly beautiful, with mountains and waterfalls made of swirling patterns of color. What kind of societies m…

【学习笔记】unity脚本学习(五)【常用的方法函数Destroy、Instantiate 、SendMessage、invoke 、Coroutine】

目录 常用的方法函数Object体系结构MonoBehaviour复习继承的变量 继承自Object的方法Destroy 物体的销毁DestroyImmediate 立即销毁对象&#xff08;强烈建议您改用 Destroy&#xff09;Object.DontDestroyOnLoadObject.Instantiate 物体的生成类子弹生成案例 继承自Component的…

八股+面经

文章目录 项目介绍1.不动产项目数据机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 2.图书项目技术栈面试问题 Java基础MapHashMap v.s Hashtable(5点)ConcurrentHashMap v.s Hashtable(2点)代理模式1. 静态代理2. 动态代理2.1 JDK 动…

什么样的人适合学习网络安全?怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a;什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 会产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级学科&#xff0c;…

elasticsearch——数据同步

目录 数据同步思路分析 方案一&#xff1a;同步调用 方案二&#xff1a;异步通知 方案三&#xff1a;监听binlog 区别 关于elasticsearch与数据库数据同步 导入课前资料提供的hotel-admin项目&#xff0c;启动并测试酒店数据的CRUD 声明exchange、queue、RoutingKey 导…

Python列表和字典前面为什么会加星号(**)?

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 python 中&#xff0c;单星号*和双星号**除了作为“乘”和“幂”的数值运算符外&#xff0c; 还在列表、元组、字典的操作中有着重要作用。 一、列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09…

flac格式如何转换为mp3,这3个方法超好用

随着音频格式的不断创新和发展&#xff0c;每种格式对应不同的特点。比如像flac格式可以提供无损音质的体验&#xff0c;但它的文件大小却是相对较大&#xff0c;不太适合在普通设备上进行传输和使用。而mp3作为一种流行的音频格式&#xff0c;它的压缩率较高&#xff0c;不但可…