计算机网络中的HMAC算法
HMAC 算法代表散列或基于散列的消息验证码。这是开发从密码散列函数派生的 MAC 所做工作的结果。 HMAC 对密码分析攻击具有很大的抵抗力,因为它两次使用哈希概念。 HMAC 包含哈希和 MAC 的双重优势,因此比任何其他身份验证代码都更安全。 RFC 2104 已发布 HMAC,HMAC 已成为 IP 安全中的强制实施。 FIPS 198 NIST 标准也发布了 HMAC。
目标——
- 作为散列函数,HMAC 也旨在成为一种方式,即易于从输入生成输出,但反过来又复杂。
- 它的目标是比散列函数受冲突的影响更小。
- HMAC 重用 MD5 和 SHA-1 等算法,并检查以更安全的哈希函数替换嵌入式哈希函数,以防万一。
- HMAC 尝试以更简单的方式处理密钥。
HMAC 算法 –
HMAC 的工作从获取包含长度为b位的块的消息 M 开始。输入签名被填充到消息的左侧,整个作为输入给一个散列函数,它给我们一个临时的消息摘要 MD'。 MD' 再次附加到输出签名中,并再次应用哈希函数,结果是我们最终的消息摘要 MD。
下面是 HMAC 的一个简单结构:
这里,H代表散列函数,
M 是原始消息
Si 和 So 分别是输入和输出签名,
Yi 是原始消息 M 中的第 i 个块,其中 I 的范围为 [1, L)
L = M 中的块数
K 是用于散列的密钥
IV 是一个初始向量(一些常数)
分别生成输入签名和输出签名Si和So。
对于普通的散列函数,HMAC 将压缩实例添加到处理中。这种结构实现对较短的 MAC 值保持效率。