第六章 消息认证和哈希函数 —— 现代密码学(杨波)课后题答案解析

发布时间 2023-11-16 18:57:53作者: 3cH0_Nu1L

第五章作业参考答案

1.6.1.3节的数据认证算法是由CBC模式的DES定义的,其中初始向量取为0,试说明使用CFB模式也可获得相同的结果。

解:设需认证的数据分为64比特长的分组,D1,D2,…,DN,其中DN不够64比特则右边补0,由题设,数据认证算法相当于在CBC模式中初始向量取为0,并按如下关系进行:

    O1=EK(D1Å0);     O2=EK(D2ÅO1);…   ON=EK(DNÅON-1);

数据认证码取为ONON的最左M个比特

对于同样的认证数据序列,D1,D2,…,DN,使用DES的CFB模式,且取j=64,IV=D1,并从D2开始加密得

C1= EK(D1D2O1ÅD2C2= EK(C1D3EK(O1ÅD2D3=O2ÅD3

由此可推出,对最后一个分组DN加密后的密文CN-1=ON-1ÅDN,则此时将CFB模式再进行一步,在该步中只计算DES的输出,则该输出值为EK(CN-1)=EK(ON-1ÅDN)=ON

所以可获得相同的结果。

2.有很多杂凑函数是由CBC模式的分组加密技术构造的,其中的密钥取为消息分组。例如将消息M分成分组M1,M2,…,MNH0=初值,迭代关系为HiEMi(Hi-1Hi-1(i=1,2,…,N),杂凑值取为HN,其中E是分组加密算法。

(1)设E为DES,第3章习题1已证明如果对明文分组和加密密钥都逐比特取补,那么得到的密文也是原密文的逐比特取补,即如果Y=DESK(X)则Y¢= DESK¢(X¢)。利用这一结论证明在上述杂凑函数中可对消息进行修改但却保持杂凑值不变。

证:由DES的取反特性,如果令MiHi-1取反,则有

EM¢i(H¢i-1H¢i-1=[EMi(Hi-1)]¢ÅH¢i-1EMi(Hi-1Hi-1Hi

因此对任意的初始值H0,如果将H0取反且将第一个消息分组M1也取反则杂凑值不变

(2)若迭代关系改为HiEHi-1(MiMi,证明仍可对其进行上述攻击。

证:与(1)同,略。

3.考虑公钥加密算法构造杂凑函数,设算法是RSA,将消息分组后用公开钥加密第一个分组,加密结果与第二个分组异或后,再对其加密,一直进行下去。设一消息被分成两个分组B1B2,其杂凑值为H(B1,B2)=RSA(RSA(B1B2)。证明对任一分组C1可选C2,使得H(B1,B2)= H(C1,C2),证明这种攻击方法,可攻击上述用公钥加密算法构造的杂凑函数。

证:攻击值如果获得两个消息分组B1B2,及其杂凑值H(B1,B2),则攻击者可任选分组C1并令C2=RSA(B1B2ÅRSA(C1)

于是有H(C1,C2)=RSA(RSA(C1)Å(RSA(B1B2ÅRSA(C1)))=RSA(RSA(B1B2)=H(B1,B2)则攻击成功。

6.设a1a2a3a4是32比特长的字中的4个字节,每一ai可看作由二进制表示的0到255之间的整数,在big-endian结构中该字表示整数a1224+a2216+a328+a4,在little-endian结构中该字表示整数a4224+a3216+a228+a1

(1)用MD5使用little-endian结构,因消息的摘要值不应依赖于算法所用的结构,因此在MD5中为了对以big-endian结构存储的两个字X=x1x2x3x4和Y=y1y2y3y4,进行模232加运算,必须对这两个字进行调整,试说明如何调整?

解:首先对X中的4个字节做如下处理:

x1x4交换,x2x3交换,对Y进行相同的处理

然后计算Z=X+Y mod232

最后再将z1z4交换,z2z3交换。

复习题&&答案

4.6. 简述用杂凑函数来实现消息认证的三大类基本方式

答:

  1. 先对消息计算杂凑值,在对杂凑值进行对称加密,提供认证性和完整性服务,还分为带保密性和不带保密性两种方式。

  2. 先对消息计算杂凑值,再前面签名再对称加密(也可以用收方公钥加密),提供认证性、完整性和不可否认性,也分为带保密性和不带保密性两种方式

  3. 连同秘密值一起对消息计算杂凑值,提供认证性和完整性,,也分为带保密性和不带保密性两种方式

6.2. 某用户A想要给用户B发送一个消息m,如果要对消息m的保密性与认证性进行保护,有四种方法,采用数据认证算法、先hash再加密、先签名再加密、HMAC

(1)  请分别给出这几种方法下认证消息m的表达式。所需符号和算法自行定义和选取。

(2)  其中安全性最强的和最弱的分别是哪一种方法,为什么

解:(1) 采用数据认证算法 m||CK(m),C是初始向量为0的DES-CBC算法;先hash再加密 EK{m||H(m)};先签名再加密:EK{m||Sigsk(H(m)};HMAC:m||H(k||m)

(2)安全性最强的是先签名再加密方法,它同时能提供保密性、完整性、认证性和不可否认性;最弱的是数据认证算法和HMAC,它们只提供认证性和完整性。