[密码学] 消息认证码构造方法

文章目录

  • 基于Hash函数的消息认证码
        • KeyedHash=Hash(Key||Message)
        • HMAC与NMAC
          •   HAMC
          •   CMAC
  • 基于分组密码的MAC
        • DAA

主要实现方法:
  ①带密钥的哈希函数: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

  [密码学] 消息认证码构造方法_第1张图片

  可以证明嵌入Hash函数的强度与HMAC的强度之间的联系;HMAC的安全依赖于:使用的密钥和底层的Hash函数;在选择Hash函数时要兼顾安全要求与运行速度,通常选用MD5。

  CMAC

  [密码学] 消息认证码构造方法_第2张图片

基于分组密码的MAC

DAA

数据认证算法(DAA)基于DES-CBC的以前用的最广泛的MAC。

  ①初始向量IV=0,最后分组用0填充;

  ②用密文块链接模式下的DES加密;

  ③最后一个密文块作文MAC,或者最后密文块的最左面的M位(16≤M≤64)

  [密码学] 消息认证码构造方法_第3张图片

你可能感兴趣的:(密码学)