文章目录
主要实现方法:
①带密钥的哈希函数:HMAC、NMAC
②分组密钥算法构成:OMAC、CBC-MAC、PMAC等
基于Hash函数的消息认证码
优势:
①软件执行速度比诸如DES这样的分组密码要快;
②可用许多共享的密码学Hash函数代码库。
KeyedHash=Hash(Key||Message)
①许多哈希函数不是专门为MAC而设计,比如SHA系列函数,不能直接带密钥使用。
②存在一定的安全弱点。如长度扩展攻击等
HMAC与NMAC
HMAC K(m)=H( k’ ⊕ opad || H( k’ ⊕ ipad || m))
NMAC k1K2(m)=Hk1( Hk2( m ) )
不同:①除填充的消息长度不同外,这两种与基于哈希的MAC类似;
②除相关密钥攻击外,对HMAC的攻击也适应NMAC;
HAMC
可以证明嵌入Hash函数的强度与HMAC的强度之间的联系;HMAC的安全依赖于:使用的密钥和底层的Hash函数;在选择Hash函数时要兼顾安全要求与运行速度,通常选用MD5。
CMAC
基于分组密码的MAC
DAA
数据认证算法(DAA)基于DES-CBC的以前用的最广泛的MAC。
①初始向量IV=0,最后分组用0填充;
②用密文块链接模式下的DES加密;
③最后一个密文块作文MAC,或者最后密文块的最左面的M位(16≤M≤64)