消息认证码(MAC)

本文探讨了消息认证码在确保通信安全中的作用,对比了基于哈希函数的MAC(如HAMC)、基于密码的MAC(如CMAC)以及分组密码链接的MAC(如CCM)和伽罗华域的MAC(如GCM)。通过实际案例解释了如何使用MAC验证消息来源,确保信息完整性和真实性。
摘要由CSDN通过智能技术生成

#声明:本文创作内容含代码均为个人创作所得,允许学习、传阅,不得用于商业用途#

消息认证码(MAC)是消息和密钥的函数,它是生成一个定长的值作为认证符,一般用于添加到消息尾部用于验证身份。

1. 背景

之前的文章我们介绍了hash函数及其意,且给出了几个算法的介绍和代码。消息摘要(HASH)作用于一个明文,生成一个定长值,消息认证码(MAC)也是作用于明文,生成一个定长的值,HASH可以确定明文是否被篡改,那为啥还需要MAC呢?

举个例子:张三和李四做生意,李四给张三发了条消息:明天晚上九点十字路口一手交钱一手交货。张三把这条消息做了hash,发现其值是和以前的hash值一样,说明消息没有改动过。可这条消息究竟是李四发给张三的,还是普利斯发给张三的呢?假如普利斯冒充李四给张三发了同样的消息:明天晚上九点十字路口一手交钱一手交货,张三要是去了,那就嗝屁了。怎么办,有什么方法能否知道这个消息是李四发的还是普利斯发的?这就需要MAC来解决。

2. 消息认证码用途

                                                        图1 简单MAC过程 

如上图所以,我们利用一个function函数和密钥,对明文做类似hash的操作,生成定长的MAC值,然后附加到消息的后面,因为这个密码是私有密钥,也就是只有通信双方知道,那这个MAC值就是一个特定的值,其他人在不知道密钥的情况下,就无法得到特定的MAC值。由于直接发送明文和MAC是有风险的,因为明文被暴露在外面,那我们就需要对明文进行加密,然后再发送,要不然普利斯也可以截获消息,然后也去十字路口去逮捕你们。

                                                        图2. 发送与接收认证过程

如图2所示,如果发送方先用密钥1生成MAC值,然后附加在消息后面,为了隐藏明文,于是使用密钥2加密消息和MAC值,然后发送出去;接收方用共享的密钥2先解密得到明文和MAC值,然后再用共享密钥1计算收到的消息的MAC值,如果计算得到的MAC值和收到的MAC值一样,我们就可以认为消息确实来源于拥有密钥的发送方,于是我们认为这个消息是可信的。

下次补充以下内容

3. 基于哈希函数的MAC(HAMC)

4. 基于密码的MAC(CMAC)

5. 分组密码链接的MAC(CCM)

6. 伽罗华域的MAC(GCM)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值