第三章 分组密码体制 —— 现代密码学(杨波)课后题答案解析

发布时间 2023-11-11 21:28:18作者: 3cH0_Nu1L

第三章作业参考答案

1.(1)设M¢是M的逐比特取反,证明:若Y=DESK(X)则Y¢= DESK¢(X¢)

证:①以PD记DES中的所有置换,包括循环移位、左右交换,则PD满足如下性质:

     若T=PD(Z),则T¢=PD(Z¢)

     在DES中,异或运算显然满足性质a¢Åb¢=aÅb,及a¢Åb=(aÅb)¢

     因而DES中的函数F(Ri-1, Ki)在S盒前是异或运算,所以F(R¢i-1, K¢i)=F(Ri-1, Ki)

②由密钥编排方案中的运算部件知,

 若K的子密钥为K1,K2,…,K16,那么K¢的子密钥为K¢1,K¢2,…,K¢16

③若X经初始置换IP后记为L0||R0,则X¢经初始置换IP后记为L¢0||R¢0

  用K对X加密的第i轮输入为Li-1||Ri-1,输出为Li||Ri

  其中,LiRi-1RiLi-1ÅF(Ri-1, Ki)

设用K¢对X¢加密的第i轮输入为L¢i-1||R¢i-1,则其第i轮的输出满足

  左半部分=R¢i-1L¢i

  右半部分=L¢i-1ÅF(R¢i-1, K¢i)=L¢i-1ÅF(Ri-1, Ki)=(Li-1ÅF(Ri-1, Ki))¢=R¢i

  即L¢i||R¢i

④由归纳法知,前16轮的输出均满足逐比特取反的关系,在经过左右交换盒IP-1两个置换运算,输出密文也满足取反关系       #

(2)由(1)的结论,在对DES进行穷搜索攻击时,选择两个明密文对(M,C1)和(M¢,C2),然后选择KÎF256,对M加密C=DESK(M),判断C=C1C¢=C2则分别说明K或K¢为正确密钥,否则K和K¢都不是密钥,从而一次加密运算可同时验证一对互反密钥,使搜索量减少一半

2.证明:DES的解密变换是加密变换的逆

   证:DES的加密变换由IP,16轮迭代,左右交换,IP-1四部分构成,注意到解密时子密钥逆续使用,16轮迭代与左右交换一起刚好构成Feistel网络,若Feistel网络输入为X,输出为Y,即Y=Feistel(X,K),其中K为密钥,如果K的子密钥逆续使用则记为Inv(K),那么由Feistel网络的性质有X=Feistel(Y,Inv(K))。

对任意的明文消息M加密可表示为C=IP-1[Feistel(IP(M),K)]

即IP(C)=Feistel(IP(M),K)

由Feistel网络的性质有IP(M)=Feistel(IP(C),Inv(K))

而对密文C解密,即为明文=IP-1[Feistel(IP(C),Inv(K))]=IP-1[IP(M)]=M,所以解密变换是加密变换的逆                               #

3.在DES的CBC模式中C1的一个错误明显地将影响P1和P2的结果

(1)P2以后的分组不受影响,这是因为C1以后的密文都是正确的,而恢复明文主要看对应密文分组和其前一个密文分组的正确性。

(2)加密前的明文分组P1有1比特错误,则这一错误将在所有后续密文分组中传播,但接受者能够正确解密,除了P1的一个错误比特之外。这是因为相当于发送者将明文改变了1比特得到一个新明文,而该明文的对应密文正确的传送给了接受方。

4.在8bitCFB中密文字符中出现1比特错误,该错误将影响包括该密文的连续9组密文的解密。

5.在实现IDEA时,最困难的部分是模216+1乘法运算,设a和b是两个n比特的非0整数,记(ab mod 2n)为ab的n个最低有效位,(ab div 2n)为ab右移n位

(1) 证明存在惟一的非负整数q和r,使得abq(2n+1)+r

证:令q为ab/(2n+1)的商,r为ab/(2n+1)的余数,均非负,则abq(2n+1)+r

若存在另一对数q1r1满足abq1(2n+1)+r1

两式相减的(r1r)=(qq1)(2n+1)

由于|(r1r)|£2n,所以当且仅当r1rq1q时上式才成立  #

(2) 求q和r的上下界

解:由(1)知,r为余数,所以有0£r£2n

又a和b的最大值为2n-1,所以0£q£[ab/(2n+1)]£[(2n-1)2/(2n-1)]=[2n-3+4/(2n+1)]= 2n-3对于n³2时都成立,当n=1时,q=0

所以,q的上下界为0£q£2n-3 (n³2)n=1时,q=0

(3) 证明q+r<2n+1

证:q+r£2n-3+2n=2n+1-3<2n+1

(4),(5) 求(ab div 2n)关于q的表达式和(ab mod 2n)关于q和r的表达式

解:设abq12n+r1,则显然有q1=(ab div 2n),r1=(ab mod 2n)

abq(2n+1)+r,记为(a)式

q1£ r1时,abq12n+r1q1(2n+1)+(r1- q1)  记为(b)式

此时0£ (r1- q1 r1£2n-1

由(1)的唯一性结论,比较(a),(b)两式知,q1qr1- q1r

q1=(ab div 2n)=qr1=(ab mod 2n)=rq1rq

q1> r1时,abq12n+r1=(q1-1)(2n+1)+(r1- q1)+(2n+1)  记为(c)式

此时,由假设q1> r1,知(r1- q1)<0,及(q1-1)³0所以

0<(r1- q1)+(2n+1)£ 2n

即(r1- q1)+(2n+1)为ab/(2n+1)的余数

所以比较两式(a),(c)两式知(q1-1)=q,(r1- q1)+(2n+1)=r

q1=(ab div 2n)=q+1,r1=(ab mod 2n)=rq1-(2n+1)=r+(q+1)-(2n+1)

综上所述有

q1=(ab div 2n)==

r1=(ab mod 2n)==

(6) 用(4)和(5)的结果求r的表达式,说明r的含义

q1£ r1时,r=(r+q)-q=(r1- q1) =(ab mod 2n)- (ab div 2n)

q1> r1时,  r=( rq-2n)-(q+1)+ (2n+1)= (r1- q1) + (2n+1)= (ab mod 2n)- (ab div 2n) + (2n+1)

所以r=ab mod (2n+1)= 

6. (1)在IDEA模乘运算中,将模数取为216+1,是因为它是素数,从而所有非0元都有逆元

   (2) 在IDEA的模加运算中,模数取为216使所有元素都有逆元,构成群运算,同时刚好在16位子段上运算,求模运算易于实现,而取为216+1时则必须做额外处理

复习题&&答案

4.11. 试分析一下CBC、CFB、OFB运行模式的错误传播情况。

CBC的错误传播只影响当前分组和下一分组的解密

CFB的错误传播影响当前分组的对应bit解密和后续的ë64/j û或ë64/j û+1个分组的解密

OFB的错误传播只影响当前分组的对应比特解密,无错误传播

4. 14. Rijndael算法是建立在GF(28)有限域上的,且模多项式为m(x)=x8+x4+x3+x+1,试计算(x6+x2+x+1)×(x4+x+1) mod m(x),该计算用x乘来表示时,试给出计算过程。

解:上述乘法即求’47’ ×’13’

     ’47’ ×’02’=xtime(47)=’8E’    //×x

     ’47’ ×’04’=xtime(8E)=’07’    //×x2

     ’47’ ×’08’=xtime(07)=’0E’    //×x3

     ’47’ ×’10’=xtime(0E)=’1C’    //×x4

     而’13’=’01’+ ’02’+ ’10’

     所以’47’ ×’13’=’47’ ×(’01’+ ’02’+ ’10’)= ’47’+ ’8E’+ ’1C’=’D5’

     即(x6+x2+x+1)×(x4+x+1) mod m(x)= x7+ x6+ x4+x2+1

5.3 试证明:在Feistel结构密码中解密过程第1轮的输出等于加密过程最后一轮输入左右两半交换值

证明:假设加密过程的最后一轮输入左右两半分别表示为LE15RE15,输出的左右两半分别表示为LE15RE15,第16轮子密钥为K16

解密过程取密文作为同一算法的输入,由于加密最后一轮输出后又进行了左右交换,所以解密第1轮输入是RE16LE16 

在加密过程中: 

LE16RE15 ;     RE16LE15ÅF(RE15, K16)

在解密过程中 

LD1RD0=LE16RE15 

RD1LD0ÅF(RD0, K16)=RE16ÅF(RE15, K16)

=[LE15ÅF(RE15, K16)] ÅF(RE15, K16)=LE15

证毕#