MAC攻击及缺陷
前面我们在讲HMAC的时候简单讲过了什么是MAC消息认证码。
简单点说MAC(Message Authentication Code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称MAC。它是一种与密钥相关联的函数。 HMAC就是MAC的一种实现。
MAC有好几种实现方式
使用单向散列函数实现
比如HMAC。使用分组密码实现
使用AES之类的分组密码可以实现消息认证码。关于分组密码的详细内容,后面我们会做详细说明。其他实现
其他实现方法如:流密码和公钥密码等。
对MAC的攻击
虽然MAC可以同时验证消息的完整性和来源,但是仍然有多种攻击方式。
重放攻击
什么是重放攻击?顾名思义,重放攻击就是将之前的信息或者通信再次请求。我们举个例子。
- 小明跟小刚在做借款通信,但是这个通信被小红监听到了。
- 小明向小刚发起借款100元,在MAC中假设小明和小刚共享了密钥,小明通过密钥根据请求消息计算出了MAC,并将MAC和消息一起发送给小刚。
- 小刚收到了消息和MAC,根据自己存储的密钥计算出MAC,将整个MAC和收到的MAC做对比,如果两个MAC相等,那么小刚就知道这个是小明发起的合法请求,于是做出借款100元的操作。
- 因为小红监听到了小明跟小刚的通信,所以小红获取到了请求消息和生成的MAC,并保持起来。
- 小红将第4步收到的消息和MAC再次发送给小刚。
- 小刚收到消息和MAC后,验证发现MAC是正确的值,然后再次出借100元。
- 重复5,6的步骤。
有上面的具体例子可以看出,只要监听者能够拿到消息和MAC值,既可实现重放攻击。
重放攻击的防护
制定唯一的序号
在每次消息中,添加一个唯一的序号,序号递增,这样计算出来的MAC每次都是不一样的,即使能够拿到消息和MAC,在第二次重放的时候,由于消息和MAC都应该发送变化,从而使重放攻击失效。时间戳
在消息里面包含了当前的时间,在服务器校验的时候去检查这个时间戳,如果相隔时间很短的话即认可这个消息。这里会有个双方时钟同步的问题,同时要预留一个间隔时间区间。如果在这个时间区间内发生了重放,还是会攻击成功。随机数nonce
在双方通信之前,服务器先发送一个随机数给发送者,发送者在消息中包含这个随机数,并计算MAC值。因为每次请求的随机数都会变化,所以重发MAC攻击不成立。但是会增加额外的通信请求成本。
密钥推测攻击
密钥推测攻击实际上是一种暴力破解的方法,即通过MAC来反向推导出密钥。这就需要我们的MAC算法具有很好的抗暴力破解性。
MAC算法的缺陷
MAC算法的关键是发送者和接受者之间共享密钥,从而实现对消息完整性和认证的确认。但是MAC算法不能解决”第三方证明“ 和 ”防止否认“ 的问题。
第三方证明
假如小明给小刚发送了消息,小刚想向第三方机构证明这条消息确实是小明发出来的,但是MAC无法做到。
因为MAC是通过小明和小刚共享的密钥生成出来的,所以第三方机构只能确认这个MAC是由共享密钥生成的,但是不能确定是小明生成的还是小刚自己生成的。
防止否认
假如小明给小刚发送了消息,小刚收到消息之后做MAC验证,通过后知道消息是小明发出来的。
但是小明完全可以否认自己发送了这条消息,因为小刚拥有同样的密钥,可以伪造出同样的消息出来。
所以MAC算法无法做到防止否认。
更多教程请参考flydean的博客
MAC攻击及缺陷的更多相关文章
- 局域网安全-生成树攻击-ARP攻击-MAC攻击-VTP攻击-动态VLAN的攻击
一.MAC layer attacks 1.CAM表的OVERLOAD 第三方设备不断发送变化的MAC地址,填满CAM表,对于后来合法的MAC地址不能学习到从而泛洪,这时攻击者将学习到合法者的数据包. ...
- mdk3洪水攻击教程
使得路由器崩溃,直到重启. 1.iwconfig 查看网卡 2.airmon-ng start wlan0 开启网卡监控 3.airodump-ng mon0 查看附近路由信息 4.mdk3 mon0 ...
- 如何使用Reaver-PJ-Wi-Fi网络的WPA密码
在正式开始之前,我还是要不厌其烦强调一下:知识就是力量,但是拥有力量不代表着可以为所欲为.触犯法律.同样,骑白马的不一定是王子,会开锁的也不一定是小偷.本文只是关于某些技术的实验与验证,只适用于学习. ...
- 如何使用Reaver破解Wi-Fi网络的WPA密码
via: http://lifehacker.com/5873407/how-to-crack-a-wi+fi-networks-wpa-password-with-reaver 译者:Mr小眼儿 本 ...
- Cross-site Scripting (XSS) 阅读笔记
本文源自 https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 通过阅读和翻译,并按照自己的理解,整理成如下文档. 概述 XSS ...
- 对于移动端 App,虚拟机注册或类似作弊行为有何应对良策?
1.APP攻击大致策略 对APP进行攻击的一般思路包括反编译APP代码.破解APP通讯协议.安装虚拟机自动化模拟: a.首先看能否反编译APP代码(例如Android APP),如果能够反编译,从代码 ...
- 微信Netting-QRLJacking分析利用-扫我二维码获取你的账号权限
首先我们来看一下QRLJacking的实际原理:.攻击者首先进行客户端QR会话,并将登录QR码复制到网络钓鱼网站.“现在,一个精心制作的网络钓鱼页面有一个有效和定期更新的QR码可以被发送给受害者.” ...
- Diffie-Hellman 算法
Diffie-Hellman 算法描述: 目前被许多商业产品交易采用. HD 算法为公开的密钥算法,发明于1976年.该算法不能用于加密或解密,而是用于密钥的传输和分配. DH 算法的安全性 ...
- WebApp 安全风险与防护课堂(第二讲)开课了!
本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在昨天的公开课中,由于参与的小伙伴们积极性和热情非常高,我们的讲师Carl ...
随机推荐
- override 重写
//override:子类继承父类,子类重写父类的方法 public class override { public static void main(String[] args) { horse h ...
- 获取data 数据
export function getData(el, name, val) { const prefix = 'data-' if (val) { return el.setAttribute(pr ...
- XSS编码问题的个人总结
XSS也太太太难了,主要也是因为自己没花时间集中. 文章脉络:根据我粗浅的理解,从开始学习XSS到现在,从一开始的见框就插到现在去学构造.编码,首先需要的是能看懂一些payload,然后再去深入理解. ...
- 各种版本docker下载的中国开源地址
最近在群里听说Docker很火,于是自己抱着试试的态度,想玩玩,可是遇到了一些问题,记录下来,方便备忘,也方便防止大家被坑. 我的虚拟机装的是centos 6.5,百度了好多教程,丫的,都不解释,就一 ...
- PTA | 1014 福尔摩斯的约会 (20分)
大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...
- php simplexml_load_string 返回的对象print_r后,丢失信息?
<?php $content = '<dblp> <inproceedings key="conf/aaim/He07" mdate="2007- ...
- MyBatis(八):高级结果映射
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- Date 对象-->概念、创建以及方法
1.概念: Date 对象用于处理日期与时间. 2.创建: 方法1:直接用Date()函数,返回值当前时间 格式:var d = Date(); 注意:不论Date()是否带参数,返回都是当前时间 举 ...
- "字母全变小写"组件:<lowercase> —— 快应用组件库H-UI
 <import name="lowercase" src="../Common/ui/h-ui/text/c_text_lowercase">& ...
- Redis分布式锁的实现以及工具类
一.应用场景: 本文应用的场景为在查询数据时,发现数据不存在此时就需要去查询数据库并且更新缓存,此时可能存在高并发的请求同时打在数据库上,而针对这种情况必须要给这些请求加锁,故而采用了分布式锁的方式. ...