HTTPS (HTTP+SSL) 对称/非对称加密 中间人攻击 证书加密

news2024/12/29 9:50:38

💖 欢迎来阅读子豪的博客(JavaEE篇 🤴)
👉 有宝贵的意见或建议可以在留言区留言
💻 欢迎 素质三连 点赞 关注 收藏
🧑‍🚀码云仓库:补集王子的代码仓库
在这里插入图片描述
不要偷走我小火车哦~ ~ ~

HTTPS

  • HTTPS 是什么
  • SSL 对称加密
  • SSL 非对称加密
  • 中间人攻击
  • 证书加密

HTTPS 是什么

HTTPS也是应用层协议, 在HTTP基础带上加了一个安全层
HTTPS -> HTTP + SSL(加密协议)
HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况(运营商劫持, 流量劫持)

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器, 交换机等), 那么运营商的网络设备就可以解析出传输的数据内容, 并进行篡改.
比如现在我们想下载软件"A"点击 “下载按钮”, 就是在给服务器发送了一个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该 APP 的下载链接. 但是当运营商劫持之后进行数据篡改, 就发现这个请求是要下载的是"A", 结果下载的是"B"

网络上如果明文传输数据,是是非常危险的!!所以就需要对数据加密
HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全

SSL 对称加密

HTTPS其实主要是涉及到其中的SSL部分 (SSL并非仅仅是在 HTTPS中使用)
进行安全传输,核心就是加密(数学转换), 加密其中一种最简单有效的办法,叫做“对称加密"(同一个密钥既能加密也能解密)
在这里插入图片描述
在这里插入图片描述
如果像上述方式进行数据传输的话, 由客户端生成密钥, 发给服务器, 此时由于密钥刚刚生成, 服务器还不知道,此处的密钥只能明文传输, 在传输过程中密钥可能就被黑客给截获了, 黑客就做了"中间人", 此时加密就形同虚设了

这种传输虽然成本低, 效率高, 但是安全系数低

SSL 非对称加密

非对称加密要用到两个密钥, 一个叫做 “公钥”, 一个叫做 “私钥”.
公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多.

  • 通过公钥对明文加密, 变成密文
  • 通过私钥对密文解密, 变成明文

公钥是公开的, 大家都可以用, 但是私钥是事先约定好了的, 只有传输双方有,
在这里插入图片描述
客户端使用公钥来对对称密钥进行加密,传输给服务器, 服务器就可以拿事先约定好的私钥来解密得到对称密钥.
此时客户端服务器就可以使用这个对称密钥进行后续传输了(因为对称加密传输速度更快)

重点: 非对称加密只是为了传输对称密钥

中间人攻击

上述的非对称加密看似严密, 但是黑客们想出了, 模仿服务器发送自己的公钥给客户端, 中间人在两遍各自扮演不同的角色, 两遍忽悠!

比如现在想访问百度, 中间人为搜狗:
查询百度服务器请求时可能被中间人搜狗拦截,搜狗就伪造了百度的公钥,换成中间人搜狗的公钥, 同时中间人搜狗也持有搜狗自己的私钥和公钥, 此时再把自己的公钥发给客户端, 客户端再以搜狗的公钥加密key(以后传输信息所需的对称私钥)并发出, 此时中间人搜狗根据自己的公钥解密得出对称密钥key, 之后中间人继续使用服务器的公钥对key重新加密并发给百度服务器, 伪装成客户端给百度服务器发送信息

重点 : 中间人搜狗发送自己的公钥给服务器

证书加密

上述中间人攻击使得我们不得不思考如下两个问题

  • 客户端如何获取到服务器公钥?
  • 客户端如何确定这个公钥不是黑客伪造的?

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

引入一个"证书"就解决了上述漏洞(本质上是引入第三方的公证机构)

服务器(网站)在设立之初, 需要去专门的认证机构, 申请证书(提供一些资质的)审核通过, 就会颁发证书, 服务器生成的公钥就包含在这个证书中
客户端像服务器请求公钥的时候, 此时不是请求单单一个公钥,而是请求整个证书, 客户端拿到证书之后, 可以对证书签名进行校验(验证一下证书的真伪, 有误被篡改)如果发现证书是无效,浏览器就会直接弹框告警!

客户端可以使用认证机构提供的公钥进行解密, 解密之后, 得到"结果1"(类似TCP校验和一个hash值), 再根据证书的其他字段进行同样的校验计算得到"结果2", 再把"结果1"(签名解出来的)和"结果2"(客户端自己解的)对比, 值相同则证明证书有效, 未被篡改

黑客只能拿到公钥操作,哈希值可以解出来,但是不能包装成证书,只有机构可以用私钥包装
认证机构,拥有一组公钥私钥私钥, 用来加密hash值得到签名, 而公钥是客户端拥有, 使用公钥解密签名获取hash值

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

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

相关文章

“源擎”云原生分布式核心业务系统有什么产品优势?

“源擎”核心系统利用云原生、分布式、微服务技术,基于企业架构设计思想,构建了基础服务、业务服务、交易中心以及系列支撑组件,包含业务架构和多个微服务应用。 业务架构中,交易中心为银行提供了更灵活的选择,支持产…

出现Invalid bound statement (not found)问题的解决办法(已解决)

前言: 今天在写项目时出现了Invalid bound statement (not found):xxxx这个问题,网上找了很多博客都不行,最后修改了配置文件解决了问题,借此将此类问题常见的解决办法汇总一下。 话不多说,直接列出解决办法如下&…

linux-0.11 研究

前言 多阅读优秀代码,才能提高快速、深刻理解代码的能力。linux 内核源码无疑是最好的选择,不过当前 linux 内核版本为 6.3,代码量是相当庞大了,别说看完整个代码了,就算是看完一个子系统,都是不太现实的。…

PostgreSQL的安装与配置(Windows版本)

下载windows安装包 官网地址 安装 官网下载安装包 安装 测试 默认信息直接回车,最后密码输入设置的超级用户密码即可

【Python游戏】在这款程序员游戏新作《现代空战—战机游戏》里,你可以体验一把紧张的空战感觉、刺激鸭~打飞机游戏都能有那么多骚操作……

导语 不知道大家有没有幻想过遨游在广阔蓝天进行惊险的空战吗? 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 虽然这样的画面常常只会出现在电影之中,但小编今天给大家编写的一款…

【数据结构】顺序表和链表基本实现(含全代码)

文章目录 一、什么是线性表1. 什么是顺序表动态开辟空间和数组的问题解释LeetCode-exercise 2. 什么是链表2.1链表的分类2.2常用的链表结构及区别2.3无头单向非循环链表的实现2.4带头双向循环链表的实现2.5循序表和链表的区别LeetCode-exercise 3. 快慢指针LeetCode-exercise 一…

【牛客刷题专栏】0x24:JZ23 链表中环的入口结点(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录 前言问…

【GPT】文本生成任务(生成摘要、文本纠错、机器翻译等的模型微调)

note 文章目录 note一、NLG任务二、NLG之文本摘要2.1 基于mT5的文本摘要2.2 基于openai接口测试2.3 基于chatGPT接口 三、根据自己的数据集进行模型微调四、文本纠错任务五、机器翻译任务Reference 一、NLG任务 NLG:自然语言生成任务,很多NLP任务可以被…

Redis入门到入土(day02)

五大数据类型 官方文档 全段翻译: Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合&#…

vue项目 解决el-table自适应高度,vue页面不显示多条滚动条,超出的部分让el-table内部出现滚动条(推荐使用第二种解决方案)

一、需求 后台管理系统:最常见的页面都是由—>左侧菜单、头部tabView页签、主体数据渲染页面(AppMain);而一般AppMain页面又分为: 搜索区域、table数据(分页),可能也会存在底部&a…

Reid训练代码之数据集处理

本篇文章是对yolov5_reid这篇文章训练部分的详解。 该项目目录为: . |-- config # reid输入大小,数据集名称,损失函数等配置 |-- configs # 训练时期超参数定义 |-- data # 存储数据集和数据处理等代码,以及yolov5类别名称等 |--…

【高分论文密码】大尺度空间模拟预测与数字制图技术

大尺度空间模拟预测和数字制图技术和不确定性分析广泛应用于高分SCI论文之中,号称高分论文密码。 大尺度模拟技术可以从不同时空尺度阐明农业生态环境领域的内在机理和时空变化规律,又可以为复杂的机理过程模型大尺度模拟提供技术基础。 在本次&#x…

cocosLua 之 RichText(1)

结构 富文本主要通过RichText来实现, 其继承结构: #mermaid-svg-AHbMrHe3zp3q1wTZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AHbMrHe3zp3q1wTZ .error-icon{fill:#552222;}#mermaid-svg-AHbMrHe3z…

Linux下ds18b20驱动开发获取温度

文章目录 一、修改并且编译设备树(1)修改设备树(2)修改开发板设备树进行reboot 二、硬件连接三、驱动开发与测试(1)编写设备驱动(2)编写测试代码(3)Makefile&…

第四章——数学知识1

质数 质数&#xff1a;在大于1的整数中&#xff0c;如果只包含1和本身这俩个约束&#xff0c;就被叫质数或素数。 质数判定试除法 质数的判定——试除法&#xff1a;如果d能整除n&#xff0c;则n/d再除n&#xff0c;结果是一个整数。 d≤n/d。 bool is_prime(int x) {if (x <…

【大数据之Hadoop】二十、Yarn基础框架及工作机制

1、Yarn基础框架 Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。 YARN主要由ResourceManager、NodeManager、ApplicationMaster和…

202303-1 田地丈量

代码 #include<iostream> #include<vector> #include<string> #include<cmath> #include<algorithm> #include<stack> using namespace std; int n, a, b;int main() {cin >> n >> a >> b;int x1, y1, x2, y2;int x, y;…

科学计算NumPy之Ndarray数组对象的创建、切片、索引、修改等操作汇总

NumPy的操作汇总 NumPy概述Ndarray对象基本使用Ndarray的属性Ndarray的类型Ndarray的形状 创建数组创建数组创建全1数组创建全1数组从已有数组创建新数组从现有数组生成创建等差数列数组创建等比数列数组创建等间隔数列数组创建随机数数组创建正态分布创建创建均匀分布 数组切片…

【JUC高并发编程】—— 再见JUC

一、读写锁 读写锁概述 1️⃣ 什么是读写锁&#xff1f; 读写锁是一种多线程同步机制&#xff0c;用于在多线程环境中保护共享资源的访问 与互斥锁不同的是&#xff0c;读写锁允许多个线程同时读取共享资源&#xff0c;但在有线程请求写操作时&#xff0c;必须将其他读写锁…

windows10 ubuntu子系统安装perf工具

文章目录 1&#xff0c;ubuntu子系统中perf工具安装不了1.1&#xff0c;查看perf版本如下所示1.2&#xff0c;网上找不到对应的版本的内核源码&#xff0c;下载别的版本后&#xff0c;编译各种报错 2&#xff0c;百度查到说是WSL1不支持perf2.1&#xff0c;查看WSL版本 2.2&…