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

文章目录


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

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

上一篇:未定义标识符 HMAC_CTX_init


下一篇:使用Python 计算KS3 签名,