当前位置: 首页 > news >正文

什么叫个非对称加密?中间人攻击?数字签名?

非对称加密也称为公钥密码。就是用公钥来进行加密,撒子意思?

非对称加密

在对称加密中,我们只需要一个密钥,通信双方同时持有。而非对称加密需要4个密钥,来完成完整的双方通信。通信双方各自准备一对公钥和私钥。其中公钥是公开的,由信息接受方提供给信息发送方。公钥用来对信息加密。私钥由信息接受方保留,用来解密。

举一个简单的例子说明一下非对称加密:

我们有熊大 熊二两只熊,

熊大有自己的私钥 mmPrivateKey,和公钥mmPublicKey,熊二有自己的私钥 xxPrivateKey,和公钥xxPublicKey

熊大将自己的公钥mmPublicKey发给熊二,熊二将自己的公钥xxPublicKey发给熊大

熊二给熊大说“光头强又来砍树了”,这句话用了熊大的公钥mmPublicKey进行了加密,并且发送给熊大,这样熊大就能用自己的私钥 mmPrivateKey去解密,拿到信息,这一顿操作光头强因为没有熊大的私钥,即使截取了信息也无法打开。

熊大收到信息之后,说“我们去抓他”用熊二的公钥去加密,发给熊二,熊二收到之后用自己的私钥xxPrivateKey去解密拿到信息。

以上过程是一次完整的request和response。通过这个例子我们梳理出一次信息传输的非对称加、解密过程:

1、消息接收方准备好公钥和私钥

2、私钥 接收方自己留存、公钥发布给消息的发送方

3、消息的发送方使用接收方公钥对消息进行加密

4、消息的接收方用自己的私钥对消息解密

公钥只能用做数据加密。公钥加密的数据,只能用对应的私钥才能解密。这是非对称加密的核心概念

中间人攻击

中间人攻击指的是在通信双方的通道上,混入攻击者。他对接收方伪装成发送者,对发送方伪装成接收者。

他监听到双方发送公钥时,偷偷将消息篡改,发送自己的公钥给双方。然后自己则保存下来双方的公钥。

如此操作后,双方加密使用的都是攻击者的公钥,那么后面所有的通信,攻击者都可以在拦截后进行解密,并且篡改信息内容再用接收方公钥加密。而接收方拿到的将会是篡改后的信息。实际上,发送和接收方都是在和中间人通信。

拿上面的例子来说,如果光头强想要知道熊大熊二之间的通信消息,那么在熊大将自己的公钥以明文方式发给熊二的时候,光头强劫持到这个mmPublicKey,然后把自己的公钥B发送给熊二(熊二不知道被劫持了,以为B就是熊大的公钥),然后熊二把自己的公钥xxPublicKey发给熊大,说咱们来进行后面的通信,可惜这个公钥也被光头强劫持了,(光头强把自己的公钥B又发给熊大),熊大收到后同样以为B也是熊二的公钥,至此熊大熊二之间的信息通信都用光头强的公钥B进行加密,光头强就可以用自己的私钥进行解密拿到信息。

当然中间人一般并不是就把信息拿到之后就不给了,而是处于一个监听偷听偷换的状态,所以举一个更恰当的例子说明一下:

1、某网站服务器拥有用于非对称加密的公钥A、私钥A’。
2、浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。
3、中间人劫持到公钥A,并保存下来,把数据包中的公钥A替换成自己伪造的公钥B(它当然也拥有公钥B对应的私钥B’)。然后发给浏览器。
4、浏览器拿到之后,随机生成一个用于对称加密的密钥X,用公钥B(浏览器不知道公钥被替换了)加密后传给服务器。
5、中间人劫持后用私钥B’解密得到密钥X,再用公钥A加密后传给服务器。
6、服务器拿到后用私钥A’解密得到密钥X。

这样中间人就获取了两个用来加密通信的对称秘钥X,且双方也不知道。

那么如何证明浏览器收到的公钥一定是该网站的公钥? 防范中间人需要用到数字签名

数字签名

网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站”。然而这里又有一个显而易见的问题了,证书本身的传输过程中,如何防止被篡改?即如何证明证书本身的真实性?

我们把证书内容生成一份“签名”,比对证书内容和签名是否一致就能察觉是否被篡改。这种技术就叫数字签名

明文信息 ——》 进行hash(SHA1/md5) ——》 得到摘要(Digest) ——》 使用A私钥对摘要(Digest) 加密 ——》 明文 和 数字签名 组成 签名结果---》发送过去


对方收到之后

用A公钥对摘要进行解密---》》拿到摘要---》再对发来的明文进行hash得到摘要--》两份摘要进行比对--》就能发现发来的文件有没有被篡改
 

这一切的前提是对方能有A公钥,但如果通过一些手段对方拿到的不是A公钥,且对方还不知道,比如拿到了B公钥,那么骗子就能用自己的B私钥进行一系列签名活动,对方拿B公钥解密之后就拿到了假信息
 

非对称加密技术的加解密和签名的过程中发送方用哪个密钥进行加
密和签名,接收方用哪个密钥进行解密和验证签名?

加密使用接收方的公钥,签名使用发送方的私钥;接收方解密用接
收方的私钥,验证签名使用发送方的公钥。使用接收方的公钥加密
只有接收方可以解密,使用发送方的私钥签名,该签名只能由发送方施加;

那么怎么确定自己手头的公钥是真的呢?这就需要第三方的帮忙确认了

数字证书

网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站”。

我们申请证书,证书里存的就是对方所需要的发送者的公钥,以及发送者的信息,既然花钱申请了证书,那么机构就会用自己的私钥把证书加密,然后把对应的机构公钥给你,你拿到之后,用机构的公钥打开证书,拿到里面的发送者信息,以及发送者的公钥,这样确保拿到的公钥的的确确是正确的了。

说白了正常我们验证数据对不对,用了数字签名,但前提保证我们手里的钥匙得是对的,所以为了保证钥匙是对的,我们在发数据之前先对钥匙进行一次权威的数字签名,也就是所谓的申请数字证书,确保拿到钥匙是对的。其实就是个签名套签名

数字证书验证过程(和数字签名验证一样,只不过是签名套签名)
拿到证书,得到明文T,数字签名S。
用CA机构的公钥对S解密,得到S’。(由于是浏览器信任的机构,浏览器保有它的公钥,操作系统、浏览器本身会预装一些它们信任的根证书,如果其中有该CA机构的根证书,那就可以拿到它对应的可信公钥)
用证书里说明的hash算法对明文T进行hash得到T’。
比较S’是否等于T’,等于则表明证书可信。
 

相关文章:

什么叫个非对称加密?中间人攻击?数字签名?

非对称加密也称为公钥密码。就是用公钥来进行加密,撒子意思? 非对称加密 在对称加密中,我们只需要一个密钥,通信双方同时持有。而非对称加密需要4个密钥,来完成完整的双方通信。通信双方各自准备一对公钥和私钥。其中…...

2023.03.07 小记与展望

碎碎念系列全新改版! 以后就叫小记和展望系列 最近事情比较多,写篇博客梳理一下自己3月到5月下旬的一个规划 一、关于毕设 毕设马上开题答辩了,准备再重新修改一下开题报告,梳理各阶段目标。 毕设是在去年的大学生创新训练项目…...

MyBatis源码分析(七)MyBatis与Spring的整合原理与源码分析

文章目录写在前面一、SqlSessionFactoryBean配置SqlSessionFactory1、初识SqlSessionFactoryBean2、实现ApplicationListener3、实现InitializingBean接口4、实现FactoryBean接口5、构建SqlSessionFactory二、SqlSessionTemplate1、初始SqlSessionTemplate2、SqlSessionTemplat…...

基于声网 Flutter SDK 实现多人视频通话

前言 本文是由声网社区的开发者“小猿”撰写的Flutter基础教程系列中的第一篇。本文除了讲述实现多人视频通话的过程,还有一些 Flutter 开发方面的知识点。该系列将基于声网 Fluttter SDK 实现视频通话、互动直播,并尝试虚拟背景等更多功能的实现。 如果…...

IT服务管理(ITSM) 中的大数据

当我们谈论IT服务管理(ITSM)领域的大数据时,我们谈论的是关于两件不同的事情: IT 为业务提供的大数据工具/服务 - 对业务运营数据进行数字处理。IT 运营中的大数据 – 处理和利用复杂的 IT 运营数据。 面向业务运营的大数据服务…...

Validator校验之ValidatorUtils

注意:hibernate-validator 与 持久层框架 hibernate 没有什么关系,hibernate-validator 是 hibernate 组织下的一个开源项目 。 hibernate-validator 是 JSR 380(Bean Validation 2.0)、JSR 303(Bean Validation 1.0&…...

C++---背包模型---采药(每日一道算法2023.3.7)

注意事项: 本题是"动态规划—01背包"的扩展题,dp和优化思路不多赘述。 题目: 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。 为此,他想拜附近最有威望的医师为师。 医师为了判断他的资质&…...

Java各种锁

目录 一、读写锁(ReentrantReadWriteLock) 二、非公平锁(synchronized/ReentrantLock) 三、可重入锁/递归锁(synchronized/ReentrantLock) 四、自旋锁(spinlock) 五、乐观锁/悲观锁 六、死锁 1、死锁代码 2、死锁的检测(jps -l 与 jstack 进程号) 七、sychronized-wait…...

TryHackMe-Tardigrade(应急响应)

Tardigrade 您能否在此 Linux 端点中找到所有基本的持久性机制? 服务器已遭到入侵,安全团队已决定隔离计算机,直到对其进行彻底清理。事件响应团队的初步检查显示,有五个不同的后门。你的工作是在发出信号以使服务器恢复生产之前…...

导出GIS | 将EXCEL表格中坐标导出成GIS格式文件

一 前言 EXCEL是我们日常工作学习数据处理的办公软件,操作易上手,几乎人人都会用。EXCEL表格能够处理各种数据,包括经纬度坐标数据,地址数据等等。 有时因工作需要需将表格中地址数据处理为GIS格式的文件,以便能够将数…...

new set数组对象去重失败

我们知道Set是JS的一个种新的数据结构,和数组类似,和数组不同的是它可以去重,比如存入两个1或两个"123",只有1条数据会存入成功,但有个特殊情况,如果添加到set的值是引用类型,比如数组…...

Acwing: 一道关于线段树的好题(有助于全面理解线段树)

题目链接🔗:2643. 序列操作 - AcWing题库 前驱知识:需要理解线段树的结构和程序基本框架、以及懒标记的操作。 题目描述 题目分析 对区间在线进行修改和查询,一般就是用线段树来解决,观察到题目一共有五个操作&…...

DD-1/40 10-40mA型【接地继电器】

系列型号: DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器,用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、母…...

【女神节】简单使用C/C++和Python嵌套for循环生成一个小爱心

目录 前言实现分析代码实现代码如下效果如下优化效果代码如下效果如下总结尾叙前言 女神节马上到了,有女朋友的小伙伴是不是已经精心准好礼物了呢!对于已婚男士,是不是整愁今天又该送什么礼物呢!说真的,我也整愁着,有什么要推荐么,评论留言下! 实现分析 可以先在纸上或…...

Biome-BGC生态系统模型与Python融合技术实践应用

查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xf…...

ESP32 GPIO使用

ESP32 GPIO使用 #define GPIO_OUT_PIN 2 //定义引脚号 #define GPIO_OUTPUT_PIN_SEL (1<<GPIO_OUT_PIN) //定义输出引脚的宏&#xff0c;用来将输出引脚号转换为位掩码void bsp_gpio_init(){gpio_config_t io_conf;io_conf.pin_bit_mask GPIO_OUTPUT_PIN_SE…...

JavaScript 高级4 :正则表达式

JavaScript 高级4 &#xff1a;正则表达式 Date: January 19, 2023 Text: 正则表达式、正则表达式特殊字符、正则表达式中的替换 目标&#xff1a; 能够说出正则表达式的作用 能够写出简单的正则表达式 能够使用正则表达式对表单进行验证 能够使用正则表达式替换内容 正则…...

如何让AI帮你干活-娱乐(3)

背景今天的话题会偏代码技巧一些&#xff0c;对于以前没有接触过代码的朋友或者接触代码开发经验较少的朋友会有些吃力。上篇文章介绍了如何广视角的生成相对稳定的视频。昨天的实现相对简单&#xff0c;主要用的是UI界面来做生成。但是生成的效果其实也显而易见&#xff0c;不…...

webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决

分析一段appium的日志来分析webview的工作原理&#xff0c;文章尾部附有自动化脚本及完整日志&#xff1a; 解析&#xff1a; 获取上下文列表 服务端发送命令adb shell cat /proc/net/unix获取域套接字列表。那什么是域套接字呢&#xff1f; 域套接字&#xff1a;是unix系统里…...

BFD协议原理

BFD协议原理引入背景不使用BFD带来的问题OSPF感知慢VRRP产生次优路径BFD技术简介BFD会话建立方式和检测机制BFD会话建立过程BFD工作流程BFD的单臂回声BFD默认参数以及调整方法总结引入背景 随着网络应用的广泛部署&#xff0c;网络发生中断可能影响业务正常运行并造成重大损失…...

你把骑行当什么? 它就是你需要的

1.骑行是一种有活力的运动&#xff0c;尝试一下你一定会喜欢上它的&#xff01;2.把骑行当作一种娱乐&#xff0c;让自己快乐地体验自然的美&#xff01;3.骑行可以帮助你改变心态&#xff0c;让你的心情变得更加愉悦&#xff01;4.让骑行成为你每天的计划&#xff0c;看看骑行…...

python基础系列 —— 迭代器与内置高阶函数

目录 一、迭代器 1、基本概念 2、如何定义一个迭代器 3、如果判断对象是否是迭代器 4、如何重置迭代器 5、如何调用迭代器 二、高阶函数 1、map函数 2、filter函数 3、reduce函数 4、sorted函数 一、迭代器 1、基本概念 迭代&#xff1a;是一个重复的过程,每次重复…...

MySQL面试题-日志

目录 1.MySQL 中常见的日志有哪些&#xff1f; 2.慢查询日志有什么用&#xff1f; 3.binlog 主要记录了什么&#xff1f; 4.Mysql的binlog有几种录入格式&#xff1f;分别有什么区别&#xff1f; 5.redo log 如何保证事务的持久性&#xff1f; 6.页修改之后为什么不直接刷…...

Android 10.0 去掉Launcher3默认给 icon增加的APK图标白边

1.概述 在10.0的系统产品开发中,Launcher3定制化开发中,发现在给第三方app的icon绘制图标的时候,会有白边第三方app的图标没有完全绘制出来,而系统app不存在这个问题,是完全绘制出来的,所以需要分析图标绘制类来解决这个问题 2.去掉Launcher3默认给 icon增加的APK图标白…...

E900V21C(S905L-armbian)安装armbian-Ubuntu(WiFi)

基本上是s905L芯片的刷机都是如此&#xff0c;包括Q7等 在网上寻找好多的教程关于e900v21c的刷机包和教程都少的可怜&#xff0c;唯一的就是这个&#xff1a;山东联通版创维E900V21C盒子刷入Armbiam并安装宝塔和Docker&#xff0c;但他是不能用WiFi和蓝牙的然后就是寻找s90l的…...

tpc协议的3次握手和4次挥手

建立连接的3次握手过程&#xff1a; A: 我想和你建立连接&#xff0c;你收到我的请求吗&#xff1f;(我想娶你) B: 好的&#xff0c;我收到了你的请求&#xff0c;我们可以建立连接&#xff0c;我同意。(好的,我愿意嫁给你) A: 好的&#xff0c;我收到了你的回应&#xff0c;我…...

YOLOv5害虫识别项目代码打包完整上传Gitee仓库(已开源)以及git上传速率限制踩坑记录

YOLOv5害虫识别项目代码打包完整上传Gitee仓库&#xff08;已开源&#xff09;以及git上传速率限制踩坑记录 ps: ​ 最近很多小伙伴需要这个害虫识别项目的源码&#xff0c;由于文件过大&#xff0c;所以将代码完整上传至gitee&#xff0c;所有文件、教程、论文、以及代码模型…...

从零开始学习c语言|21、动态内存管理

一、malloc函数 1、什么是malloc函数 malloc是memery(内存)和allocate(分配)的缩写&#xff0c;顾名思义&#xff0c;malloc函数为动态分配内存的意思 2、malloc函数语句 int *p(int *)malloc(sizeof(int))malloc函数的形参为申请的内存空间大小&#xff0c;上述申请了一个i…...

swagger关闭/v2/api-docs仍然可以访问漏洞

今天接到安全团队的说swagger有未授权访问漏洞&#xff0c;即使在swagger关闭的情况下http://127.0.0.1:8086/agcloud/v2/api-docs?group%E7%94%A8%E6%88%B7%E5%85%B3%E8%81%94%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97仍然还能访问。 看了下原来是有写一个拦截器 registry.addI…...

k8s pod调度总结

在Kubernetes平台上&#xff0c;我们很少会直接创建一个Pod&#xff0c;在大多数情况下会通过控制器完成对一组Pod副本的创建、调度 及全生命周期的自动控制任务&#xff0c;如&#xff1a;RC、Deployment、DaemonSet、Job 等。本文主要举例常见的Pod调度。1全自动调度功能&…...

b2b平台爱采购/seo视频

1.计算机不能直接理解高级语言&#xff0c;只能理解机器语言&#xff0c;所以必须要把高级语言翻译成机器语言&#xff0c;计算机才能执行高级语言编写的程序。&#xff08;计算机只能执行机器语言&#xff1a;我们要执行高级语言编的代码&#xff0c;就只能用编译器把它变成机…...

手机网站Com/最近新闻头条

C语言第8讲-结构体n课件第八讲-结构体与共用体;结构体与共用体;一、结 构 体;如&#xff1a; struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };;(2) 定义结构类型的同时定义结构变量;定义的一般形式:;(1) 类型与变量是不同的概念 …...

二维码表白在线制作/首页关键词优化价格

公司要做一个项目的demo&#xff0c;要求地图上可以插红旗&#xff0c;所以就用到了Raphael。 因为是个demo&#xff0c;所以地图就用了一张图片&#xff0c;效果如下&#xff1a; 所以为了更好的封装一下这个功能&#xff0c;就写了一个简单的插件&#xff1a;jquery-pointpai…...

网站百科推广怎么做/关键词推广优化排名品牌

Java常见问题分析 一、JVM简介1.JVM内存模型 实际占用内存大小&#xff1a;-XX:MaxPermSize -Xmx -Xss -XX:MaxDirectMemorySize 如图一&#xff1a; 主要分为&#xff1a;非堆内存堆内存栈内存堆外内存 JVM主要管理两种类型的内存&#xff1a;堆和非堆。简单来说堆就是Ja…...

wordpress可视化编辑器插件/seo软件优化

和平精英巡查员等级由什么决定&#xff1f;在经由申请并顺利通过成为巡查团中的一员之后玩家将可以义务地参与进视频巡查工作中&#xff0c;而巡查的贡献和表现将会影响玩家巡查员等级的评级&#xff0c;如果无法确保足够的活跃度和准确率不仅拿不到专属奖励而且还有可能被降级…...

保定网站建设价格/旺道seo系统

Visual Studio.Net 打开一个工程的时候&#xff0c;有时候子项目很多&#xff0c;而且你有不是很熟悉这个项目。 然后你查找某个关键字&#xff0c;打开一个文件&#xff0c;你需要知道它在Solution Explorer中属于哪里&#xff0c;也就是高亮这个文件节点&#xff0c; 你应该怎…...