信安读书笔记08-消息认证_Hash函数_MD5

前言:

首先的明白消息认证是干什么用的,消息认证是为了验证接收到的消息是否被修改且是信任一防发送过来的。可以防止有人进行主动攻击修改数据内容,而接收方不知道的情况。

1、消息加密认证

其主要就是为了验证消息是否被被修改,那怎么验证呢?常用的方法是使用消息认证码(MAC)。将消息(msg)进行摘要处理得到结果MAC\=CK1(msg)MAC=C_{K1}(msg)MAC\=CK1​(msg)。然后和明文(M)拼接到一起,在加密函数 E 和秘钥 K2 进的作用下得到加密结果C\=EK2(msg+mac)C=E_{K2}(msg+mac)C\=EK2​(msg+mac),发送给对方。

对方收到密文 C 后,先使用解密函数 D 和秘钥 K1 进行解密得到明文MAC+M\=DK2(C)MAC+M=D_{K2}(C)MAC+M\=DK2​(C),然后使用摘要算法函数和秘钥 K1 对明文 M 进行加密得到结果 MAC2\=CK1(M)MAC2=C_{K1}(M)MAC2\=CK1​(M),若MAC2\=MAC MAC2=MACMAC2\=MAC则说明消息正常,是受信任的一方发送来的,如果不相等就舍弃这个结果。

2、Hash 函数

又称为散列函数,其强大之处在于能够把不定长的数据转成定长字符串,Hash函数单向函数,结果不可逆转。公式h\=H(M)h=H(M)h\=H(M),hash 值 h 一般是128位或者160位。

哈希函数主要配合数字签名里面做消息的摘要提取。

2.1 MD5

MD5现在最大的用处就在于检测文件有没有被修改,比如你想给别人发送一个压缩包,此时你可以生成该压缩包文件的 MD5 值,一并发送给对方。对方接受到文件后也生成 MD5 值,并与发过来的 MD5 做对比,一致则没问题。

import hashlib 
​
name = "我爱信息安全"
name_md5 = hashlib.md5(name.encode('utf8')).hexdigest()
print(f"原文:{name}\nMD5:{name_md5}")
​
# 原文:我爱信息安全
# MD5:f88750f47f532a82055d741060a993e2 

MD5应用例子:

MD5还可用于 CDN 内容防盗链问题,假设一个场景,你有一个做科普知识类的视频网站,其视频内容存放在某云上,最近发现有人盗用你的网站的视频链接,造成了很大的经济损失。那么接下来你会怎么补救?

常见的是防盗链方法有:Referer值、Cookie、IP、Header等,但是这些都可伪造,不是很安全。那么可以使用Token验证的方式,验证链接的有效性,具体做法如下:

例如,一个链接为:/test/p/java.image?token=0,秘钥为:secret,设secret="java"

1.设置链接过期时间为60分钟,expire_time = now_time + 3600,格式是时间戳类型。expire_time=1620814643+3600=1620818243 2.计算MD5值,tok = MD5(url_path+expire_time+secret)。tok = MD5("/test/p/java.image"+1620818243+"java")=ef9a78bf0fa14e20304a5fce49342f3c 3.最终结果:tok = tok[中间6位]+expire_time,tok=e20304+1620818243=e203041620818243 4.最终的url为:/test/p/java.image?token=e203041620818243

用户请求这个 url 时,CDN 平台方会拿到过期时间1620818243,然后做相同的MD5计算,看是否与token的值相同,若相同可验证过期时间是否逾期。

总结

消息认证主要是为了验证消息的机密性,还是很重要的。

网络安全入门学习路线

其实入门网络安全要学的东西不算多,也就是网络基础+操作系统+中间件+数据库,四个流程下来就差不多了。

1.网络安全法和了解电脑基础

其中包括操作系统Windows基础和Linux基础,标记语言HTML基础和代码JS基础,以及网络基础、数据库基础和虚拟机使用等...

别被这些看上去很多的东西给吓到了,其实都是很简单的基础知识,同学们看完基本上都能掌握。计算机专业的同学都应该接触了解过,这部分可以直接略过。没学过的同学也不要慌,可以去B站搜索相关视频,你搜关键词网络安全工程师会出现很多相关的视频教程,我粗略的看了一下,排名第一的视频就讲的很详细。 当然你也可以看下面这个视频教程仅展示部分截图 学到http和https抓包后能读懂它在说什么就行。

2.网络基础和编程语言

3.入手Web安全

web是对外开放的,自然成了的重点关照对象,有事没事就来入侵一波,你说不管能行吗! 想学好Web安全,咱首先得先弄清web是怎么搭建的,知道它的构造才能精准打击。所以web前端和web后端的知识多少要了解点,然后再学点python,起码得看懂部分代码吧。

最后网站开发知识多少也要了解点,不过别紧张,只是学习基础知识。

等你用几周的时间学完这些,基本上算是具备了入门合格渗透工程师的资格,记得上述的重点要重点关注哦! 再就是,要正式进入web安全领域,得学会web渗透,OWASP TOP 10等常见Web漏洞原理与利用方式需要掌握,像SQL注入/XSS跨站脚本攻击/Webshell木马编写/命令执行等。

这个过程并不枯燥,一边打怪刷级一边成长岂不美哉,每个攻击手段都能让你玩得不亦乐乎,而且总有更猥琐的方法等着你去实践。

学完web渗透还不算完,还得掌握相关系统层面漏洞,像ms17-010永恒之蓝等各种微软ms漏洞,所以要学习后渗透。可能到这里大家已经不知所云了,不过不要紧,等你学会了web渗透再来看会发现很简单。

其实学会了这几步,你就正式从新手小白晋升为入门学员了,真的不算难,你上你也行。

4.安全体系

不过我们这个水平也就算个渗透测试工程师,也就只能做个基础的安全服务,而这个领域还有很多业务,像攻防演练、等保测评、风险评估等,我们的能力根本不够看。

所以想要成为一名合格的网络工程师,想要拿到安全公司的offer,还得再掌握更多的网络安全知识,能力再更上一层楼才行。即便以后进入企业,也需要学习很多新知识,不充实自己的技能就会被淘汰。

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

尾言

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,最后联合CSDN整理了一套【282G】网络安全从入门到精通资料包,需要的小伙伴可以点击链接领取哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值