密码的世界

news2024/9/23 21:26:36

网络世界中常见的攻击方法

窃听攻击

窃听攻击是网络世界最常见的一种攻击方式,一些不能泄露的隐私信息,例如银行卡密码,账号密码,如果被窃听泄露的话通常会带来比较严重的后果。
在这里插入图片描述

中间人攻击

在中间人攻击中,小明准备向小红告白,准备发送一条告白信息,”我喜欢你“,小芳也喜欢小明,这个时候小芳发起中间人攻击,小芳假扮成小红,给小明回复了一条”我不喜欢你“的消息,同时,小芳又假扮成小明,对小红发送了一条”我不喜欢你“的消息,就这样,小芳就成功的破坏了小明跟小红之间的通信。
在这里插入图片描述

针对常见攻击的解决手段

加密

通常,针对窃听攻击,采用加密的方式就可以防止窃听攻击。

在这里插入图片描述

加密方法的分类

加密根据密钥的性质可以分为两类:对称加密非对称加密
对称加密:加密解密采用同一把密钥。
非对称加密:密钥分为公钥,私钥。公钥加密的数据必须采用私钥解密,私钥加密的数据必须适用公钥解密。

我们先来说说对称加密,假设现在在窃听攻击中我们采用对称加密的方式来加密消息,那我们就碰到了一个非常棘手的问题:密钥配送问题。如何安全的将密钥交到通信者的手中?如果直接将密钥发送给对方的话,那窃听者也就能拿到密钥,拿到密钥后就能顺利的解密密文。消息中的内容还是泄露了。通常,解决密钥配送问题有以下几种方法。

  • 通过事先共享密钥
  • 通过KDC(key distribution center 密钥分发中心)来解决
  • 通过 Diffie-Hellman 密钥交换来解决
  • 通过非对称加密解决

事先共享密钥:局限性比较大,如果通信双方是认识的、且距离比较近,那么就可以直接把密钥告诉他,但是网络世界中的通信觉大部分都是不安全的、不认识的,你无法事先将密钥跟你需要通信的对象共享。

KDC:密钥分发中心,密钥的管理全部交由KDC负责。但一般通信中可能是没有KDC这个角色的,只有发送者接受者。

DH密钥交换算法:可以通过交换一些信息各自生成密钥,同时这些信息被窃听后,窃听者是无法推算出密钥的。

非对称加密:接收者可以事先本地生成公钥、私钥,通信时将公钥发送给发送者,发送者采用公钥对需要发送的信息加密,这样的话,只有拥有私钥的接收者才能解密,就算是公钥跟密文被窃听,窃听者也无法从公钥中推算出私钥去解密。

非对称加密的问题

非对称加密既然可以解决密码配送问题,那是不是加密通信使用的都是非对称加密呢?其实不是,非对称加密的数学特性导致非对称加密的效率只有对称加密的几百分之一,所以在实际的应用中,都是采用对称加密与非对称加密的组合。具体流程如下:
在这里插入图片描述
采用非对称密钥的公钥加密作为会话密钥的对称密钥,保证会话密钥的安全,同时保证了通信效率。那事情到此是不是就结束了呢?不,上面的通信方式只阻止了窃听攻击,并不能阻止中间人攻击。下面我们来看一看在中间人攻击中上述方式是如何失效的。

针对混合加密系统的中间人攻击

在这里插入图片描述

如上图所示,中间人将通信双方的公钥替换了,导致通信过程中的加密数据完全被破解。那这里存在的是什么问题呢?

认证

什么是认证呢?认证就是证明我就是我(是不是很哲学)。认证的方式有很多,例如:

  • 登录网站时使用的账号密码,你拥有了密码,就能证明你是这个账号的主人,你就你了。
  • 收到冒充亲人的诈骗对话时,询问对方一些只有亲人才知道的秘密问题,也可以证明对方的身份。

网络世界中如何认证呢

在上面的中间人攻击中,只要小明能够确认他收到的公钥的确是小红的公钥,而不是其他人的公钥,那么小明跟小红的通信就是安全的了。那么在小明小红不认识的情况下,该如何证明呢?找第三方的权威机构证明,就如同担保人一样。你可以信任担保人,那么担保人担保的这个人就可以信任。这其实就是信任的转移。A信任B,B信任C,那么A就可以信任C,这就是网络世界的信任机制。证书就是担保人签发的担保信,有了这个担保信,就能证明我是可信的。

数字签名

在聊证书之前,我们先来聊一聊数字签名。什么是数字签名呢?数字签名是现实生活中签名在数字世界中的应用。那么签名有什么特征呢?在看到签名之后,就能证明签名的有效性,因为笔记是无法模仿的,模仿的再逼真,在笔迹鉴定下也会有破绽的。那么担保信上的担保人的签名就代表着担保人的证明。网络世界中这个担保人就是证书颁发机构(CA, Certificate Authority)来承担。

非对称密钥的另一个用法

在上面的通信中,发送者使用接收者的公钥加密数据,然后接收者使用自己的私钥解密数据,保证数据的安全。数字签名是非对称加密的另一个用法。发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的。这样就相当于发送者对这个报文进行了签名操作,证明了这个报文的确是发送方发送的。

证书

证书实际上就是由CA使用了自己私钥经过数字签名过的本人的公钥。由CA保证了这个公钥就是我的。我们从华为的官网上导出华为的证书看看是什么样的。通过点击网址前面的小锁就可以到处对应网站的证书。
在这里插入图片描述
导出的证书格式为.crt,直接用cat查看,内容如下,是一串看不出意义的数字+字母。
在这里插入图片描述
我们使用 openssl 命令查看证书的内容看看,使用以下命令:openssl x509 -in zhengshu.crt -noout -text
在这里插入图片描述
在这里插入图片描述

证书是如何起到作用的

我们先来说说一种特别的证书,自签名证书。大家想一想,一般的证书是的格式是公钥 + CA私钥的数字签名。那CA的证书呢,CA的证书也是由CA的公钥 + 数字签名组成,那CA是由谁去签名呢?答案就是自己。CA的证书里包含自己的公钥 + 私钥的数字签名,CA的权威性由自己保证。一般的浏览器中都会预先存放好知名的CA机构的证书。

我们来看一看我们在访问华为官网的时候发生了什么?

浏览器 华为官网服务器 你好,我要访问你了 你好,这是我的证书 先读取证书,查看证书的签发者, 然后根据签发者信息找到对应签发 者的自签名证书,使用自签名证书 中的CA的公钥来对华为证书中的数字 签名做验证,查看此证书是否是真的是对应的CA签发 你的证书校验通过,我们开始通信吧 浏览器 华为官网服务器

以上就是浏览器对华为证书单向认证的过程,有些场景下,服务器也要对客户端的合法身份进行认证,这时候就需要双向认证了。当然上图是一个简单的示意图,我们下面来看看TLS协议中是如何实现的。
在这里插入图片描述
在这里插入图片描述
关于密码的知识就今天就介绍到这了,本文中还有不少知识点没有细说,只是说了个大概,了解以下全貌,感兴趣的可以看下图解密码技术,非常生动形象的讲述了密码世界的各种知识。

参考书目:图解密码技术

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

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

相关文章

九龙证券|突然哑火!最火爆中小盘明显回调,后市咋走?机构最新解读

中证1000和国证2000指数创年内新高后,连续2日回调。 2月17日A股商场震动下行,创业板指数跌幅超2%,近3000只个股跌落,北向资金小幅净流入,商场成交额接近万亿关口,港股也出现显着回调痕迹。 以中小市值公司…

XSS基础——xsslabs通关挑战

目录XSS基础一、XSS基础概念1、XSS基础概念2、XSS分类二、xsslabs通关挑战level 1level 2level 3htmlspecialchars函数html事件属性level 4level 5level 6level 7level 8深入理解浏览器解析机制和XSS向量编码level 9level 10level 11level 12level 13三、总结XSS基础 一、XSS基…

算法刷刷刷| 二叉树篇| 110平衡二叉树| 257二叉树的所有路径 |404左叶子之和| 513找树左下角的值| 112路径总和| 113路径总和II

110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 class Solution {public boolean isBalanced(TreeNode root) {int dfs…

【前端】Vue3+Vant4项目:旅游App-项目总结与预览(已开源)

文章目录项目预览首页Home日历:日期选择开始搜索位置选择上搜索框热门精选-房屋详情1热门精选-房屋详情2其他页面项目笔记项目代码项目数据项目预览 启动项目: npm run dev在浏览器中F12: 首页Home 热门精选滑动到底部后会自动加载新数据&a…

【factoryio】使用SCL编写 <机械手控制> 程序

使用虚拟工厂软件和博图联合仿真来编写【scl】机械手控制程序 文章目录 目录 文章目录 前言 二、程序编写 1.机械手运行部分 2.启动停止部分 3.急停复位部分 三、完整代码 总结 前言 在前面我们一起写过了许多案例控制的编写,在这一章我们一起来编写一下一个…

Vue中 引入使用 babel-polyfill 兼容低版本浏览器

注意:本文主要介绍的 vue-cli 版本:3.x, 4.x; 最近在项目中使用 webpack 打包后升级,用户反馈使用浏览器(chrome 45)访问白屏。经过排查发现:由于 chrome 45 无法兼容 ES6 语法导致的…

linux018之安装mysql

linux上安装mysql: 第一步:查看是否已经安装mariadb,mariadb是mysql数据库的分支,mariadb和mysql一起安装会有冲突,所以需要卸载掉。 yum list installed | grep mariadb :查看是否安装mariadb,…

「可信计算」论文初步解读

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

数据结构与算法

1、复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。(1)为什么需要复杂度分析&…

Github 学生优惠包 -- 最新防踩坑指南

Github学生优惠包的申请最近越来越麻烦,里面有非常多的坑,留下此文防止各位申请的时候踩到。 此文面向中国大陆真正有学生身份的同学!!! 文章目录前言1.用到的网址2.申请所需3.详细步骤4.踩坑点前言 记得在一年以前还…

进程的概念

进程的概念 程序的概念 这里说的是一个可执行文件,passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。 双击后,程序入口地址读入寄存器,程序加载入主存,成为一个进程 进程是主动去获取想要的资源&#xff0…

图解LeetCode——剑指 Offer 10- II. 青蛙跳台阶问题

一、题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007),如计算初始结果为:1000000008,请返回 1。 二、示例 2.1>…

inno setup打包软件学习

目录 一 打包结果 二 示例打包脚本 三 错误解决 3.1 另一个程序正在使用此文件,进程无法访问 3.2 桌面图标无法修改 四 参考资料 一 打包结果 测试程序来自: 泽森科工 (zenustech.com) 二 示例打包脚本 使用打包软件下载地址: in…

[U3D ShaderGraph] 全面学习ShaderGraph节点 | 第四课 | Input/Lighting

📣📣📣本专栏所有内容在完结之前全部为试读模式,专栏完结之后会取消试读模式,如果感觉内容还不错的话请支持一下📣📣📣 ShaderGraph是可视化的着色器编辑工具。您可以使用此工具以可视方式创建着色器。 本专栏可以让你更了解ShaderGraph中每个节点的功能,更自如的…

BUUCTF Reverse xor

题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定flag正确 找global 在strings window直…

【Java】《Java8 实战》 CompletableFuture 学习

文章目录前言1. 并发(Concurrent) 和 并行(Parallel)1.1 并发的来源1.2 并发技术解决了什么问题2. 并行的来源2.1 并行解决了什么问题3. CompletableFuture 简介4. CompletableFuture 简单应用5. CompletableFuture 工厂方法的应用6. CompletableFuture join() 方法7. 使用 Par…

2022黑马Redis跟学笔记.实战篇(七)

2022黑马Redis跟学笔记.实战篇 七4.11.附近的店铺功能4.11.1. GEO数据结构的基本用法1. 附近商户-导入店铺数据到GEO4.11.2. 获取附近的店铺1. 附近商户-实现附近商户功能4.9. 签到功能4.9.1.BitMap原理1. 用户签到-BitMap功能演示4.9.2.实现签到功能4.9.3.实现补签功能4.9.4.统…

.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)

文章目录思路客户端权限清单(AndroidManifest.xml)权限列表(完整内容看 权限清单(AndroidManifest.xml))打开外部应用的权限(完整内容看 权限清单(AndroidManifest.xml))添加文件如下…

网络数据包接收流程

1. 网络数据包接收流程简述 典型的以太网卡网络包接收流程如下: 1.网络包通过物理介质传到接收端的phy芯片; 2.phy芯片通过RGMII协议传到MAC芯片rx queue fifo中; 3.MAC芯片通过专用DMA将网络包搬运到网卡驱动程序预先分配好的rx ringbuffer中…

【多线程与高并发】- synchronized锁的认知

synchronized锁的认知 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 一个有梦有戏的人 怒放吧德德 🌝分享学习心得,欢迎指正&#xf…