HTTPS是什么,详解它的加密过程

news2024/9/21 8:40:34

目录

1.前言

2.两种加密解密方式

2.1对称加密

2.2非对称加密

3.HTTPS的加密过程

3.1针对明文的对称加密

3.2针对密钥的非对称加密

3.3证书的作用


1.前言

  我们知道HTTP协议是超文本传输协议,它被广泛的应用在客户端服务器上,用来传输文字,图片,视频,js,html等.但是这种传输如果经过了黑客的路由器或者别有用心的人的设备,可以很轻松的破解并修改我们的内容,这种协议的安全性得不到保障.为了解决这种问题,我们引入了HTTPS,它是基于HTTP协议的一种加密安全协议,可以把HTTP协议传输的内容进行加密传输,让黑客或者别有用心的人破解不了.

2.两种加密解密方式

2.1对称加密

   我们首先要说明一个概念就是HTTP是明文传输的,如果我们想让他被加密,那么就需要用到数据加密.那么我们应该如何对正文部分进行加密呢?考虑到资源消耗成本问题还有揭秘问题.我们可以使用对称加密对数据进行加密,即加密和解密的算法都是同一个密钥.

2.2非对称加密

  而非对称加密,加密和解密采用的是两个密钥 ,如k1,k2这两个密钥是成对的,k1用来加密,此时k2就用来解密.也可以使用k2加密 ,k1解密.我们可以把一个密钥公开出去,而这个公开出去的密钥,就是公钥,还有一个密钥自己保存好,这个密钥就是私钥.手里只有一把的话,是无法知道另一把是啥的.

  看起来非对称加密很安全,但是这种加密方式,所需要消耗的系统资源开销也更大.

那么HTTPS是如何进行加密的呢?

3.HTTPS的加密过程

我们站在黑客的角度来看,如果一个HTTP请求或者响应进行传输,在不考虑服务器被黑的情况下,传递到服务器之前,如果黑客想拦截的话,则需要在传递的过程中拦截.

如下图所示:

数据首先从客户端传递到服务器的过程中被黑客拦截了.如果是HTTP明文传输,那么就会被黑客直接拿到数据,这样,黑客如果想篡改数据或者拿到隐私去做违法犯罪的事情就很容易.

那么我们该如何在尽可能不影响效率的情况下对HTTP请求进行加密呢?

3.1针对明文的对称加密

我们可以使用对称加密我们的数据,即客户端和服务器公用同一个密钥,这样黑客拿到数据以后就破解不了了

我们需要注意两点

1.对称加密的时候,客户端和服务器用的是同一个密钥

2.不同的客户端的,用的密钥都不同,

这也就意味着,每个客户端链接服务器的时候,都需要生成一个随机的密钥,并且告诉给服务器.也不一定是客户端生成,服务器生成并且告诉给客户端也可以,

但是这个密钥生成的过程,很容易被黑客拿到,即告诉了客户端的时候,黑客也可以拿到这个这个密钥,哪就形同虚设了.

那么这种情况应该怎么办呢? 我们可以使用非对称加密把密钥进行单独的密文传输.

3.2针对密钥的非对称加密

我们使用非对称加密的主要目的就是把明文密钥进行加密,确保密钥的安全性.

这里有同学可能会问,那么为什么不能直接把明文对称加密呢,而是要大费周章的这样搞?原来这是因为非对称加密使用的系统资源远大于对称加密,如果大规模使用,就很难承担了.

我们让服务器生成公钥和私钥,公钥可以告诉所有人,而私钥只有服务器自己知道.客户端就可以使用公钥对密钥加密,这样黑客就算拿到了这个密钥,因为他没有解密所需的私钥,也解不开这个密钥.

只要这个对称密钥的数据到达服务器,后续就可以客户端和服务器通过这个密钥来进行交流,黑客就无法破解后续的内容了,

上述过程看似天衣无缝,但是在聪明的黑客眼里,还是很容易破解,即使用中间人攻击

服务器可以创建自己的公钥和私钥,那么黑客也可以用同样的方式,创建出一对公钥和私钥,冒充自己是服务器,

在服务器拿到了基于pub1加密的key 的时候,自然可以通过自己的私钥解密,也就相信了是这么回事.后续的交流都是key,而客户端全程浑然不知.他只是拿到了假的公钥然后加密传给黑客,黑客解密后就拿到了key.然后通过服务器的pub1加密,伪造自己是客户端传给服务器.

这种方法如何解决呢?最关键的一点,在客户端拿到公钥的时候,要是有办法验证这个公钥是不是真的.而不是黑客给的.

3.3证书的作用

要求服务器这边提供一个证书.

证书是一个结构化的数据结构,有很多属性.

如:服务器的域名,公钥,证书有效期等

证书会有一个签名,里面本质上是一个加密的校验和,可以把证书其它字符进行一系列的算法得到一个校验和,如果两份数据一样,即校验和一样,那么就说明是一样的,如果不一样,则两份数据不一样.就是这个公钥有问题.

客户端拿到证书以后主要做两件事:

1.用一样的算法进行计算,得到校验和1

2/使用系统内置的公证机构公钥,对证书的签名进行解密,得到校验和2.

对比一下就知道是不是真的了.

市面上的公证机构没几家,基本上都在操作系统里面.公钥也都在

1.如果黑客直接修改公钥,不修改签名,那么校验和不一样,就识别出来了,

2.如果黑客修改公钥,也尝试修改签名,但是他不知道私钥是什么,所以无法生成加密的签名.

如果黑客拿自己的私钥加密呢?客户端用公证机构的公钥解密也会失败.

上述操作,就把客户端篡改证书的行为给堵死了.

所以这种方法是可行的.这也是市面上流行的方法.

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

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

相关文章

MyBatis 学习(五)之 高级映射

目录 1 association 和 collection 介绍 2 案例分析 3 一对一关联和一对多关联 4 参考文档 1 association 和 collection 介绍 在之前的 SQL 映射文件中提及了 resultMap 元素的 association 和 collection 标签,这两个标签是用来关联查询的,它们的属…

指针与malloc动态内存申请,堆和栈的差异

定义了两个函数print_stack()和print_malloc(),分别演示了两种不同的内存分配方式:栈内存和堆内存。然后在main()函数中调用这两个函数,并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的,当函数返回后&…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像(NEIT)技术以其无辐射、非接触、响应速度快的特点,为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统,实现了数据的在线采集及实时成像,提高…

黑马JavaWeb课程中安装vue脚手架出现的问题

1 安装node.js 要想前端工程化,必须安装node.js,前端工程化的环境。 在成功安装node.js后, 修改全局包安装路径为Node.js安装目录, 修改npm镜像源为淘宝镜像源,这里出现第一个问题,视频中给的淘宝镜像为&…

力扣SQL50 无效的推文 查询

Problem: 1683. 无效的推文 思路 👨‍🏫 参考 char_length(str):计算 str 的字符长度length(str):计算 str 的字节长度 Code select tweet_id from Tweets where char_length(content) > 15;

G8-ACGAN理论

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、对比分析 前面的文章介绍了CGAN&#xf…

面试官上来就让手撕HashMap的7种遍历方式,当场愣住,最后只写出了3种

HashMap的7种遍历方式 四大类遍历方式 其实在JDK1.8之前,遍历的方式远没有现在这样多,为了提高开发效率,JDK1.8开始引入了Stream流、Lambda 表达式等新特性,这让很多数据结构的遍历方式也丰富了起来。目前,常用的遍历方…

Node.js中的缓存策略和缓存技巧

在Node.js中,缓存策略和缓存技巧是提升应用性能和用户体验的关键因素。通过有效地利用缓存,我们可以显著减少系统资源的消耗,加快数据访问速度,从而提升整体的网站性能。本文将针对Node.js中的缓存策略和缓存技巧展开深入探讨&…

Windows下卸载JDK

操作步骤: 直接到windows程序卸载面板进行卸载 然后删除已配置的环境变量

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题,它会导致程序的内存占用逐渐增加,最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具,TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…

设置matplotlib的style和rcParams

在matplotlib文档中,有3中设置matplot的方法,见文档 https://matplotlib.org/stable/users/explain/customizing.html 目前用得比较多的是设置rcParams,而设置rcParams也有两种方式。下面以 plot的cycler为例进行说明。 cycler就是定义的一些…

13.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-如果没有工具就创造工具

内容参考于: 易道云信息技术研究院VIP课 上一个内容 :12.游戏网络通信存在的问题 现在把游戏网络的架构看了一个小小的大概,可以用它的接口发数据接收数据了,如果真正想用它这一套东西,真正核心不在于它的接口而在于…

私域必备宝藏工具:多微信统一管理聚合聊天

对于私域流量运营者来说,如何高效管理多个微信号成为了一道难题。 不过不用担心,通过微信管理系统,可以实现多个微信同时登录,同一个界面内聚合聊天,省去来回切换账号的步骤。而且,还有很多非常实用且便捷…

Chrome插件 | WEB 网页数据采集和爬虫程序

无边无形的互联网遍地是数据,品类丰富、格式繁多,包罗万象。数据采集,或说抓取,就是把分散各处的内容,通过各种方式汇聚一堂,是个有讲究要思考的体力活。君子爱数,取之有道,得注意遵…

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

camunda7流程版本的控制和使用

1、流程定义的版本控制 从本质上讲&#xff0c;业务流程是长期运行的&#xff0c;流程实例可能会持续数周或数月。同时&#xff0c;流程实例的状态将存储到数据库中。但是&#xff0c;即使仍有正在运行的实例&#xff0c;您也可能需要更改流程定义。 流程引擎支持此功能&…

笔记73:ROS中的各种消息包

参考视频&#xff1a; 33.ROS 的标准消息包 std_msgs_哔哩哔哩_bilibili 34. ROS 中的几何包 geometry_msgs 和 传感器包 sensor_msgs_哔哩哔哩_bilibili 标准消息包&#xff1a;std_msgs常用消息包&#xff1a;common_msgs导航消息包&#xff1a;nav_msgs几何消息包&#xf…

C++数据结构与算法——二叉树的属性

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

C++——String(1)

目录 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 1.2 相关题目 2. 标准库中的string类 2.1 string类&#xff08;了解一下&#xff09; 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的容量操作 3. string类对象的访问及遍历操作…

瑞_Redis_Redis的Java客户端

文章目录 1 Redis的Java客户端1.1 Jedis快速入门1.1.1 入门案例1.1.1.1 项目构建1.1.1.2 引入依赖1.1.1.3 建立连接1.1.1.4 释放资源1.1.1.5 测试1.1.1.6 完整测试类代码 1.1.2 Jedis连接池1.1.2.1 连接池工具类1.1.2.2 改造原始代码 &#x1f64a; 前言&#xff1a;本文章为瑞…