admin 管理员组

文章数量: 887032

CBC

MAC全称为Message Authentication Code(消息认证码)。MAC是用来保证数据完整性的一种工具。数据完整性是信息安全的一项基本要求,它可以防止数据未经授权被篡改。随着网络技术的不断进步,尤其是电子商务的不断发展,保证信息的完整性变得越来越重要,特别是双方在一个不安全的信道上通信时,就需要有一种方法保证一方所发送的数据能够被另一方验证是正确的、未经篡改的。

用数学的语言来描述,MAC实际上是将双方共享的密钥k和消息m作为输入函数,如将函数值记为MACk(m),这个函数值就是一个认证标记,这里用δ表示。攻击者发起攻击的时候,能得到的是消息和标记的序列对(m1,δ1), (m2,δ2),…(mq,δq)(其中δi= MACk(mi))。如果攻击者可以找到一个消息m,m不在m1, m2,…, mq中,并且能够得到正确的认证标记δ= MACk(m)就说明攻击成功了。攻击者成功的概率就是其攻破MAC的概率。其实就是hash函数的概念再述。

CBC-MAC

CBC-MAC是最为广泛使用的消息认证算法之一,同时它也是一个ANSI标准(X9.17)。CBC-MAC实际上就是对消息使用CBC模式进行加密,取密文的最后一块作为认证码。

当取AES作为加密的分组密码时,称为基于AES的CBC-MAC,若需要产生认证码的消息为x,加密的AES密钥为k,则生成MAC的过程如下图所示。

  • 填充和分组:对消息x进行填充,将填充得到的消息分成t个n比特的分组,记为x1, x2,…, xt。
  • 密码分组链接:令Ek表示以k为密钥的加密算法AES,用以下方式计算Hi:
    H1←Ek(x1)
    Hi←Ek(Hi-1+xi),2≤i≤t
    则Ht就是x的消息认证码。

CBC-MAC是一种经典的构造MAC的方法,构造方法简单,且底层的加密算法具有黑盒性质,可以方便的进行替换。

本文标签: CBC