HTTPS 加密协议

news2025/1/18 7:41:17

✏️作者:银河罐头
📋系列专栏: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 值,但是由于黑客不知道私钥就无法加密生成签名。

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

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

相关文章

类型转换——C++

1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化, C语言中总共有两种形式的类型转换:隐式类型转换…

刘二大人《Pytorch深度学习实践》第十讲卷积神经网络(基础篇)

文章目录卷积神经网络基础卷积层池化层课上代码GPU版本代码卷积神经网络基础 全连接的网络将图片的的本身二维空间结构进行了破坏,而这些空间结构是有用的,因此,要定义新的操作图像的计算节点,因此引入了卷积神经网络,…

JavaWeb开发 —— 请求响应

目录 一、概述 二、请求 1. postman工具 2. 简单参数 3. 实体参数 4. 数组集合参数 5. 日期参数 6. JSON参数 7. 路径参数 三、响应 1. ResponseBody 2. 统一响应结果 3. 案例 一、概述 通过之前对 JavaWeb开发 —— Web入门 的学习,我们开发…

失眠一月码出527页文档,详解SpringCloud微服务和分布式系统实践

所谓的分布式系统,就是一组计算机为了共同完成业务功能通过网络协作的多节点系统。分布式系统本身也有一系列需要解决的问题,包括多个计算机节点的路由选择、各个服务实例的管理、节点监控、节点之间的协作和数据一致性等,当然还有网络故障、…

lamp 架构的搭建

php 解释动态页面 php来连接数据库 mysql 页面信息和端口信息 存放数据 apache 前端web服务器,展现页面 源码编译安装这三个服务 配置下载apache: systemctl stop firewalld 关闭安全机制,防火墙 可以一条命令:systemctl is-enabled firewalld 和 s…

【推荐系统】model 落地(样本/特征/预测服务)

兜率宫小道童的个人空间-兜率宫小道童个人主页-哔哩哔哩视频(如下是该视频课系列的笔记) 1-深度学习在搜索、广告、推荐系统中的应用-业务问题建模_哔哩哔哩_bilibili 其他章节 目录 二、深度学习落地 模型训练服务流程 1-样本生成-标签拼接 1-样本…

OJ练习第73题——解数独

解数独 力扣链接:37. 解数独 题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一…

MySQL-中间件mycat(二)

目录 🍁部署主从复制 🍁mycat读写分离 🍂修改配置文件 🍂设置balance与writeType 🍂设置switchType与slaveThreshold 🍂启动程序 🍂验证读写分离 🍁垂直拆分-分库 🍂实现…

【从零开始学Skynet】基础篇(九):调试控制台服务

Skynet自带了一个调试控制台服务debug_console,启动它之后,可以查看节点的内部状态。 1、启用调试控制台 (1)在skynet/examples目录下新建main_console.lua文件,代码如下所示: local skynet require &quo…

【Python_Scrapy学习笔记(二)】创建Scrapy爬虫项目

创建Scrapy爬虫项目 前言 本文主要介绍如何创建并运行 Scrapy 爬虫项目。 正文 1、创建 Scrapy 框架 Scrapy 框架提供了 scrapy 命令用来建立 Scrapy 工程,在终端 terminal 中输入以下命令: scrapy startproject 自定义的项目名称创建好爬虫项目文件…

2023年超实用的27个VSCode插件推荐

Visual Studio Code,或者称作VS Code,是一个广为人知且评价很高的代码编辑器,它有许多特性和扩展功能,以增强开发体验。使用VS Code的主要好处之一是它的灵活性,允许开发人员根据自己的特定需求进行自定义。此外&#…

02-app漏洞发现

漏洞发现-APP应用之漏洞探针类型利用修复 一、思维导图: 思路说明: apk反编译提取URL或抓包获取url,进行web应用测试,如不存在或走其他协议的情况下,需采用网络接口抓包进行数据获取,转至其他协议安全测试…

【jvm系列-05】精通运行时数据区共享区域---方法区

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

Redis 6.0的多线程是如何工作的

来了解下 6.0 版本中新出的多线程特性。 1、多线程处理网络IO,单线程执行命令 Redis 一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF 重写),但是&…

freeswitch带媒体压力测试方案

概述 原本的计划是使用sipp完成带媒体压力测试,但是实际测试过程中发现sipp的媒体处理功能有问题(也有可能是我使用的姿势不对)。 sipp在带媒体的情况下(600路并发开始),出现大量的不响应和响应延迟&…

请求响应-响应

前面已经说了我们重点关注的就是XXXcontroller类 进行请求接收 和响应 接收参数那些我们在请求部分讲过了 现在我们来处理响应部分 响应 设置响应数据 可以发现其实我们之前都是设置过的 比如那个Hello World 浏览器都接收到了且在浏览器上进行了输出 这里的是返回值作为这个…

Direct3D 12——纹理——纹理

纹理不同于缓冲区资源,因为缓冲区资源仅存储数据数组,而纹理却可以具有多个mipmap层级(后 文有介绍),GPU会基于这个层级进行相应的特殊操作,例如运用过滤器以及多重采样。支持这些特殊 的操作纹理资源都被限定为一些特定的数据格式…

7 个最好的 Word 转 PDF 转换器

如果您使用 Word 文件,您可能在某个时候遇到过将 Word 文件转换为 PDF 的紧迫问题。PDF 文件有很多优点。它们通常更紧凑,无论您在哪里打开它们看起来都一样。PDF 还允许您共享文档,而不必冒有人更改内容的风险。那么如何将 Word 文档转换为 …

小白学网络安全要学些什么?

一.网络安全学些什么呢? 虽然网上已经有非常多的学习路线了,但是仍然有很多零基础的小白还是不懂网络安全到底应该要怎么去学习,我也经常会在后台收到这样的问题“我想学网络安全,需要先学编程语言吗?”、“学渗透就业…

【python零碎】

1. 拼接字符中,插入变量 >>> shepherd "Mary" >>> age 32 >>> stuff_in_string "Shepherd {} is {} years old.".format(shepherd, age) >>> print(stuff_in_string) Shepherd Mary is 32 years old. &…