




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6章消息认证和杂凑算法抗击被动攻击的方法是前面已介绍过的加密。 本章介绍的消息认证则是用来抗击主动攻击的。 消息认证是一个过程,用以验证接收消息的真实性(的确是由它所声称的实体发来的)和完整性(未被篡改、插入、删除),同时还用于验证消息的顺序性和时间性(未重排、重放、延迟)。除此之外,在考虑信息安全时还需考虑业务的不可否认性。消息认证机制和数字签字机制都需有产生认证符的基本功能,这一基本功能又作为认证协议的一个组成部分。认证符是用于认证消息的数值,它的产生方法又分为消息认证码MAC(messageauthenticationcode)和杂凑函数(hashfunction)两大类,消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。此时需要通信双方A和B共享一密钥K。设A欲发送给B的消息是M,A首先计算MAC=CK(M),其中CK(·)是密钥控制的公开函数,然后向B发送M‖MAC,B收到后做与A相同的计算,求得一新MAC,并与收到的MAC做比较,如图6.1(a)所示。 如果仅收发双方知道K,且B计算得到的MAC与接收到的MAC一致,则这一系统就实现了以下功能: ①接收方相信发送方发来的消息未被篡改,这是因为攻击者不知道密钥,所以不能够在篡改消息后相应地篡改MAC,而如果仅篡改消息,则接收方计算的新MAC将与收到的MAC不同。 ②接收方相信发送方不是冒充的,这是因为除收发双方外再无其他人知道密钥,因此其他人不可能对自己发送的消息计算出正确的MAC。MAC函数与加密算法类似,不同之处为MAC函数不必是可逆的,因此与加密算法相比更不易被攻破。 由于消息本身在发送过程中是明文形式,所以这一过程只提供认证性而未提供保密性。 图6.1MAC的基本使用方式 图6.1MAC的基本使用方式对MAC的攻击如果密钥长为k比特,则穷搜索攻击平均将进行2k-1个测试。特别地,对惟密文攻击来说,敌手如果知道密文C,则将对所有可能的密钥值Ki执行解密运算Pi=DKi(C),直到得到有意义的明文。对MAC来说,由于产生MAC的函数一般都为多到一映射,如果产生n比特长的MAC,则函数的取值范围即为2n个可能的MAC,函数输入的可能的消息个数N>>2n,而且如果函数所用的密钥为k比特,则可能的密钥个数为2k。如果系统不考虑保密性,那么在这种情况下要考虑敌手使用穷搜索攻击来获取产生MAC的函数所使用的密钥。假定k>n,且敌手已得到M1和MAC1,其中MAC1=CK1(M1),敌手对所有可能的密钥值Ki求MACi=CKi(M1),直到找到某个Ki使得MACi=MAC1。由于不同的密钥个数为2k,因此将产生2k个MAC,但其中仅有2n个不同,由于2k>2n,所以有很多密钥(平均有2k/2n=2k-n个??)都可产生出正确的MAC1(多对一),答:因为每2n个密钥对应1个MAC,那么在共有2K个密钥下,可对应2K/2n=2k-n个MAC。 而敌手无法知道进行通信的两个用户用的是2k-n中的哪一个密钥,还必须按以下方式重复上述攻击: 第1轮 已知M1、MAC1,其中MAC1=CK(M1)。对所有2k个可能的密钥计算MACi=CKi(M1),得2k-n个可能的密钥。 第2轮 已知M2、MAC2,其中MAC2=CK(M2)。对上一轮得到的2k-n个可能的密钥计算MACi=CKi(M2),得2k-2×n个可能的密钥。 如此下去,如果k=αn,则上述攻击方式平均需要α轮。例如,密钥长为80比特,MAC长为32比特,则第1轮将产生大约248个可能密钥,第2轮将产生216个可能的密钥,第3轮即可找出正确的密钥。如果密钥长度小于MAC的长度,则第1轮就有可能找出正确的密钥,也有可能找出多个可能的密钥,如果是后者,则仍需执行第2轮搜索。 所以对消息认证码的穷搜索攻击比对使用相同长度密钥的加密算法的穷搜索攻击的代价还要大。然而有些攻击法却不需要寻找产生MAC所使用的密钥。例如,设M=(X1‖X2‖…‖Xm)是由64比特长的分组Xi(i=1,…,m)链接得到的,其消息认证码由以下方式得到: 其中表示异或运算,加密算法是电码本模式的DES。因此,密钥长为56比特,MAC长为64比特,如果敌手得到M‖CK(M),那么敌手使用穷搜索攻击寻找K将需做256次加密。然而敌手还可用以下方式攻击系统:将X1到Xm-1分别用自己选取的Y1到Ym-1替换,求出Ym=Y1Y2…Ym-1Δ(M),并用Ym替换Xm。因此敌手可成功伪造一新消息M′=Y1…Ym,且M′的MAC与原消息M的MAC相同。考虑到MAC所存在的以上攻击类型,可知它应满足以下要求,其中假定敌手知道函数C,但不知道密钥K: ①如果敌手得到M和CK(M),则

YY****。。
实名认证
内容提供者


最近下载