【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC

HMAC

RFC 2014给出了HMAC的设计目标:

  • 不必修改而直接使用现有的hash函数、
  • 如果找到或者需要更快或更安全的hash函数,应该很容易替代原来嵌入的hash函数
  • 应保持Hash函数原有性能,不能过分降低其性能
  • 对密钥的使用和处理应该比较简单
  • 如果已知嵌入的HAsh函数的强度,则完全可以知道认证机制抗密码分析的强度

HMAC的总体结构如图所示

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第1张图片 【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第2张图片

更为有效的HMAC实现方式如图所示

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第3张图片

任何建立在嵌入Hash函数基础上的MAC,其安全性在某种程度上依赖于该Hash函数的强度。HMAC的好处在于,设计者可以证明嵌入Hash函数的强度与HMAC的强度之间的联系。能够成功攻击HMAC的概率等价于对嵌入Hash函数的攻击之一:

  • 对攻击者而言,即使IV是随机的,秘密的,未知的,攻击者也能计算压缩函数的输出
  • 即使IV是随机的秘密的,攻击者也能找到Hash函数中的碰撞

 

基于分组密码的MAC:DAA(数据认证算法)和CMAC(基于密码的消息认证码)

DAA是建立在DES上,使用广泛的MAC算法之一。但是发现这个算法存在安全弱点。

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第4张图片

DAA采用DES运算的CBC模式,初始向量为0,需要认证的数据分组。DAC可以是整个块O_N,也可以是最左边m位,16 \le m \le 64

DDA算法在政府和工业界应用广泛,但是这种算法在合理的安全准则下使用的时候有一个限制:仅能处理固定长度为mn的消息,其中n是密文分组的长度,m是一个固定的正整数。Black和Rogaway证明了这种限制可以使用三个密钥来克服:一个密钥长度为K,用在密文分组链接的每一步,两个长度为n的密钥,其中k是密钥的长度,n是密文分组长度。后又优化了这个结构,使得两个n位的密钥可以从加密密钥导出,而不是单独提供,这种优化被NIST采用作为CMAC的运算模式。

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第5张图片

计算过程为

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第6张图片

如果消息不是密文分组长度的整数倍,最后分组的右边填充一个1和若干0使得最后的分组长度为b。

认证加密:CCM和GCM

认证加密(AE)是指在通信中同时提供保密性和认证的加密系统。四种同时提供认证和加密的通用方案:

  • HtE:先Hash再加密,对M先用密码学Hash函数计算,然后将消息和Hash值一起加密
  • MtE:先MAC再加密,使用两个密钥,先计算MAC,然后将消息和MAC一起加密
  • EtM:先加密在MAC,使用两个密钥,先加密明文,然后对密文计算MAC,得到密文和MAC值
  • E&M:加密并MAC,使用两个密钥,加密明文,对明文计算MAC,得到密文和MAC值

CCM是E&M方案的改进,可提供认证和加密。组成CCM的关键算法是AES加密算法,CTR工作模式和CMAC认证算法,在加密和MAC算法中共用一个密钥K。CCM加密过程的输入包括三部分:

  • 将要被认证和加密的数据,即明文P
  • 将要被认证但不需要加密的数据A
  • 临时量N作为负载和相关数据的补充,对每天消息在协议生命期内,N的取值唯一,可防止重放攻击等

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第7张图片

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第8张图片

CCM是一个相对复杂的算法,对明文需要两次完整的处理:一次用于生成MAC,一次用于加密。临时量和MAC的长度进行这种选择,加密密钥在CTR模式下使用了两次。

Galois/计数器模式基于并行设计,可以提供高效的吞吐率和低成本、低延迟。本质是消息在变型的CTR模式下加密,密文结果与密钥以及消息长度信息在GF(2^{128})域上相乘。

GCM模式使用两个函数:带密钥的Hash函数GHASH,以及计数器每次真增加1的CTR模式的GCTR。

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第9张图片

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第10张图片

GHASH将Hash密钥H和位串X作为输入,其中len(X)=128位,m是正整数,输出128位的MAC值。

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第11张图片

GCTR将密钥K和任意长度的位串X作为输入,输出是长度与X相同的密文Y。

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第12张图片

计数器值可以被快速生成,加密操作可以并行执行。整个认证加密函数如图所示

【密码学原理】消息验证码MAC的构造方法:HMAC,DAA,CMAC_第13张图片

你可能感兴趣的:(密码学,密码学,信息安全,mac,hmac,认证加密)