HTTPS加密流程

2023-11-18

HTTPS

一. 什么是HTTPS

HTTPS与HTTP一样都是应用层协议,与HTTPS不同的是:HTTP的协议内容都是按照文本方式进行明文传输的,这导致在传输过程第三方者能够轻易获取传输的内容,而HTTPS在HTTP协议基础上引入一个加密以防止传输内容泄露或被篡改。

二. 什么是"加密"

加密就是将明文(要传输的信息)按照指定的方式进行变换,生成密文. 解密就是将密文按照指定的方式进行变换,还原成明文.
在加密和解密的过程中,一般需要一个或多个中间转换的数据,来辅助这过程的正常进行,这个数据就被叫做密钥.

作用:就是防止他人获取其中的明文,窃取信息继而造成隐患.

像我们这些学编程的,对于"加密"这一词,倒是听说过,就从按位异或来讲.

a ^ b = c
c ^ b = a
//10 ^ 12 = 6
//6 ^ 12 = 10

我们可以发现,此时我们的 b 就是一把密钥,通过这个钥匙,可以给 a 加密变成 c ,也可以给 c 解密变成 a.

三. 加密的方式有哪些

1. 对称加密

对称加密其实就是通过一个"密钥",把明文加密成密文,并且把密文解密成明文.
上面举得例子就是,加密和解密用的都是同一个密钥.

画个图大家就好理解了…

在这里插入图片描述

假设盒子里的内容就是要传递的信息,那么为了保证这个信息不泄露,我们需要对盒子加密.只有拥有密钥的才可以查看明文.

假设这个是服务器要发给客户端的.那么当,客户端和服务器都拥有这把密钥之后,他们之间进行信息的传输就是安全的.

怎么才能做到客户端和服务器都有这把钥匙呢?此时就需要通过网络将这把钥匙的模板传过去.

在这里插入图片描述

但是这个密钥是通过网络途径传输过去的,有可能会被黑客截胡,那么这个黑客不就也拿到了这个密钥嘛?

在这里插入图片描述

对称加密里最关键的就是密钥,客户端和服务器需要先约定好密钥是什么,如果客户端生成了密钥,就需要通过网络告知服务器密钥是什么,由于密钥本身也会在网络上明文传输,一旦被黑客截获,那么后续对数据的加密也就失去了意义.

因此密钥的传输也必须加密,即指定一个"密钥的密钥",也就是下面讲的非对称加密.

2. 非对称加密

给大家讲个游戏规则:

  • 甲乙丙三个人
  • 甲手里有一个盒子和一把锁以及两把钥匙,这个钥匙呢就比较特殊了,A钥匙可以给锁上锁,B钥匙可以给锁解锁.
  • 乙手里有一封信,需要传输到甲的手里,但是不可以给丙看
  • 此时甲乙分别在两个不同的房间中,一切的交流都是需要丙来进行传递.
  • 丙是负责中间送东西的,它的任务就是看到信封中的内容.(规定时间内一定要送到)
  • 问:如何不让丙看到信封的内容,并且还能够把信封安全的送到甲的手里?

在这里插入图片描述

我们可以:

  1. 甲先把没有上锁的空盒子交给丙帮忙送过去
  2. 此时乙不需要任何行动
  3. 甲再将用于上锁的钥匙A交给丙,让他给送过去
  4. 此时乙的手里就有一个没有上锁的空盒子和一个可以上锁的钥匙以及要传递的信封
  5. 乙可以将信封装进空盒子,再将空盒子上锁,最后一并交给丙.
  6. 由于丙没有钥匙B解不开这个盒子,所以只能将盒子连带钥匙一并交给甲
  7. 甲手里有钥匙B,所以甲可以打开盒子拿到信封
  8. 需要注意的是上锁的钥匙和没上锁的空盒子要分开送,不然丙一旦上了锁,乙也是打不开这个盒子的

通过上面的这个小游戏,我们可以理解为:

信封就是对称密钥,钥匙A,B就是非对称密钥,我们需要通过非对称密钥来完成将对称密钥安全的送到对方手里的这个任务.

下面是正式的讲解:

非对称加密要用到两个密钥,一个叫公钥,另一个叫做私钥.(公钥和私钥是成对出现的,公钥用于加锁,私钥用于解锁)
通过公钥对明文进行加密,变成密文:然后通过私钥对密文进行解密,变成明文,也可以反着用.

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

我们引入非对称加密,来对自己的对称密钥进行加密:

  1. 一般的服务器会生产自己的公钥和私钥,把公钥对外开放出去,自己保留私钥.
  2. 客户端使用这个服务器的公钥对自己的对称密钥进行加密,然后将加密好的对称密钥以密文的形式发送给服务器,服务器使用私钥进行解密,因此就获得了对称密钥的明文.

注意:

由于对称加密的成本是比较低的,即机器资源消耗量是比较小的,速度也比较快,因此我们传输数据时会先利用非对称加密方式将对称密钥进行加密,然后使用对称密钥再对数据进行加密.

还不清楚的话.大家看下面的一个图:

在这里插入图片描述

此时的黑客,即使截获到了这个传输的数据,也无法拿到对称加密的密钥.

不过你以为这样就可以难到我懒洋洋大王了吗?
在这里插入图片描述

3. 中间人攻击

可能你认为上面的操作已经足够安全了…

NONONO!!!

假如我在截取到你的数据后,将你的数据篡改,阁下该如何应对?

看图:
在这里插入图片描述

上图就是关于中间人攻击的一个介绍,实质上就是黑客在中间充当一个双面客. 服务器将公钥pub1发送过来,黑客中间劫持,并且自己生成了一对非对称密钥,将自己生成的pub2发送给客户端,但是由于客户端不知道发来的pub2是不是服务器的公钥,因此就上当了.将对称密钥通过pub2进行加密,发送给黑客,然后黑客将pub2加密的对称密钥进行解密,拿到客户端的对称密钥,再将自己的对称密钥通过pub1进行加密,发送给服务器.由于服务器也不知道这个加密过的对称密钥是不是客户端发送来的,因此就使用这个对称密钥进行后续的加密了.

从上述过程来说,客户端无法判断公钥的真假造成的。如果客户端可以辨别公钥的真假,那么这个中间人攻击也就迎刃而解了!

4. 引入证书

为了解决上述问题,人们就想出来了"证书"这个方法.就是一些服务器(网站)在成立的时候,需要去一些专门的认证机构(第三方机构)申请证书.服务器需要提供一些资质,当申请通过后,机构就会给你颁发一个证书.其中,证书中也就包含了公钥.此时客户端申请公钥的时候,就不应该只是请求一个公钥了,而是请求要一个证书.当客户端拿到证书后,就可以进行校验,验证证书是不是假的或者被篡改过的.如果客户端发现证书是无效的,浏览器就会直接弹出警告…

查看证书的过程:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们可以看到上面有一个字段是指纹.其实这个指纹里面存的内容就是将上面整体的字段通过签名算法求出签名,再根据证书提供的公钥,来进行加密的密文.

证明机构本身是非对称加密的,上面的指纹就是通过证明机构的公钥进行加密,证明机构的私钥会在客户端下载这个安全证书后自带.

那么这个证书给密文加密后,我这里也没有密钥,该怎么解析呢?

其实不然,因为我们的系统中会自带一些证书的密钥,用于解析密文,又因为是自带的,不需要通过网络的传输,所以不用担心这个密钥被获取.

此时大概的流程我们可以画图参考一下:

在这里插入图片描述

注意,认证机构是有一对非对称密钥的。私钥用来加密hash值就得到了签名。公钥给客户端就可以解密签名获得hash值了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTPS加密流程 的相关文章

随机推荐

  • 信创-大数据平台CPU架构支持

    一 CDH和HDP CDP CDP数据中心类似于CDH和HDP 直接安装在硬件服务器上 目前支持市面上主流的X86服务器 包括国内海光服务器 CDH不支持ARM 以上两种大数据平台都仅支持x86架构 早在几年期RedHat联手clouder
  • IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)

    自动代码 常用的有fori sout psvm Tab即可生成循环 System out main方法等boilerplate样板代码 例如要输入for User user users 只需输入user for Tab 再比如 要输入Dat
  • SQL BOY 4 款脚本工具利器

    对于正在运行的mysql 性能如何 参数设置的是否合理 账号设置的是否存在安全隐患 你是否了然于胸 俗话说工欲善其事 必先利其器 定期对你的MYSQL数据库进行一个体检 是保证数据库安全运行的重要手段 今天和大家分享几个mysql 优化的工
  • Java多线程工具类之循环栅栏计数器

    Java多线程下循环计数器 本文主要内容 CyclicBarrier 下文中凯哥就用cycBar来代替 定义介绍 举例说明 代码演示 从源码来看原理及总结 CyclicBarrier与CountDownLatch 下文就用CountDown
  • 多分类SVM支持向量机的matlab仿真

    目录 一 理论基础 二 核心程序 三 仿真结论 一 理论基础 支持向量机 Support Vector Machine SVM 是一种在统计学习基础上发展起来的机器学习方法 其最大特点是根据Vapnik结构风险最小化原则 它的基本模型是定义
  • 从0到1:如何建立一个大规模多语言代码生成预训练模型

    国产AI辅助编程工具CodeGeeX是一个使用AI大模型为基座的辅助编程工具 帮助开发人员更快的编写代码 可以自动完成整个函数的编写 只需要根据注释或Tab按键即可 它已经在Java JavaScript和Python等二十多种语言上进行了
  • 判断机器大端小端的方法

    Big Endian和Little Endian的定义如下 1 Little Endian就是低位字节排放在内存的低地址端 高位字节排放在内存的高地址端 2 Big Endian就是高位字节排放在内存的低地址端 低位字节排放在内存的高地址端
  • DAC0832数模转换芯片介绍及使用教程

    1 芯片简介 DAC0832是采样频率为八位的D A转换芯片 集成电路内有两级输入寄存器 使DAC0832芯片具备双缓冲 单缓冲和直通三种输入方式 D A转换结果采用电流形式输出 若需要相应的模拟电压信号 可通过一个高输入阻抗的线性运算放大
  • Python小实验2—产生式系统实验

    文章目录 1 实验内容 2 实验目的 3 实验思路 4 源代码 5 实验结果 1 实验内容 设已知初始事实存放在综合数据库中 该动物身上有 暗斑点 长脖子 长腿 奶 蹄 推理机构的工作过程 1 从规则库中取出r 检查其前提是否可与综合数据库
  • QT之QChart绘制动态曲线

    QT之QChart绘制动态曲线 1 头文件 2 值写入QLineSeries 3 创建QChart对象 添加坐标轴 4 创建QChartView 5 QChartView显示到窗口 6 完整例子 QChart的系列 QChartSeries
  • 数据量太大,DOM节点加载过多,怎么保证前端在渲染的时候页面不会卡(性能优化)

    一 定时器分批渲染 既然一次渲染10万条数据会造成页面加载速度缓慢 那么我们可以不要一次性渲染这么多数据 而是分批次渲染 比如一次10000条 分10次来完成 这样或许会对页面的渲染速度有提升 然而 如果这13次操作在同一个代码执行流程中运
  • 苹果今天发布了 iOS 14.5 的第一个开发者预览版

    苹果今天发布了 iOS 14 5 的第一个开发者预览版 其中一个重要的新功能是 iPhone 12 机型在双 SIM 卡模式下对 5G 的全球支持 此前该功能仅在中国大陆地区提供 海外 iPhone 12 机型同时配备了物理 SIM 卡槽和
  • windows利用msys2安装minGW64

    目录 下载mysy2 配置国内源 安装minGW64 下载mysy2 官网下载非常慢 所以我们可以选择从清华大学的源下载 清华大学的msys2源说明 下载msys2 x86 64 20220603 exe 配置国内源 pacman 的配置
  • springboot启动feign项目报错:Service id not legal hostname

    正经学徒 佛系记录 不搞事情 在feign项目中 定义接口调用服务 FeignClient name eureka client public interface TestInterface GetMapping value get Str
  • 99款高质量免费(X)HTML/CSS模板

    99款高质量免费 X HTML CSS模板 01 T 20 在线预览下载该模板 02 Shape 在线预览下载该模板 03 Your Business 在线预览下载该模板 04 Solitude 在线预览下载该模板 05 Fashion C
  • C# BackgroundWorker控件使用方法

    在C Winform开发中 若遇到大量数据操作或运算 通常UI界面卡死造成交互不良 解决方法 1 使用BackgroundWorker控件 2 使用多线程委托回调 本章先介绍该控件使用方法 界面展示 若没使用该控件 点击开始 进度条会滚动但
  • linux程序前后台切换

    1 怎么样使程序在后台执行 方法有很多 这里主要列举两种 假如我们有程序pso cpp 通过编译后产生可执行文件pso 我们要使pso在linux服务器后台执行 当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果 假设操作都在当
  • Python selenium —— selenium与自动化测试成神之路

    Python selenium selenium与自动化测试成神之路 忽然想谈谈自动化的学习路径 因为发现很多人总是急于求成 不懂该如何学习 在群里总是会遇到很多人问低级问题 写了一个selenium脚本 却执行失败 跑到群里来问 大神 这
  • 双指针模板

    核心思路 首先打一个 O n 2 O n 2 O n2 的暴力 然后考虑性质 当i j具有单调性的时候 那么我们才可以用双指针来优化 基础例题 最长连续不重复子
  • HTTPS加密流程

    HTTPS HTTPS 一 什么是HTTPS 二 什么是 加密 三 加密的方式有哪些 1 对称加密 2 非对称加密 3 中间人攻击 4 引入证书 HTTPS 一 什么是HTTPS HTTPS与HTTP一样都是应用层协议 与HTTPS不同的是