HTTPS协议的加密流程

目录

一,HTTPS是什么

二,两种加密方式

三,HTTPS的加密过程

3.1 引入对称加密

3.2 引入非对称加密

3.3 引入证书


一,HTTPS是什么

HTTPS也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。因为HTTP协议的内容都是按照文本的方式明文传输的,这就导致了在传输过程中会出现被篡改的情况。

也就是说使用HTTP协议进行网络传输是不安全的,所以现在使用HTTPS协议来进一步确保用户的信息安全。

二,两种加密方式

加密就是把明文通过一系列的变换,生成密文,解密就是把密文再通过一系列的变换,还原成明文

加密的两种方式:

1)对称加密:加密和解密使用的密钥是同一个密钥

  • 明文 + 密钥 => 密文
  • 密文 + 密钥 => 明文。

2)非对称加密:加密和解密使用的密钥是一对密钥,分为公钥和私钥,这两者是可以互换的,使用公钥加密,就使用私钥解密,使用私钥加密,就使用公钥解密

  • 明文 + 公钥 => 密文 / 明文 + 私钥 => 密文
  • 密文 + 私钥 => 明文 / 密文 + 公钥 => 明文

三,HTTPS的加密过程

3.1 引入对称加密

仔细思考,上面的模型还存在一个重大问题,服务器不是只和一个客户端通信,那么这些客户端使用的密钥是相同的吗?很明显,每个客户端的密钥必须是不同的,这样彼此之间才不知道对方的密钥是啥。

既然要求每个客户端的密钥都不相同,那么就需要在每个客户端与服务器建立连接的时候,把密钥生成出来(这里涉及到一些随机数机制来确保密钥互不相同),然后客户端再把生成出来的密钥通过网络发给服务器。

但是这里又出现了一个问题,客户端发送给服务器的密钥也是没有加密的,也就是说密钥是可以被黑客截获的,这样就又回到了最初的问题,如何加密?所以这时我们就引入了另一种加密方式 —— 非对称加密。

3.2 引入非对称加密

通过上述过程,客户端生成的密钥就不会被黑客获取到,接下来就可以通过密钥来进行通信了。这时候就会有人问了,既然可以使用非对称密钥加密,那为什么还要使用对称加密,直接全部使用非对称加密不就行了吗?

这是因为非对称加密/解密,运算成本是很高的,运算速度也比较慢,而对称加密/解密,运算成本低,速度快。所以非对称加密通常是在一些比较关键的环节使用(传递密钥),成本就比较可控,后续传输大量的业务数据,都是使用效率更高的对称加密。这样整体的传输效率也会得到提高。

但是上述流程还存在一个漏洞,画个图理解一下:

 在上述流程中,客户端的对称密钥就会被黑客获取到,之后客户端与服务器之间的通信也就会一览无余了。那么要如何解决这种 "中间人" 问题呢?这时候就需要引入第三方公正机构。

3.3 引入证书

会发生上述 "中间人" 问题的原因是客户端无法区分这个公钥究竟是不是黑客伪造的,因此在这里就要引入第三方,即一个被大家信任的"公正机构",如果公正机构说这个公钥是正确的,不是被伪造的,我们就可以使用这个公钥进行加密。

将这个流程画个图理解一下:

公正机构针对证书中的各个属性,计算出来的一个校验和,并对这个校验和进行加密,就得到了数字签名,这里的加密是指公正机构使用自己生成的一对非对称密钥加密,公正机构会使用自己持有的私钥对校验和进行加密,公钥会发布到各个客户端设备中(往往公钥是内置到系统中,安装了系统,就会自导公正机构的公钥)。

当客户端拿到数字签名,就可以通过系统内置的公正机构的公钥进行解密,得到最初的校验和,然后客户端在重新计算一遍校验和,看看和解密出来的校验和是否一样,如果一致,就说明证书没有被篡改,公钥是可信的。

在上述机制下,黑客就无法对证书内容进行篡改了,或者说篡改了也会被发现:

  1. 如果黑客篡改了里面服务器的公钥,替换成自己的,那么客户端在进行校验和验证的时候,就会发现校验和不一致,客户端就认为公钥被篡改了
  2. 如果黑客不止替换了公钥,还将数字签名给替换了,那么由于黑客没有私钥,无法对其篡改后的数据进行加密,或者说,使用自己的私钥加密后,客户端无法对其进行解密,而公正机构的公钥是客户端系统自带的,黑客无法替换
  3. 如果黑客自己申请一个证书,完全替换掉服务器的证书呢?这也是行不通的,因为申请证书是需要提交材料的,其中就有网站的主域名,认证机构会对这个域名是否归你所有进行认证。

综上所述,只要通过证书的检验,就说明公钥是服务器的公钥了

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

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

相关文章

《数据仓库入门实践》

前言: 1、问什么要写这篇博客? 随着自己在数仓岗位工作的年限增加,对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了哪些内容? 在日常工作中,发现刚接触不久数仓…

404 - File or directory not found.

iis部署的时候容易出现以下错误,造成的主要原因可能是IIS没有安装好某个组件或插件: 04-找不到文件或目录。 您要查找的资源可能已被删除、名称已更改或暂时不可用。 如果遇到该问题,安装iis的时候记得安装以下

Nginx配置Websocket

WebSocket 和HTTP虽然是不同协议,但是两者“握手”方式兼容。通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式可以将连接从HTTP升级为WebSocket。 Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTPS,其中 wss…

智能座舱架构与芯片 - (1) 背景篇

一、软件定义汽车 1.1 什么是软件定义汽车 软件定义汽车(Software Defined Vehicles, SDV)的核心思想是,决定未来汽车的是人工智能为核心的软件技术,而不再是汽车的马力大小,是否真皮座椅,机械性能的好坏。软件定义汽车的终极目…

【深度学习】卷积神经网络(CNN)

一、引子————边界检测 我们来看一个最简单的例子:“边界检测(edge detection)”,假设我们有这样的一张图片,大小88: 图片中的数字代表该位置的像素值,我们知道,像素值越大&#…

在 vscode 中的json文件写注释,不报错的解决办法

打开 vscode 的「设置」,搜索:files: associations,然后添加 *.json jsonc最后

AIGC ChatGPT4总结SQL优化细节操作

数据库SQL优化是一个复杂的过程,它通常涉及到许多不同的技术和方法。以下是一些常用的SQL优化策略: 1. **索引使用**:索引可以极大地加速查询速度。但是,索引并不总是有好处的,因为它们需要额外的空间来存储,并且在插入和更新数据时可能会减慢速度。因此,选择正确的字段…

ILI9225 TFT显示屏16位并口方式驱动

所用屏及资料如后图: ILI9225,176*220,8位或16位并口屏,IM0接GND,电源及背光接3.3v 主控:CH32V307驱动(库文件和STM32基本一样) 一、源码 ILI9225.c #include "ILI9225.h&quo…

Jmeter性能测试:高并发分布式性能测试

一、为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求。 基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的性能测试要求。 二、分布式性能…

学习MySQL先有全局观,细说其发展历程及特点

学习MySQL先有全局观,细说其发展历程及特点 一、枝繁叶茂的MySQL家族1. 发展历程2. 分支版本 二、特点分析1. 常用数据库2. 选型角度及场景 三、三大组成部分四、总结 相信很多同学在接触编程之初,就接触过数据库,而对于其中关系型数据库中的…

使用Java Servlet生成动态二维码

文章目录 引入ZXing库创建QRCodeServlet部署到Servlet容器拓展功能1. 动态生成二维码内容2. 调整二维码尺寸3. 错误修正级别4. 日志输出 结语 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&…

Linux程序之可变参数选项那些事!

一、linux应用程序如何接收参数? 1. argc、argv Linux应用程序执行时,我们往往通过命令行带入参数给程序,比如 ls /dev/ -l 其中参数 /dev/ 、-l都是作为参数传递给命令 ls 应用程序又是如何接收这些参数的? 通常应用程序都…