当前位置:网站首页 > 编程语言 > 正文

消息认证码是什么(消息认证是验证什么)



目录

一、消息认证码介绍

1)消息认证码的使用步骤:

2)消息认证码的密钥配送问题

3)消息认证码的实例:

4)消息认证码的实现:

二、HMAC(可忽略)

三、对消息认证码的攻击

四、消息认证码无法解决的问题


消息认证码(Message authentication code)是一种确认完整性并进行认证的一种技术,简称MAC

消息认证码在输入包括任意长度的消息和一个发送者与接收者之间的共享密钥后,输出固定长度的数据,该数据称为MAC值

 

1)发送者与接收者事先共享密钥

2)发送者根据消息计算MAC值(使用共享密钥)

3)发送者将消息和MAC发送给接收者

4)接收者根据收到的消息计算MAC(使用共享密钥)

5)接收者将自己计算出的MAC与从发送者收到的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)重放攻击:把以前窃听到的数据原封不动地重新发送给接收方,主要用于身份认证过程,破坏认证的正确性

防御方法:

  • 序号:将每次发送的消息都赋予一个递增编号,并且在计算MAC值时将序号也包含在消息中,第三方无法计算出递增之后的MAC值;缺点:必须要记录每个通信对象的最后一个消息的序列号
  • 时间戳:在发送消息时,附带当前时间,即便收到过去的消息,MAC也能正确将其当作错误消息来处理;缺点:必须要求收发双方的时钟一致
  • nonce:接收者先向发送者发送一个一次性随机数(该随机数称为nonce),发送消息时将nonce包含在消息中计算MAC值,每次通信的nonce都会变化;缺点:通信时的数据量会增加

2)密钥推测攻击:消息认证码也可以使用暴力激活成功教程生日攻击,如果可以从MAC值反算出密钥,就可以进行篡改、伪装等攻击;所以对于密钥推测攻击来说,要保证不能根据MAC值推测出通信双方使用的密钥

 

由于收发双方共享相同的密钥,因此无法解决以下问题:

1)对第三方证明

2)防止否认

 

 

 

到此这篇消息认证码是什么(消息认证是验证什么)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • td 缩写(td缩写的单词)2026-03-13 13:36:04
  • 圈一圈算一算怎么圈图(圈一圈算一算怎么圈图28+34)2026-03-13 13:36:04
  • 浏览器的兼容性(浏览器的兼容性视图设置)2026-03-13 13:36:04
  • 上一章 目录 设置(上一章 目录 设置800、和海胆头谈恋爱)2026-03-13 13:36:04
  • 进程控制块主要包括(进程控制块主要包括四方面用于描述)2026-03-13 13:36:04
  • 2258xt主控怎么样(2256k主控怎么样)2026-03-13 13:36:04
  • ldi指令是什么意思(ldi指令的作用是什么)2026-03-13 13:36:04
  • ip地址如何换算成子网掩码(ip地址怎么换算子网掩码)2026-03-13 13:36:04
  • tkdd期刊(tkdd期刊官网)2026-03-13 13:36:04
  • 16进制解密方法(16进制密码表)2026-03-13 13:36:04
  • 全屏图片