当前位置:
文档之家› 信息安全概论(徐茂智)第11讲
信息安全概论(徐茂智)第11讲
息
息
K
MACM
F
MACM
消 息
收方 FΒιβλιοθήκη KMACM比较
图4.6 使用消息鉴别码实现消息鉴别
4.2.2 消息鉴别码Mac
的长度为n bit时,函数输出有2n种可能,其可能的输入消息个数远远大于2n,假设密钥长度为 k bit,则可能的密钥个数为2k。现假设k > n,来看看攻击者已知明文消息M及其MAC,如何利用穷搜索攻 击获得密钥。
M || C
计算 N DKAB (C、) H (M )
M
,
比较 N 与 H(M )
(b)
图b所示的方式中,唯一的不同是A只加密信息M的Hash值H(M),这样的做法类似于后面 要讲的消息鉴别码方式,只保证消息的完整性,不提供保密性。
4.2.2 消息鉴别码Mac
消息鉴别码(MAC)是在密钥的控制下,将消息映射到一个简短的定长数据分组。 将消息鉴别码附加到消息后,提供消息的完整性检测。设M是消息;F为密钥控 制的公开函数,F可以接受任意长度的输入,但输出为定长,通常称F为MAC函 数;K为通信方之间共享的密钥。则消息M的消息鉴别码为:
M C EKAB (M )
计 算
使用加密函数加密消息时,其安全性一般取决于密钥的长度。如果加密函数没有
其他弱点可以利用的话,攻击者只能使用穷搜索的方法测试所有的密钥。假设密
钥长度为k bit,则攻击者平均进行的测试次数为 2k次1 。特别地,对于唯密文攻击
来说,攻击者只知道密文,需要用所有可能的密钥对密文执行解密,直到得到有
假冒是指攻击者在没有截获到发方A发出任何消息的情况下,向收方B发送虚假消息,以期望B相信消息来自于A; 篡改是指攻击者在只截获到发方A发给一条合法信息M后,对消息M修改得M’将M’发给B,以期望B相信M’是由A发 出的。
在无条件安全鉴别码方案中,收发双方制定编码方案后,秘密约定一个编码规则。对于攻击者来说,即使他知道通 信双方使用的编码方案,也无法做到百分之百攻击成功。这是由于原发方用于发送的信息序列在编码方案中是均匀分布 的,所以在攻击者看来总是随机的,使得他无法确定用于攻击的信息序列。下面用一个简单的例子来说明。
穷搜索攻击的角度来看,MAC函数不易破解。
-HMAC算法
K+
ipad
bbit
bbit
Si
Y1
Y2
IV
nbit
K+
opad
bbit
Hash
nbit H(Si‖M)
填充到bbit
So
IV
nbit
Hash
nbit HMACK(M)
HMAC算法结构框图
bbit Yl-1
HMAC算法由Bellare 等人在1996年提出, 1997年在RFC-2104 中发布,之后成为事 实上的Internet标准, 包括IPsec协议在内 的一些安全协议都采 用了HMAC算法。 HMAC算法的基本思 想是:利用基于密钥 的Hash函数构造 MAC。
4.2.1基于对称加密的鉴别
B :
假定只有通信双方A和B共享有密钥 K A,B 息。
为MA欲发送给B的有意义的合法信
A将 用M密钥 K加AB密后再发给B,如图4.4所示,在对信息提供保密性的同时也
提供完整性的鉴别。
A:K AB
C M DKAB (C)
A
图4:.4 基于对称加密的鉴别
B:K AB
说明: K+与ipad按位异或以及K+与opad按位异或,其目的是将K中一半的位取反,只是两次取反的为置不同;而Si 和So相当于以伪随机的方式从K产生了两个密钥,用于Hash函数中压缩函数的处理。 其中,Hash为嵌入的Hash函数(如MD5、SHA-1);IV为嵌入Hash函数的初始向量; K为密钥,如果密钥长度大于b,则将密钥输入嵌入的Hash函数以产生一个nbit长的密钥;K+是经左边填充0 满足长度为b的K;ipad为重复b/8次的00110110(ox36);opad为重复b/8次的01011100(ox5C); HMAC算法的安全性取决于嵌入其中的Hash函数的安全性。已经证明了算法的强度与嵌入的Hash函数的强度 之间的关系。对HMAC的攻击等价于对嵌入的Hash函数的两种攻击之一:
消息鉴别:原发方对原始消息数据进行约定的处理,将得到的数据发出,收 方能够验证所接收的消息为可信消息。
鉴别的两个重要方面是验证消息的内容没有受到更改以及消息源是可信的, 同时还希望验证消息的时效性,不存在人为的延迟或重放,以及通信各方之间 消息流的顺序关系。
将介绍四种消息鉴别机制: 对称加密的鉴别、消息鉴别码、数字签名机制、无条件安全鉴别码
意义的明文。
MAC函数类似于加密函数,不同的是MAC函数不需要可逆,而加密函数必须是 可逆的。因此, MAC函数比加密函数更容易构造。
MN ||DCK AB (C)
计
A: K AB
B: K AB
算
计算 C EKAB (M H(M ))
C
C
H (M )
计算
N1 N2 DKAB (C)
比较 N 2与 H (N1 )
考虑假冒攻击的情形。假如攻击者想假冒发方A,发送消息0给B。按照编码方案,他可以选择信息序列00或01来发 送,00序列只在编码规则R0,R1下存在,01序列只在编码规则R2,R3下存在,由于他不知道双方约定的编码规则, 无论他选择哪一个,假冒成功的概率只有50%。
再看篡改攻击的情形。当双方约定的编码规则为R0时,A想发消息1给B,用于发送的消息序列为10;攻击者从10 序列可以判断出A和B约定的编码规则为R0或R2,他对原始消息进行篡改,将消息1改为消息0时,同时需要对传输的信 息序列修改,但是,将信息序列改为00或01中哪一个呢?他无法用计算来确定,只好随机的选一个,因此篡改成功的 概率也只有50%。
使用基于公钥密码的数字签名实现消息鉴别(见3.5节)的过程如图4.8所示。
消
消
息
息
消
息
Hash
M M M
Hash
KRA Sig发(H(M方))A
KUA H(M) 收比方较B
H(M)
图4.8 使用数字签名机制实现消息鉴别
发送方先利用公开的Hash函数对消息M进行变换,得到消息摘要;然后利用自己的私钥对消息摘要进行签名形成 数字签名Sig(H(M));而后将签名附加在消息后发出。接收方收到消息后,先利用公开Hash函数对消息M进行变换,得 到消息摘要;然后利用发送方的公钥验证签名。如果验证通过,可以确定消息是可信的。
HMACK (M ) H[(K opad) H[(K ipad) M ]]
-HMAC算法
HMACK (M ) H[(K opad) H[(K ipad) M ]]
1. 在K的左边填充0以产生bbit长的K+; 2. 将K+与ipad按位异或产生bbit长的Si; 3. 将M 附加在Si后; 4. 将上一步产生的数据输入Hash函数,输出H(Si‖M); 5. 将K+与opad按位异或产生bbit长的So; 6. 将第(4)步产生的H(Si‖M)填充到bbit长后,附加在So后; 7. 将上一步产生的数据输入Hash函数,输出结果HMACK(M)。
MACM FK (M )
1. 消息是完整的没有被篡改。因为只有收发方知道密钥,攻击者篡改消息 后,无法得到与篡改后的消息相应的消息鉴别码; 2. 消息出自声称的原发方,不是冒充的。因为只有收发方知道密钥,攻击 者无法对自己发送的消息产生相应的消息鉴别码。
4.2.2 消息鉴别码Mac
M M M
消
发方 消
4.2.4 无条件安全鉴别码
设原始的消息集为{0,1},所有可能的信息序列有四种,分别为00、01、10、11(每个信息序列的第一位代表 消息),四个不同编码规则为R0、R1、R2、R3。编码方案如下:
00
01
10
11
R0
0
1
R1
0
1
R2
0
1
R3
0
1
其中,在某一编码规则中,空白处对应的信息序列,表示该信息序列在该编码规则下不存在,即当双方约定使用该 编码规则后,该信息序列不是原发方用于发送的序列。例如当使用编码规则R1时,收方只有收到信息序列00或11,才 认为该信息序列是由原发方发出的。
消息鉴别(message authentication) 信息来源的可靠性及完整性,需要有效的 消息鉴别来保证,如通过网络用户A 将消息M送给用户B, 这里的用户可能是个 人、机关团体、处理机等等,用户B 需要进行消息鉴别,确定收到的消息是否来 自A,而且还要确定消息的完整性。
4.2 消息鉴别
如果消息数据是真实完整的数据并且来自所声称的消息源,就称该消息数据 是可信的。
对应2k个密钥,攻击者可计算与M相应的2k个MAC,由于MAC函数的输出只有2n种可能,且2k > 2n, 则平均有2k-n个密钥可以对同一M产生相同的MAC。攻击者此时无法确定哪一个密钥是通信双方使用的。 为了确定正确的密钥,攻击者必须得到更多的消息及其由该密钥生成的MAC,然后重复进行上述的穷搜 索攻击。利用概率论知识作出下列估计,第一轮后可以确定2k-n个可能的密钥,第二轮后可以确定2k-2n个 可能的密钥,依此类推。攻击者大约需要k / n轮穷搜索,才可以得到正确的密钥。计算量之大,使得从
从上面的分析可以看出,在无条件安全鉴别码方案下,无论攻击者拥有多强的计算能力,攻击成功的概率均达不到 百分之百。
作业
什么是消息鉴别码?分析消息鉴别码与无条件安全鉴别码的异同。
(1) 对于Hash函数的初始向量IV是随机或秘密的,攻击者能够计算压缩函数的一个输出; (2) 对于Hash函数的初始向量IV是随机或秘密的,攻击者能够找到Hash函数的碰撞。
4.2.3 数字签名机制