当前位置:文档之家› 密码学与信息安全 第11章 消息认证和散列函数

密码学与信息安全 第11章 消息认证和散列函数


认证函数之消息认证码(MAC)
可提供认证,但不能提供保密性
认证函数之消息认证码(MAC)
认证函数之消息认证码(MAC)
认证方式为什么不直接用信息加密模式,而使用 MAC?
认证函数之消息认证码(MAC)
特点:1)MAC函数类似于加密函数,但不需要可逆性。
因此在数学上比加密算法被攻击的弱点要少。 2)MAC=C(K,M)函数是个多对一的函数。 例如:100位的密钥,10位的MAC 则可以计算出2100条MAC,但不同的MAC值最多210个 即:平均同一MAC可由
提供认证和签名
----只有A拥有用于加密的密钥PRa ----传输中未被改变
----需要某种数据组织形式/冗余
----任何一方可用PUa来验证签名 (b)公钥加密:保密性、认证和签名 A→B:E[PUb, E[PRa,M]] 提供保密性(因为PUb)
提供认证和签名(因为PRa)
认证函数之消息认证码(MAC)
认证函数之消息加密
对称加密模式
认证函数之消息加密
对称加密模式
解密后并不能保证就是正确 的FCS 攻击者产生密文发送给接收方 如:xxxxxxxxxxxxxxx
攻击者构造一个正确的FCS
认证函数之消息加密
对称加密模式
由前所述可知,FCS和加密函数执行的顺序是很 重要的,对于内部错误控制,由于攻击者很难产 生密文,使得解密后其错误控制是正确的,因此 内部错误控制可以提供认证;如果FCS是外部码, 那么攻击者可以构造具有正确错误控制码的消息, 虽然攻击者不知道解密后的明文是什么,但他可 以造成混淆并破坏通信。 事实上,在要发送的消息中加入任何类型的结构 信息都会增强认证能力。例如考虑使用TCP/IP协 议传送消息的结构
3.
4. 5. 6. 7. 8.
11.1 对认证的要求
前两种攻击的方法属于消息保密性范畴。 对付第3种至第6种攻击的方法一般称为消 息认证;对付第7种攻击的方法属于数字签 名。一般而言,数字签名方法也能够抗第3 种至第6种攻击中的某些或全部攻击,对付 第8种攻击需要使用数字签名和为抗此种攻 击而设计的协议。
2100/210
个不同的密钥产生。
认证函数之散列函数
MAC产生的问题:基于对称密码体制,例如采用DES的
消息认证码。自然按64比特分划成一块一块,这样太慢。
散列函数: 可看作是MAC的一种变形,输入为任意长度的
消息M; 输出为一个固定长度的散列值H(M),又称为消息摘要 Message Digest。消息的微小变动都会导致摘要的大变化。
雪崩效应
Compared witch MAC :
MAC需要密钥,而散列函数仅是输入消息的函数
散列函数用于消息认证的各种方法
加密消息及散列值
广播消息时
用共享密钥加密散列值
散列函数用于消息认证的各种方法
用发送者私钥加密散列值
用共享密钥加密C的结果
散列函数用于消息认证的各种方法
散列函数用于消息认证的各种方法
认证函数之消息加密
公钥加密模式
认证函数之消息加密
公钥加密模式
使用公钥加密[图11.1(b)]可提供保密性,但不能提 供认证。发送方(A)使用接收方(B)的公钥PUb对 M加密,由于只有B拥有相应的私钥PRb,所以只有B 能对消息解密。但是任何攻击者可以假冒A用B的公钥 对消息加密,所以这种方法不能保证真实性。 图11.1(c)中A用其私钥对消息加密,而B用A的公 钥对接收的消息解密。与对称密码情形的推理一样, 这提供了认证功能:因为只有A拥有PRa,能产生用 PUa可解密的密文,所以该消息一定来自A。同样,对 明文也必须有某种内部结构以使接收方能区分真实的 明文和随机的位串。
第11章 消息认证和散列函数
消息认证和散列函数
消息认证是用来验证消息完整性的一种机制或服务。消息 认证确保收到的数据确实和发送时的一样(即没有修改、 插入、删除或重放),且发送方声称的身份是真实有效的。 用于消息认证的最常见的密码技术是消息认证码和安全散 列函数。
MAC是一种需要使用密钥的算法,以可变长度的消息和 密钥作为输入,产生一个认证码。拥有密钥的接受方产生 一个认证码来验证消息的完整性。 散列函数将可变长度的消息映射为固定长度的散列值,或 叫消息摘要。
整个消息的密文作为认证符,接收方根据认证符来验 证消息的真实性。
message authentication code (MAC,消息认证码)
是消息和密钥的函数,通过消息和密钥产生一个定长 的值作为认证符。
hash function (hash函数)
将任意长的消息映射为定长的散列值(认证码)。
认证函数之消息加密
认证函数之消息加密
公钥加密模式
如果既要提供保密性又要提供认证,那么A 可先用其私钥对M加密,这就是数字签名 (这不是构造数字签名的一般方法,但基 本原理类似);然后A用B的公钥对上述结 果加密,这可保证保密性。但这种方法的 缺点是,一次通信中要执行四次复杂的公 钥算法而不是两次。
认证函数之消息加密
公钥加密模式
为什么要先签名后加密? 攻击者可以把A给B的信息签 名去掉再加上自己的签名。
各种消息加密方法在保密性和认证方面的特点
(a)对称加密
A→B:E[K,M] 提供保密性 ----只有A和B共享K 提供认证 ----只能发自A ----传输中未被改变 ----需要某种数据组织形式/冗余 不能提供数字签名(因为共享密钥) ----接收方可以伪造消息 ----发送方可以否认消息
认证函数
任何消息认证或数字签名机制在功能上基本 可看做是有两层。下层中一定有某种产生 认证符的函数,认证符是一个用来认证消 息的值;上层协议中将该函数作为原语使 接收方可以验证消息的真实性。 用来产生认证符的函数类型可分为三类:
认证函数
三种认证函数: message encryption(消息加密) 对称密钥模式 公开密钥模式
才使至少有两人具有相同生日的概率不小于1/2?
1 2 k 1 P ( n , k ) 1 (1 )(1 )...(1 ) >0.5 n n n
即:当n=365时,得k≈23,实际上只需23人, 从中总 能选出两人具有相同生日的概率至少为1/2。 当k=50,概率至少为97%。
生日悖论
2
128 64 2 条消息
对MD5的攻击
Rivest在MIT提出,但04年山东大学王小 云教授找到碰撞。
对认证的要求
1. 2. 泄密:将消息透露给没有合法密钥的任何人或程序。 传输分析:分析通信双方的通信模式。在面向连接的应 用中,确定连接的频率和持续时间;在面向连接或无连 接的环境中,确定双方的消息数量和长度。 伪装:欺诈源向网络中插入一条消息。如攻击者产生一 条消息并声称这条消息是来自某合法实体,或者非消息 接收方发送的关于收到或未收到消息的欺诈应答。 内容修改:对消息内容的修改。包括插入、删除、转换 和修改。 顺序修改:对通信双方消息顺序的修改。包括插入、删 除和重新排序。 计时修改:对消息的延时和重放。 发送方否认:发送方否认发送过某消息 接收方否认:接收方否认接收过某消息
11. 4 散列函数
生日攻击:给定一个散列函数,输出为n位,即可能 的输出为2n种,输出值为H(x),如果H有k个随机输入, k必须为多大,存在任意的x,y,使得H(y)=H(x)的概 率为0.5。 根据生日悖论,只需要k的值为:k=2n/2。 对散列函数实施攻击: MD5:散列长度为128位,则需要对 进行散列。
认证函数之消息加密
攻击者 A E(K,M) C’
对称加密模式
D(K,C’) B
对接收到的密文解密,再对所得明文的合法性进行判别,是 一件困难的事情。比如若明文是二进制文件,那么很难确定 解密后的消息是正确生成的,即是真实的明文。攻击者可以 简单地发布任何消息并伪称是发自合法用户的消息,从而造 成某种程度的破坏 。 解决的方法之一是,要求明文具有某种易于识别的结构,并 且不通过加密函数是不能重复这种结构的,例如Frame Check sum(帧校验和,FCS)。
各种消息加密方法在保密性和认证方面的特点
(b)公钥加密:保密性
A→B:E[PUb,M]
提供保密性 ----只有B拥有用于解密的密钥PRb 不能提供认证 ----任何一方都可用PUb对消息加密并假称是A
各种消息加密方法在保密性和认证方面的特点
(b)公钥加密:认证和签名
A→B:E[PRa,M]
(b)加密hash值:共享的密钥
A→B: M|| E (k,H(M)) 提供认证 ----H(M)受密码保护
(c)加密hash值:发送方私钥
A→B: M|| E (PRa,H(M)) 提供认证和数字签名 ----H(M)受密码保护 ----只有A能产生E(PRa ,H(M))
(d) 加密(c)的结果:共享的密钥
散列函数的相关性质
性质:
单向性:给定消息可以 产生一个散列码,而给 定散列码不可能产生对 应的消息。
弱碰撞:寻找能生成与 指定消息具有相同散列 值的消息。
强碰撞性:找到两个具有 相同散列值的消息。
散列函数的相关性质
弱碰撞: Oscar以一个有效签名(x,y)开始,此处y=sigk(h(x))。
对称加密
对称加密模式
发送方A用和B共享的密码钥K对发送给B的消息M加密, 显然可以提供保密性,因为默认没有第三方知道秘密 钥; B也可确信该消息是A产生的,即该模式也可提供认证 功能,因为攻击者没有密钥,不太可能冒充A产生一个 密文,恰好也可以用K恢复出预期的正确的明文。 上面的推断过程还是存在一些问题,就是万一明文M本身 就是不具可读性,B如何知道恢复出的是真正的明文?
如果不要求保证保密性,那么由于(b)和(c) 所需的计算较少,而且人们越来越对那些 不含加密函数的方法感兴趣,所以(b)和(c) 比那些对整条信息加密的方法要好一些。
相关主题