HMAC概述

1.简介

HMAC是指基于散列的消息认证码(Hash-based Message Authentication Code)。HMAC是Internet协议(IP)安全的强制安全实施方法,并在Internet上广泛使用的安全套接层(SSL)协议中使用。
HMAC的基本思想是复用MD5与SHA-1之类现有的消息摘要算法。因此,HMAC利用消息摘要算法,把消息摘要看成一个黑盒子,用共享秘密密钥加密消息摘要,从而输出MAC,如下图所示:
在这里插入图片描述

2.HMAC工作原理

HMAC的完整操作如下图所示:
在这里插入图片描述
下面看看HMAC的内部工作原理,首先看看HMAC中使用的各个变量:
MD=使用的消息摘要(散列)函数
M=计算MAC的输入函数
L=消息M的块数
b=每块的位数
K=HMAC使用的共享对称密钥
ipad=字符串00110110重复b/8次
opad=字符串01011010重复b/8次
根据这些输入,可以如下步骤了解HMAC的操作。
2.1使K的长度的等于b
根据密钥K的长度,分三种情况:
(1)K<b:这是需要扩展密钥(K),使得K的长度等于b(初始消息块的位数)。为此,在K左边加上足够的0;例如,如果初始密钥长度为170位,而b为512,则增加342个0位到K左边,修改后的密钥继续称为K。
(2)K=b:这时不需要任何操作,直接转第2步。
(3)K>b:这是需要整理K,使K的长度等于b(初始消息块的位数)。为此,使K通过为该HMAC实例选择的消息摘要算法(H),从而得到密钥K,然后将其长度整理为b。
具体如下图所示:
在这里插入图片描述
2.2K与ipad做异或运算
第一步的输出的K与ipad做异或运算,得到S1变量。
2.3将M添加到S1
下面取初始消息(M),将其添加到S1末尾(第二步求出)。
2.4 消息摘要算法
对第3步的输出(即S1与M的组合)采用选择的消息摘要算法(如MD5或SHA-1),这个操作的输出为H。
2.5K与opad做异或运算
第一步输出的K与opad做异或运算,得到S2变量。
2.6将H添加到S2
这一步取第4步求出的消息摘要H,将H添加到S2末尾。
2.7消息摘要算法
对第6步的输出(即S2与H的组合)采用选择的消息摘要算法(如MD5或SHA-1),这个操作的输出为最终MAC。

3.HMAC的缺点

首先计算初始消息的指印(消息摘要),然后用对称密钥加密,只有发送方和接收方知道这个密钥,从而使接收方可以肯定消息来自正确的发送方,没有在中途被篡改。但是存在一下问题:
(1)HMAC中假设只有发送方和接收方知道,存在密钥交换问题。
(2)即使解决了密钥交换问题,HMAC也不适用于多个接收方的情形。这是因为,为了用HMAC产生MAC,就要利用对称密钥,而对称密钥是双方共享的:一个发送方,一个接收方。
(3)接收方是如何知道消息来自发送方,而不是来自其他的接收方。所有接收方都知道这个对称密钥,因此很可能以发送方的身份发一个假消息,用HMAC准备这个消息的MAC,发送消息和MAC,就像合法的发送方一样,这是无法阻止和检测的。
(4)如何证明MAC是A产生还是B产生的,A和B都知道这个对称密钥,双方都有可能生成这个消息及其MAC。

  • 14
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhInen丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值