Hash-based Message Authentication Code算法
HMAC是IP安全里必须实现的MAC方案,而且其余Internet协议中(如SSL)也使用了HMAC。HMAC已做为NIST标准发布。安全
HMAC的设计目标函数
一、能够直接使用现成的Hash函数性能
二、很容易用更好地Hash函数替代原来嵌入的Hash函数优化
三、可以保持Hash函数的原有性能,不能过度下降其性能spa
四、对密钥的使用和处理应较简单设计
五、若是已知嵌入的Hash函数的强度,彻底能够知道认证机制抗密码分析的强度blog
正是HMAC的这些设计目标保证了HMAC的灵活性、可用性和扩展性,从而获得了普遍的支持。ip
HMAC算法io
HMAC描述以下:
HMAC(K , M) = H[(K+⊕opad) || H[(K+⊕ipad) || M]]
这种结构对于长消息,其执行时间与嵌入的Hash函数差很少,但不适合消息大多较短的状况。这种状况下则会使用以下结构进行优化。
其中f(IV,S)是Hash函数的压缩函数,其输入是n位的初始变量和b位的分组,输出是n位的连接变量。
HMAC的安全性
已证实,对Hash函数有效的生日攻击并不一样样对HMAC有效,缘由在于Hash函数的输入(IP和M)都彻底已知,而HMAC的输入受K的影响并不彻底可知,所以能够抵抗生日攻击。
HMAC对于穷举攻击等其余攻击也保持了Hash函数的安全强度。