HTTP劫持:对HTTP数据包进行拦截处理,比如插入JS代码
- 比如你访问某些网站时,在右下角多了个莫名其妙的弹窗广告
==============================================================================
HTTP协议默认是采取明文传输的,因此会有很大的安全隐患
- 常见的提高安全性的方法是:对通信内容进行加密后,再进行传输
常见的加密方式
- 不可逆
单向散列函数:MD5、SHA等
- 可逆
对称加密:DES、3DES、AES等
非对称加密:RSA等
- 其它
混合密码系统
数字签名
证书
encrypt:加密
decrypt:解密
plaintext:明文
ciphertext:密文
为了便于学习,设计 4 个虚拟人物
-
Alice、Bob:互相通信
-
Eve:窃听者
-
Mallory:主动攻击者
如何防止被窃听?
单向散列函数,可以根据根据消息内容计算出散列值。
单向散列函数,也被称为
- 消息摘要函数(message digest function)
- 哈希函数(hash function)
输出的散列值,也被称
- 消息摘要(message digest)
- 指纹(fingerprint)
单向散列函数网站
MD5解密:https://www.cmd5.com/
散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。
单向散列函数特点
-
根据任意长度的消息,计算出固定长度的散列值
-
计算速度快,能快速计算出散列值
-
具备单向性
- 消息不同,散列值不同,具有雪崩效应
常见的几种单向散列函数
- MD4,MD5
产生128bit的散列值,MD就是Message Digest的缩写
- SHA-1
产生160bit的散列值
- SHA-2
SHA-256,SHA-384,SHA-512,散列值长度分别是256bit,384bit,512bit
- SHA-31
全新标准
如何防止数据被篡改?
- 一般情况下是这样做的
- 应用单向散列函数来防止数据被篡改
单向散列函数 - 防止数据被篡改的应用:
- 例如 RealVNC 下载界面
官方给处一串 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)
================================================================================================
在对称加密中,加密、解密时使用的是同一个密钥
常见的对称加密算法
-
DES
-
3DES
-
AES
-
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 的名字由来
由它的 3 位开发者,Ron Rivest、Adi Shamir、Leonard Adleman 的姓氏首字母组成
混合密码系统(Hybrid Cryptosystem) - 加密、解密
======================================================================================================
对称加密的缺点
- 不能很好地解决密钥配送问题(密钥会被窃听)
非对称加密的缺点
- 加密解密速度比较慢
混合密码系统:是将对称加密和非对称加密的优势相结合的方法
-
解决了非对称加密速度慢的问题
-
并通过非对称加密解决了对称加密的密钥配送问题
网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统
混合密码的加密
会话密钥 (session key)
-
为本次通信随机生成的临时密钥
-
作为对称加密的密钥,用于加密消息,提高速度
加密步骤(发送消息)
① 首先,消息发送者要拥有消息接收者的公钥
② 生成会话密钥,作为对称加密的密钥,加密消息
③ 用消息接收者的公钥,加密会话密钥
④ 将前 步生成的加密结果,一并发给消息接收者
发送出去的内容包括:
-
用会话密钥加密的消息(加密方法:对称加密)
-
用公钥加密的会话密钥(加密方法:非对称加密)
混合密码的解密
解密步骤(收到消息)
① 消息接收者用自己的私钥解密出会话密钥
② 再用第①步解密出来的会话密钥,解密消息
混合密码 - 加密解密流程
=======================================================================
想象以下场景:
问题来了: Bob 如何确定这段消息的真实性?如何识别篡改、伪装、否认?
- 解决方案:数字签名
在数字签名技术中,有以下 2 种行为
- 生成签名
由消息的发送者完成,通过“签名密钥”生成
- 验证签名
由消息的接收者完成,通过“验证密钥”验证
如何能保证这个签名是消息发送者自己签的?
- 用消息发送者的私钥进行签名
任何人都可以用消息发送者的公钥进行检验
数字签名的过程
如果有人篡改了消息内容或签名内容,会是什么结果?
- 签名验证失败,证明内容被篡改了
如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
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、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!