网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密(2)

本文详细介绍了单向散列函数、对称加密(如DES、3DES、AES)、非对称加密(如RSA)以及它们在防止数据篡改、密码加密、数字签名和混合密码系统中的应用。此外,文章还提到了学习黑客与网络安全的基本路径和技能要求。
摘要由CSDN通过智能技术生成

ciphertext:密文

为了便于学习,设计 4 个虚拟人物

  • AliceBob:互相通信

  • Eve:窃听者

  • Mallory:主动攻击者

在这里插入图片描述

在这里插入图片描述

如何防止被窃听?

在这里插入图片描述

单向散列函数(One-way hash function)


单向散列函数,可以根据根据消息内容计算出散列值。

单向散列函数,也被称为

  • 消息摘要函数(message digest function)
  • 哈希函数(hash function)

输出的散列值,也被称

  • 消息摘要(message digest)
  • 指纹(fingerprint)

单向散列函数网站

MD5加密:https://www.cmd5.com/hash.aspx

MD5解密:https://www.cmd5.com/

https://www.sojson.com/encrypt_des.html

https://tool.chinaz.com/tools/md5.aspx

散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。

在这里插入图片描述

单向散列函数特点

  • 根据任意长度的消息,计算出固定长度的散列值

  • 计算速度快,能快速计算出散列值

  • 具备单向性

在这里插入图片描述

  • 消息不同,散列值不同,具有雪崩效应

在这里插入图片描述

常见的几种单向散列函数

  • MD4MD5

产生128bit的散列值,MD就是Message Digest的缩写

  • SHA-1

产生160bit的散列值

  • SHA-2

SHA-256,SHA-384,SHA-512,散列值长度分别是256bit,384bit,512bit

  • SHA-31

全新标准

单向散列函数 - 防止数据被篡改


如何防止数据被篡改?

  • 一般情况下是这样做的

在这里插入图片描述

  • 应用单向散列函数来防止数据被篡改

在这里插入图片描述

单向散列函数 - 防止数据被篡改的应用:

官方给处一串 SHA-256,用于检验下载后的文件是否被篡改。

在这里插入图片描述

在这里插入图片描述

单向散列函数 - 密码加密


现在数据库不会直接存储密码明文,存储的都是加密过后的值。(所以现在的找回密码也无法看到原密码,只能重置成新密码)

在这里插入图片描述


如何加密解密?

在这里插入图片描述

  • 对称加密(对称密码)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124185700833.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_1,color_FFFFFF,t_70)
  • 非对称加密(公钥密码)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210124185828427.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_1,color_FFFFFF,t_70)

对称加密( Symmetric Cryptography)

================================================================================================

对称加密中,加密、解密时使用的是同一个密钥

在这里插入图片描述

常见的对称加密算法

  • DES

  • 3DES

  • AES

DES(Data Encryption Standard)


在这里插入图片描述

  • DES 是一种将 64bit 明文加密成 64bit 密文的对称加密算法,密钥长度是 56bit

  • 规格上来说,密钥长度是 64bit,但每隔 7bit 会设置一个用于错误检查的 ,因此密钥长度实质上是 56bit

  • 由于DES 每次只能加密 64bit 的数据,遇到比较大的数据,需要对 DES 加密进行迭代(反复)

  • 目前已经可以在短时间内被破解,所以不建议使用

3DES(Triple Data Encryption Algorithm)


3DES ,将 DES 重复 3 次所得到的一种密码算法,也叫做 3重DES

  • 三重DES 并不是进行三次 DES 加密(加密 → 加密 → 加密)

  • 而是 加密(Encryption) → 解密(Decryption) → 加密(Encryption) 的过程

目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题

在这里插入图片描述

由于3个密钥都是不同的,也称为 DES-EDE3

如果所有密钥都使用同一个,则结果与普通的 DES 是等价的

在这里插入图片描述

如果密钥1、密钥3相同,密钥2不同,称为 DES-EDE2

在这里插入图片描述

AES(Advanced Encryption Standard)


AES 取代 DES 成为新标准的一种对称加密算法,又称 Rijndeal加密法

AES 的密钥长度有 128、192、256bit 三种

目前 AES 已经逐步取代 DES、3DES ,成为首选的对称加密算法

一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用 AES

  • 它经过了全世界密码学家所进行的高品质验证工作

密钥配送问题(可以用非对称加密解决)


在使用对称加密时,一定会遇到密钥配送问题

如果 Alice 将使用对称加密过的消息发给了 Bob

  • 只有将密钥发送给 Bob,Bob 才能完成解密

  • 在发送密钥过程中

可能会被 Eve 窃取密钥

最后 Eve 也能完成解密

在这里插入图片描述

有以下几种解决密钥配送的方法

  • 事先共享密钥(比如私下共享)

  • 密钥分配中心(Key Distribution Center,简称 KDC)

  • Diffie-Hellman 密钥交换

  • 非对称加密

非对称加密(Asymmetric Cryptography)

=================================================================================================

非对称加密中,密钥分为加密密钥、解密密钥 2种,它们并不是同一个密钥

加密密钥:一般是公开的,因此该密钥称为公钥(public key)

  • 因此,非对称加密也被称为公钥密码(Public-key Cryptography)

解密密钥:由消息接收者自己保管的,不能公开,因此也称为私钥(private key)

在这里插入图片描述

公钥、私钥


公钥和私钥是一一对应的,不能单独生成

  • 一对公钥和私钥统称为密钥对(key pair)

由公钥加密的密文,必须使用与该公钥对应的私钥才能解密

由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

在这里插入图片描述

解决密钥配送问题


  • 由消息的接收者,生成一对公钥、私钥

  • 将公钥发给消息的发送者

  • 消息的发送者使用公钥加密消息

  • 为什么要用非对称加密解决密钥配送问题,而不是直接使用非对称加密传输消息呢?

非对称加密的加密解密速度比对称加密要慢,直接用来传输消息效率低

在这里插入图片描述

RSA


目前使用最广泛的非对称加密算法是 RSA

RSA 的名字由来

由它的 3 位开发者,Ron Rivest、Adi Shamir、Leonard Adleman 的姓氏首字母组成

混合密码系统(Hybrid Cryptosystem) - 加密、解密

======================================================================================================

对称加密的缺点

  • 不能很好地解决密钥配送问题(密钥会被窃听)

非对称加密的缺点

  • 加密解密速度比较慢

混合密码系统:是将对称加密非对称加密的优势相结合的方法

  • 解决了非对称加密速度慢的问题

  • 并通过非对称加密解决了对称加密的密钥配送问题

网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统


混合密码的加密

会话密钥 (session key)

  • 为本次通信随机生成的临时密钥

  • 作为对称加密的密钥,用于加密消息,提高速度

加密步骤(发送消息)

① 首先,消息发送者要拥有消息接收者的公钥

② 生成会话密钥,作为对称加密的密钥,加密消息

③ 用消息接收者的公钥,加密会话密钥

④ 将前 步生成的加密结果,一并发给消息接收者

发送出去的内容包括:

  • 用会话密钥加密的消息(加密方法:对称加密

  • 用公钥加密的会话密钥(加密方法:非对称加密

在这里插入图片描述


混合密码的解密

解密步骤(收到消息)

① 消息接收者用自己的私钥解密出会话密钥

② 再用第①步解密出来的会话密钥,解密消息

在这里插入图片描述


混合密码 - 加密解密流程

在这里插入图片描述

数字签名

=======================================================================

想象以下场景:

在这里插入图片描述

问题来了: Bob 如何确定这段消息的真实性?如何识别篡改伪装否认

  • 解决方案:数字签名

在数字签名技术中,有以下 2 种行为

  • 生成签名

由消息的发送者完成,通过“签名密钥”生成

  • 验证签名

由消息的接收者完成,通过“验证密钥”验证

如何能保证这个签名是消息发送者自己签的?

  • 消息发送者的私钥进行签名

任何人都可以用消息发送者的公钥进行检验


数字签名的过程

在这里插入图片描述

在这里插入图片描述


如果有人篡改了消息内容或签名内容,会是什么结果?

  • 签名验证失败,证明内容被篡改了

数字签名不能保证机密性?

  • 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改

数字签名的作用

  • 确认消息的完整性

  • 识别消息是否被篡改

  • 防止消息发送人否认

非对称加密 - 公钥、私钥总结

==================================================================================

在这里插入图片描述

数字签名,其实就是将非对称加密反过来使用

在这里插入图片描述

既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密

  • 公钥负责加密,私钥负责解密

既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名

  • 私钥负责签名,公钥负责验签

证书(Certificate)

==================================================================================

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值