赞
踩
目录
消息认证码(Message authentication code)是一种确认完整性并进行认证的一种技术,简称MAC
消息认证码在输入包括任意长度的消息和一个发送者与接收者之间的共享密钥后,输出固定长度的数据,该数据称为MAC值
1)发送者与接收者事先共享密钥
2)发送者根据消息计算MAC值(使用共享密钥)
3)发送者将消息和MAC发送给接收者
4)接收者根据收到的消息计算MAC(使用共享密钥)
5)接收者将自己计算出的MAC与从发送者收到的MAC比对
6)如果MAC一致,接收者可以判定消息的确来自接收者(认证成功);如果不一致,可判断消息不是来自发送方(认证失败)
在认证过程中,需要发送者和接收者共享密钥,且密钥不能被获取;如果密钥落入第三方,第三方可以计算出MAC值,从而能轻易进行篡改和伪装攻击,使得消息认证码没有发挥作用
1)SWIFT(环球银行金融电信协会):银行与银行之间通过SWIFT来传递交易信息。为了对消息进行验证和确定消息完整性,SWIFT使用了消息认证码,并使用公钥密码进行密钥交换
2)IPsec:对互联网基本通信协议——IP协议增加安全性的方式之一。在IPsec中,对内容和完整性校验都采用消息认证码
3)SSL/TLS:自网上购物时,使用此类协议。对通信内容认证和完整性校验使用了消息认证码
1)使用单向散列函数实现(HMAC)
2)使用分组密码实现(将分组密码的密钥作为消息认证码的共享密钥来使用,并使用CBC模式进行加密)
3)使用流密码或公钥密码来实现
HMAC:是一种使用单向散列函数来构造消息认证码的方法
HMAC的步骤:
1)密钥填充:当密钥短于单向散列函数的分组长度时,就在末尾填充0,直到与单向散列函数的分组成都相同为止;如果长于散列函数的分组时,就是用单向散列函数求出密钥的散列值,将这个散列值用作HMAC的密钥
2)将填充后的密钥与ipad进行XOR:ipad就是将00110110这一比特序列不断重复达到分组长度所形成的比特序列;进行XOR后,就是一个和单向散列函数的分组长度相同,并和密钥相关的比特序列(ipadkey)
3)和消息组合:将ipadkey附加在消息开头
4)计算散列值:将上一部的结果输入单向散列函数后计算散列值
5)将填充后的密钥与opad进行XOR:opad就是将01011100这一比特序列不断重复达到分组长度所形成的比特序列;进行XOR后,就是一个和单向散列函数的分组长度相同,并和密钥相关的比特序列(opadkey)
6)将散列值组合:将4)中计算出的散列值放到opadkey后
7)计算散列值:将6)输入单向散列函数计算散列值,该散列值就是MAC值
1)重放攻击:把以前窃听到的数据原封不动地重新发送给接收方,主要用于身份认证过程,破坏认证的正确性
防御方法:
2)密钥推测攻击:消息认证码也可以使用暴力破解和生日攻击,如果可以从MAC值反算出密钥,就可以进行篡改、伪装等攻击;所以对于密钥推测攻击来说,要保证不能根据MAC值推测出通信双方使用的密钥
由于收发双方共享相同的密钥,因此无法解决以下问题:
1)对第三方证明
2)防止否认
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。