当前位置:
文档之家› 消息认证技术知识概述PPT(25张)
消息认证技术知识概述PPT(25张)
4.2 消息认证码
1. 消息认证 认证码被附加到消息后以M||MAC方式一并发送,收方通过重
新计算MAC以实现对M的认证。如图所示。
假定收、发双方共享密钥k,如果收到的MAC与计算得出的 MAC一致,那么可以得出如下结论:
① 接收方确信消息M未被篡改。此为完整性验证。 ② 接收方确信消息来自所声称的发送者,因为没有其他人知道
4.1 Hash函数
弱抗碰撞性保证对于一个消息M及其Hash值,无法 找到一个替代消息M’ ,使它的Hash值与给定的 Hash值相同。这条性质可用于防止伪造。
强抗碰撞性对于消息Hash函数的安全性要求更高, 这条性质保证了对生日攻击的防御能力。
碰撞性是指对于两个不同的消息M和M’ ,如果它们 的摘要值相同,则发生了碰撞。虽然可能的消息是 无限的,但可能的摘要值却是有限的。因此,不同 的消息可能会产生同一摘要,碰撞是可能存在的。 但是, Hash函数要求用户不能按既定需要找到一个 碰撞,意外的碰撞更是不太可能的。显然,从安全 性的角度来看,Hash函数输出的比特越长,抗碰撞 的安全强度越大。
第4讲 消息认证技术
Hash函数 消息认证码 MD5算法 SHA-1算法 Hash函数的攻击分析
4.1 Hash函数
4.1.1 一个简单的Hash函数 4.1.2 完整性检验一般方法
4.1 Hash函数
Hash函数,就是将一种任意长度的消息压缩成某一 固定长度的消息摘要的函数,又称消息摘要函数, 散列函数或杂凑函数,记为:h=H(M) 。我们把 Hash值 称为输入数据M的“数字指纹”。
Hash函数的这种单向性特征和输出数据长度固定的 特征使得它可以用于检验消息的完整性是否遭到破 坏。
4.1 Hash函数
用作消息认证的Hash函数具有如下一些性质: (1) 消息M可以是任意长度的数据。 (2) 给定消息M,计算它的Hash值 h=H(M) 是很容易
的。 (3) 任意给定 h,则很难找到M使得h=H(M) ,即给
4.2 消息认证码
消息认证具有两层含义:一是检验消息的来源是真实的,即对 消息的发送者的身份进行认证;二是检验消息是完整的,即验 证消息在传送或存储过程中未被篡改、删除或插入等。
当需要进行消息认证时,仅有消息作为输入是不够的,需要加 入密钥k,这就是消息认证的原理。能否认证,关键在于信息 发送者或信息提供者是否拥有密钥k。
出Hash值,要求输入M在计算上是不可行的,即运 算过程是不可逆的,这种性质称为函数的单向性。 (4) 给定消息M和其Hash值H(M) ,要找到另一个 M’ ,且M ≠M’,使得H(M) =H(M’)在计算上是不可行的 ,这条性质被称为抗弱碰撞性。 (5) 对于任意两个不同的消息 M ≠M’ ,它们的摘要值 不可能相同,这条性质被称为抗强碰撞性。
4.1.1 一个简单的Hash函数
一个例外的情况是,若消息出错,而摘要值仍然不变的概率 为 2n 。当n充分大时,出错的概率或者说消息被篡改的概率非 常小,视为2n小概率事件,忽略不计。
4.1.2 完整性检验一般方法
消息完整性检验的一般机制如图所示。无论是存储文件还是传 输文件,都需要同时存储或发送该文件的数字指纹;验证时, 对于实际得到的文件重新产生其数字指纹,再与原数字指纹对 比,如果一致,则说明文件是完整的。否则,是不完整的。
消息认证码(Message Authentication Code,MAC)通常表示为 MAC=CK(M)
其中M是可变长的消息,K是收发双方共享的密钥,函数值 CK(M)是定长的认证码,也称为密码校验和。MAC就是带密钥 的消息摘要函数,其实就是一种带密钥的数字指纹,它与不带 密钥的数字指纹是有本质区别的。
4.2 消息认证码
3. 密文认证 改变(2)中加密的位置,得到另外一种消息保密与认证方式,如
图所示。该种处理方式先对消息进行加密,然后再对密文计算 MAC,传送Ek2(M)||Ck1(Ek2(M))给接收方。接收方先对收到的 密文进行认证,认证成功后,再解密。
4.3 MD5算法
MD表示消息摘要(Message Digest,简记为MD),MD5以512 比特一块的方式处理输入的消息文本,每个块又划分为16个32 比特的子块。算法的输出是由4个32比特的块组成,将它们级 联成一个128比特的摘要值。MD5算法如图所示,包括以下几 个步骤。
4.3 MD5算法
(1) 填充消息使其长度正好为512位的整数倍L
首先在消息的末尾处附上64比特的消息长度的二进制表示,大 小为 ,n表示消息长度。然后在消息后面填充一个“1”和多 个“0”,填充后的消息恰好是512比特的整倍长L。Y0,Y1, …,YL-1表示不同的512比特长的消息块,用M[0],M[1],…, M[N-1]表示各个Yq中按32比特分组的字,N一定是16的整数 倍。
上一循环的输出作为下一循环的输入,直到处理完YL-1为止。 消息块Yq的处理,以当前的512位数据块Yq和128位缓冲值A,
B,C,D作为输入,并修改缓冲值的内容。消息块的处理包含 4轮操作,每一轮由16次迭代操作组成,上一轮的输出作为下 一轮的输入,如图所示。
(2) 初始化缓冲区
算法中使用了128位的缓冲区,每个缓冲区由4个32比特的寄存 器A,B,C,D组成,先把这4个寄存器初始化为:
A=01 23 45 67
B=89 AB CD EF
C=FE DC BA 98
D=76 54 处理512位消息块Yq,进入主循环 主循环的次数正好是消息中512位的块的数目L。先从Y0开始,
这个共享密钥,其他人也就不可能为消息M附加合适的MAC。 此为消息源验证。
4.2 消息认证码
2. 消息认证与保密 在(1)中,消息以明文方式传送,这一过程只提供认证而不具备
保密性。如图4-2-2所示提供一种即加密又认证的方式,发送方 发送Ek2[M||Ck1(M)]。该种处理方式除具备(1)的功能外,还具 有保密性。