HTTPS 加密协议
迪丽瓦拉
2025-05-30 22:50:40
0

✏️作者:银河罐头
📋系列专栏:JavaEE

🌲“种一棵树最好的时间是十年前,其次是现在”

目录

  • HTTPS
    • "加密" 是什么
    • HTTPS 的工作过程
    • 引入证书

HTTPS

http + 安全层 (SSL)

SSL 用来加密的协议,也叫 TLS

为啥要整个"安全层"呢?
原因是臭名昭著的"运营商劫持"(以前是用 http 明文传输)

网络上如果明文传输数据是非常危险的,就需要加密来保证安全。

“加密” 是什么

加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文。 解密就是把 密文 再进行一系列变换, 还原成 明文。在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为"密钥"。

HTTPS 的工作过程

HTTPS 其实主要是涉及到其中的 SSL 部分,SSL 并非仅仅是在 HTTPS 中使用。

进行安全传输,核心就是"加密"。

加密其中一种最简单有效的办法就是 “对称加密”。

  • 对称加密

a(明文) + key => b(密文)

b(密文) + key => a(明文)

对称密钥:同一个密钥(key),既可以用来加密,也可以用来解密。

对称加密的安全性的前提是:密钥不能被黑客知道。

密钥可以认为是一串数字/字符串,加密的过程,就是把明文和密钥进行一系列的数学变换(其中最简单的一种方式就是按位异或^)。

image-20230309145123371

由于黑客不知道密钥是啥,所以即使黑客截获了加密的数据也不知道是啥意思。

  • 客户端生成密钥,还是服务器生成密钥呢?

由于一个服务器对应很多个客户端,每个客户端的密钥都不一样。假设客户端生成一个密钥,客户端就需要把这个密钥告知给服务器。

image-20230309145622191

客户端生成密钥,发给服务器。因为此时服务器还不知道密钥,所以此处的密钥只能明文传输,密钥可能就被黑客给截获了。

以上问题的关键就是如何把密钥安全的传递过去。

此处就可以引入非对称加密

  • 非对称加密

生成一对密钥,公钥和私钥。

明文 + 公钥 => 密文

密文 + 私钥 => 明文

使用 公钥 加密,使用 私钥 解密(或者反过来也行)

image-20230309151057682

服务器生成一对公钥私钥,客户端持有公钥,服务器持有私钥。此时客户端的公钥从服务器拿,黑客也能知道公钥。但是黑客不知道私钥,私钥是服务器持有的。

客户端使用公钥来对 对称密钥 进行加密,传输给服务器,服务器就可以拿着私钥来解密得到对称密钥。

此时客户端服务器就可使用这个对称密钥来进行后续的传输了。

  • 为啥有了非对称加密,还要保留对称加密呢,全都用非对称加密行不行?

不行!

因为对称加密快,非对称加密慢,要尽可能的提高整体的速度。

但是上述过程中还存在一个问题。

  • “中间人攻击”

image-20230309161654118

  • 如何避免"中间人攻击"?

解决中间人攻击的关键是,客户端能够辨别这个响应(公钥)是服务器真实的公钥

引入一个"证书"(本质上是引入第三方的公证机构)。

引入证书

服务器(网站)在设立之初,就需要去专门的认证机构,申请证书(提供一些资质的)。审核通过就会给你颁发证书。服务器生成的公钥就包含在这个证书当中了。

客户端向服务器申请公钥的时候,此时就不是单单申请一个公钥了,而是把整个 证书都请求过来。

客户端拿到证书之后,就可以对证书进行校验,(验证一下证书是不是假的,是不是被篡改的)。

如果发现证书无效,浏览器就会弹窗警告。

image-20230309163816797

客户端拿到证书就可以对证书进行校验,证书上面会带有一个特定的字段,叫做证书的签名。

客户端对于证书的校验过程:

image-20230309171100750

认证机构,也有一组公钥私钥(不是 pub1 pri1),私钥用来加密 hash 值得到签名。公钥是客户端拥有的使用公钥解密签名得到hash 值。

  • 黑客能否把证书篡改了?

比如把公钥给改了,一旦替换了公钥,此时客户端算的 hash2 和签名解密出来的 hash1 就对不上了,客户端就知道无效。

黑客不知道认证机构的私钥,即使黑客自己算好了新的篡改后的 hash 值,但是由于黑客不知道私钥就无法加密生成签名。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...