《信息安全原理与技术》(第2版)习题答案 下载本文

那么

??(?6??5??3??2??)??7??6??4??3??2

再模一个次数为8的不可约多项式m(?)??8??4??3???1 结果为?7??6??4??3??2

写成二进制为11011100。

同样,计算出{03}?{46}=11001010, {87}=10000111, {A6}=10100110。 因此{87}?({02}?{6E})?({03}?{46})?{A6}计算结果为 10000111 11011100 11001010

?10100110

00110111={37}

3.10采用AES加密,密钥为2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C,明文为32 43 F6 AD 88 5A 30 8D 3131 98 A2 E0 37 07 34

(1) 写出最初的State的值

(2) 写出密钥扩展数组中的前8个字节 (3) 写出初始轮密钥加后State的值 (4) 写出字节代换后State的值 (5) 写出行移位后的State的值 (6) 写出列混淆后State的值 解:

(1)最初的State的值为:

?32?43 B0???F6??AD885A308D31E0?3137?? 9807??A234?28AED2A6ABF7158809??W0?2B7E1516?W?28AED2A6EF?1?,其中? ?W?ABF715884F??3??3E??W4?09EF4F3E?2B?7E (2)K0=(W1,W2,W3,W4)=??15??16

密钥扩展数组中前8个字节为W0,W1,即2b 7e 15 16 28 ae d2 a6 (3)根据Wi(4?i?7)的计算公式,分别计算出各式,然后计算出K1。 W4=SubByte(RotByte(W3))?Rcon[1] ?W0

= SubByte(CF4F3C09)?(01000000) ?(2B7E1516) =(8A84EB01) ?(01000000) ?(2B7E1516) =A0FAFE17

13

W5=W1?W4=(28AED2A6)?( A0FAFE17)=88542CB1 W6=W2?W5=(ABF71588)?( 88542CB1)=23A33939 W7=W3?W6=(09CF4F3C)?( 23A33939)=2A6C7605 所以,得到第一轮子密钥K1为:

?A088?FA54? K1?(W4,W5,W6,W7)??FE2C??17B1初始轮密钥加后, B1=B0+K0

23A339392A?6C?? 76??05??32?43 =??F6??AD885A308D31E0??A08823?FA54A33137????9807??FE2C39??A234??17B1392A??19A09AE9?

?3DF4C6F8?6C??=?? 76??E3E28D48????05??BE2B2A08?1E?41?? 52??30?

?D4E0B8?27BFB4

(4)经过字节代换后,state的值为 ?

?11985D?

?AEF1E5?D4?BF

(5)经过行移位后,state的值为 ?

?5D??30

E0B8B4415211AEF1

1E?27?? 98??E5?

?04?66(6)经过列混淆变换后,state的值为??81??E5

E04828?CBF806?? 19D326??9A7A4C?3.11 对习题3.10的明文和密钥不变,采用SMS4加密。(1)求出第一轮的轮密钥rk0。(2)求第一轮加密后的明文输出是什么?

解:

(1)SMS4加密算法的轮密钥由加密密钥通过密钥扩展算法生成,第一轮轮密钥rk0的计算过程如下:

①首先,将加密密钥???(??0,??1,??2,??3)按字分为四组,分别为

) , ??0?(2b7e151)6 ,??1?(28aed2a6) ,??2?(abf71588??3?(09cf4f3c)

已知:

14

FK0?(A3B1BAC6),FK1?(56AA3350),FK2?(677D9197),FK3?(B27022DC) 根据(K0,K1,K2,K3)?(??0?FK0,??1?FK1,??2?FK2,??3?FK3),得出(K0,K1,K2,K3)各个的值:

MK0=0010 1011 0111 1110 0001 0101 0001 0110 FK0= 1010 0011 1011 0001 1011 1010 1100 0110

两者做异或运算后,得K0=1000 1000 1100 1111 1010 1111 1101 0000 同理计算,可以分别得

K1=0111 1110 0000 0100 1110 0001 1111 0110

K2=1100 1100 1000 1010 1000 0100 0001 1111

K3=1011 1011 1011 1111 0110 1101 1110 0000

②然后,求出T变换的输出:

固定参数CK0的十六进制表示为:00070e15,则通过异或运算。A?(a0,a1,a2,a3)=K1?K2?K3?CK0=(0000 1001 0011 0110 0000 0110 0001 1100)十六进制表示为:09 36 06 1c。

再将输出结果A分为四组进入S盒,通过查表,输出B的十六进制为:b6 e8 3d 49。

利用公式L(?)???(????13)?(????23),得

''L'(?)=0001 0101 1001 1010 0111 1111 1000 101

③最后,由公式rki?Ki?4?Ki?T'(Ki?1?Ki?2?Ki?3?CKi)知,将K0与步骤②求出的L(?)做异或运算,即可得到rk0。

'L'(?)=0001 0101 1001 1010 0111 1111 1000 1010 异或

K0 =1000 1000 1100 1111 1010 1111 1101 0000

rk0?K4=1001 1101 0101 0101 1101 0000 0101 1010,十六进制表示为:9d 55 d0 5a。

(2)根据SMS4加密算法,首先将十六进制明文 32 43 f6 ad 88 5a 30 8d 31 31 98 a2 e0 37 07 34分组:X0?(3243f6ad)X1?(885a308d)X2?(313198 a2)X3?(e0370334)。

15

然后,根据第一轮轮密钥rk0的计算结果,已知加密函数F,

F(Xi?1,Xi,Xi?1,Xi?2,rki?1)?Xi?1?T(Xi?Xi?1?Xi?2?rki?1)得到第一轮输出

数据。

① 进行合成置换T运算

中间值A?(a0,a1,a2,a3)=X1?X2?X3?rk0=(1100 0100 0000 1001 0111 1111 0100 0001)。十六进制表示为:c4 09 7f 41。

② 将输出结果A分为四组进入S盒,通过查表,输出中间值B的十六进制为:bb b6 9e

07。

③ 进行线性变换

由公式C?L(B)?B?(B???2)?(B???10)?(B???18)?(B???24)得,

C?L(B)=1111 0000 1011 0001 1010 0000 1011 0011。

④ 利用加密函数

Xi?3?F(Xi?1,Xi,Xi?1,Xi?2,rki?1)?Xi?1?T(Xi?Xi?1?Xi?2?rki?1),将③式

得到的结果与X0做异或运算,即

( 0011 0010 0100 0011 1111 0110 1010 1101)? (1111 0000 1011 0001 1010 0000 X4=

1011 0011 )=1100 0010 1111 0010 0101 0110 0001 1110 十六进制表示为:c2 f2 56 1e。

因此,得到第一轮的输出X1,X2,X3,X4=88 5a 30 8d 31 31 98 a2 e0 37 07 34 c2 f2 56 1e。

3.12有一个四级线性移位寄存器的反馈函数为f(a1, a2, a3, a4)= a1⊕a2

其中初态为(a1, a2, a3, a4 )=(1000),求其则输出序列的前12位。 解:

四级移位存储器的输出如下所示: 状态(a4, a3, a2, a1) 0001 1000 0100 0010 1001 1100 输出 1 0 0 0 1 0 状态(a4, a3, a2, a1) 0110 1011 0101 1010 1101 1110 输出 0 1 1 0 1 0 所以,输出序列的前12位是1000 1001 1010。

3.13假如使用3位(从0到7)的RC4,其操作是对8取模(而不是对256取模),密钥是326,

(1) 求初始化后S表的值

16