消息认证码 编辑

消息认证码消息认证码

在密码学中,消息认证码(英语:Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过,不管更改的原因是来自意外或是蓄意攻击。同时可以作为消息来的身份验证,确认消息的来源。

定义

编辑
非正式地,消息验证代码由三种算法组成:

  • 密钥生成算法随机均匀地从密钥空间中选择密钥。

  • 给定密钥和消息的签名算法有效地返回标签。

  • 验证算法有效地验证给定密钥和标签的消息的真实性。也就是说,当消息和标签未被篡改或伪造时接受返回,否则返回被拒绝。

    对于安全的不可伪造的消息认证代码,在不知道密钥的情况下计算给定消息的有效标签在计算上是不可行的,即使在最坏的情况下,我们假设对手可以伪造除给定消息之外的任何消息的标签。

    形式上,消息认证码(MAC)是有效算法(G,S,V)的三倍,满足:

  • G(密钥生成器)在输入1n上给出密钥k,其中n是安全参数。

  • S(签名)在密钥k和输入字符串x上输出标签t。

  • 输入上接受或拒绝的V(验证)输出:密钥k,字符串x和标记t。 S和V必须满足以下条件:

  • Pr

  • 实现

    编辑
    MAC算法可以由其他加密原语构建,例如加密散列函数(如HMAC的情况)或来自分组密码算法(OMAC,CBC-MAC和PMAC)。 然而,许多最快的MAC算法(如UMAC和VMAC)都是基于通用散列构建的。

    另外,MAC算法可以有意地组合两个或更多个加密原语,以便即使后来发现其中一个易受攻击也能保持保护。 例如,在传输层安全性(TLS)中,输入数据被分成两半,每个半部用不同的散列原语(MD5和SHA-1)处理,然后一起进行异或输出以输出MAC。

    标准

    编辑
    存在定义MAC算法的各种标准。 这些包括:

  • FIPS PUB 113计算机数据认证

  • FIPS PUB 198-1密钥哈希消息认证码(HMAC)

  • ISO / IEC 9797-1使用分组密码的机制

  • ISO / IEC 9797-2使用专用哈希函数的机制

    ISO / IEC 9797-1和-2定义了可用于任何分组密码或散列函数以及各种不同参数的通用模型和算法。 这些模型和参数允许通过指定参数来定义更具体的算法。 例如,FIPS PUB 113算法在功能上等同于具有填充方法1的ISO / IEC 9797-1 MAC算法1和DES的分组密码算法。

  • MAC使用的一个例子

    编辑
    在此示例中,消息的发送方通过MAC算法运行它以生成MAC数据标记。 然后将消息和MAC标签发送到接收器。 接收器依次使用相同的密钥通过相同的MAC算法运行传输的消息部分,产生第二MAC数据标签。 接收器然后将在传输中接收的第一MAC标签与第二生成的MAC标签进行比较。 如果它们相同,则接收器可以安全地假设在传输期间消息未被改变或篡改(数据完整性)。

    然而,为了允许接收器能够检测重放攻击,消息本身必须包含确保该相同消息只能被发送一次的数据(例如,时间戳,序列号或使用一次MAC)。 否则,攻击者可能甚至不了解其内容,记录此消息并在以后播放,产生与原始发件人相同的结果。

    一次性MAC

    通用散列,特别是成对独立散列函数,只要密钥最多使用一次,就提供安全的消息验证代码。 这可以被视为一次性认证。

    最简单的这种成对独立散列函数由随机密钥key=(a,b)定义,并且消息m的MAC标签被计算为tag =(am + b)mod p,其中p是prime。

    一般地,只要对于k路独立散列函数使用小于k次的密钥,k独立散列函数就提供安全消息认证码。

    下一篇 安全电子交易

    上一篇 参数