• 1.摘要
  • 2.基本信息
  • 3.产生背景
  • 4.设计目标
  • 5.算法描述
  • 6.算法密钥
  • 7.安全性
  • 8.典型应用
  • 9.参考资料

hmac

HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,由H.Krawezyk,M.Bellare,R.Canetti于1996年提出的一种基于Hash函数和密钥进行消息认证的方法,并于1997年作为RFC2104被公布,并在IPSec和其他网络协议(如SSL)中得以广泛应用,现在已经成为事实上的Internet安全标准。它可以与任何迭代散列函数捆绑使用。

基本信息

  • 中文名

    哈希消息认证码

  • 外文名

    Hash-based Message Authentication Code

  • 缩写

    HMAC

  • 功能

    提供消息认证

  • 应用

    IPSec协议等

  • 所属学科

    密码学

产生背景

随着Internet的不断发展,网络安全问题日益突出。为了确保接收方所接收到的报文数据的完整性,人们采用消息认证来验证上述性质。用来对消息进行认证的主要方式有以下3种:消息认证码、散列函数和消息加密。

消息认证码:它是一个需要密钥的算法,可以对可变长度的消息进行认证,把输出的结果作为认证符。

散列函数:它是将任意长度的消息映射成为定长的散列值的函数,以该散列值消息摘要)作为认证符。

消息加密:它将整个消息的密文作为认证符。

近年来,人们越来越感兴趣于利用散列函数来设计MAC,原因有二:

①一般的散列函数的软件执行速度比分组密码的要快。

②密码散列函数的库代码来源广泛。

因此HMAC应运而生,HMAC是一种利用密码学中的散列函数来进行消息认证的一种机制,所能提供的消息认证包括两方面内容:

①消息完整性认证:能够证明消息内容在传送过程没有被修改。

②信源身份认证:因为通信双方共享了认证的密钥,接收方能够认证发送该数据的信源与所宣称的一致,即能够可靠地确认接收的消息与发送的一致。

HMAC是当前许多安全协议所选用的提供认证服务的方式,应用十分广泛,并且经受住了多种形式攻击的考验。1

设计目标

在HMAC规划之初,就有以下设计目标:

不必修改而直接套用已知的散列函数,并且很容易得到软件上执行速度较快的散列函数及其代码。

若找到或需要更快或更安全的散列函数,能够容易地代替原来嵌入的散列函数。

应保持散列函数的原来性能,不能因为嵌入在HMAC中而过分降低其性能。

对密钥的使用和处理比较简单。

如果已知嵌入的散列函数强度,则完全可以推断出认证机制抵抗密码分析的强度1