消息验证码 MAC (HMAC、CMAC) 原理、特点

介绍了MAC的实现原理及典型实现方案,主要内容参考自《密码编码学与网络安全》
摘要由CSDN通过智能技术生成

MAC学习笔记

1. MAC的基本思想

   消息验证码,利用密钥来生成一个固定长度的短数据块,并将该数据块附加到消息之后。
   假定通信双方比如A和B,共享密钥K。若A和B发送消息时,则A计算MAC,它是消息和密钥的函数,
   即MAC=C(K,M)
   其中,M时输入信息,C时MAC函数,K时共享的密钥,MAC是消息验证码。
     消息和MAC一起被发送给接收方。接收方对收到的消息用相同的密钥K进行相同的计算,得出新的MAC,并将接收到的MAC与其计算出的MAC进行比较,如果我们假定只有收发双方指导该密钥,那么若接收到的MAC与计算得到的MAC相等,则:
1. 接收方相信消息未被篡改.
2. 接收方确认消息来自真正的发送方,
3. 如果消息中含有序列号,则接收方确认消息顺序正确;

在这里插入图片描述
图中显示了三种常见的MAC基本原理,第一种只提供认证功能,不进行加密;第二种对明文进行计算MAC,然后对明文加MAC消息进行加密;第三种先对原始消息进行加密,再进行认证加密。最常用的方法是第二种

2.MAC的安全性分析

我们假定MAC由如下函数产生:
T=MAC(K,M)
其中M是一个变长消息,K是收发双方共享的密钥,MAC(K,M)是定长的认证符。在假定或已知消息正确时,将MAC附加于发送方的消息之后;接收方可以通过计算MAC来认证该消息。

MAC函数应具有的性质:

1. 若攻击者已知M和MAC(K,M),则他构造满足MAC(K,M‘)=MAC(K,M)的消息M’在计算上是 
   不可行的。翻译成人话就是:攻击者知道消息M和验证消息MAC,消息可以是加密的也可以是不加密
 的,但是不知道密钥,也不知道MAC函数,要尝试密钥和MAC函数,暴力尝试M‘得到M是超出计算能力
 的;
2. MAC(K,M)应是均匀分布的,即对任何随机选择的消息M和M’,MAC(K,M)=MAC(K,M‘)的
   概率是2^-n,其中n是MAC的位数。这种情况是为了阻止基于选择明文的穷举攻击,即攻击者不知道
   K,但是他知道MAC函数,能对消息产生MAC,而M是明文,是公开的,那么攻击者只要对各种消息计
   算MAC,直到与给定的MAC相同的消息为止。因为一般假定K的长度k>n,所以通过消息去破解比通过
   密钥破解某一次验证要快,平均需要2^n-1步才能找到具有给定MAC的消息。
3. 设M‘是M的某个已知的变换,即M’=f(M),例如f可能是将M的一位或多位取反,要求
   Pr[MAC(K,M)=MAC(K,M')]=2^-n。这一条是要求认证算法对消息的某部分或某些位不应比其他部分或位
   更弱,否则,已知M和MAC(K,M)的攻击者可能会对M中已知的"弱点"进行修改,比如一位或多位取
   反,然后再计算MAC,导致破解更加容易。

3.基于Hash的MAC:HMAC

3.1HMAC特点

HMAC,效率高、应用广、性质好、安全性强强的一种利用Hash函数实现MAC的方案。
HMAC

  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码,用于验证数据的完整性和真实性。 HMAC原理可以简单描述为:将密钥和消息一起输入哈希函数(如SHA-256),生成一个固定长度的哈希值。这个哈希值就是 HMAC。只有拥有相同密钥的人才能重新生成相同的 HMAC,因此 HMAC 可以用于验证消息的真实性和完整性。 具体来说,HMAC 的计算过程如下: 1. 选择一个合适的哈希函数 H(如 SHA-256)和一个密钥 K。 2. 对消息 M 进行填充(padding)。 3. 将填充后的消息 M 和密钥 K 输入哈希函数 H 中计算出 HMAC 值。 HMAC = H((K ⊕ opad) || H((K ⊕ ipad) || M)) 其中,|| 表示拼接操作,opad 和 ipad 是两个固定的常量,具体定义如下: opad = 0x5c5c5c5c… ipad = 0x36363636… 如果密钥 K 的长度小于哈希函数的块长度,则将密钥 K 填充至块长度。 如果密钥 K 的长度大于哈希函数的块长度,则将密钥 K 进行哈希运算,得到新的密钥 K',再将 K' 填充至块长度。 4. 将生成的 HMAC 值与接收到的 HMAC 值进行比较,如果相同,则消息 M 的真实性和完整性得到验证。 HMAC 的优点在于它不仅可以验证消息的完整性,还可以防止对密钥的攻击。由于 HMAC 使用了哈希函数,因此它具有不可逆性和雪崩效应,即使稍微修改了消息或密钥,生成的 HMAC 值也会有很大的变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值