湘潭大学信息安全课作业答案3

湘潭大学信息安全课作业答案3
教师:李澄清院长
整理自助好心的助教大哥—申哥。
代码答案等来自19级各位同学,与网上流传的参考答案不一致,仅供参考

1.流密码加密方案可以看成一次性密码本方案的推广。我们在前面曾介绍过,一次性密码本方案是可证明为安全的.那么,我们为什么不能采用之前用于一次性密码本的论据,来证明流密码加密方案也是可证明为安全的呢?
答:因为一次一密的这证明依据是每次只使用完全随机的密钥一次,但是在流密码体系中,解密是通过同步产生的密钥流,其安全性依赖于加密用的伪随机序列
2.这个问题针对的是流密码加密方案.
a.如果我们生成了一个足够长的密钥流,那么密钥流最终必然会重复。为什么?
b.如果密钥流发生重复,为什么就会有安全问题?
答:
a、因为在生成伪随机序列的时候算法状态有限,根据抽屉原理就会出现重复
b、重复密钥,可以对密文进行破解
3.
答:
a、因为C = P  K所以有:K = C  P
b、根据a可以知道Trudy知道密钥K,所以Turdy可以用P  K代替C
4.
答:
X寄存器的步进正好是时间的3/4
Y寄存器的步进正好是时间的3/4
Z寄存器的步进正好是时间的3/4
当所有三个“步进位”一致时,所有3个寄存器都步进,既在000和111情况下,如果时间为2/8=1/4,则出现2/8=1/4
两个寄存器步在所有情况下,除了当所有3步,所以3/4的时间。
不可能,因为单个寄存器不可能占多数——因为有3个寄存器,所以多数寄存器由2个或更多个寄存器组成。
不可能,因为不可能没有寄存器执行。
5.
键流位是:
k0k1k2…kn=10000011011100000111100000011001
寄存器:
X=x0x1x2…x18=0001101000000000000
Y=y0y1y2y3…y21=1111101010101010101010
Z=z0z1z2z3…z22=01101010111100001010101
6.
这个函数是f(x,y,y)=xy⊕xz⊕yz
7.
a.我们只交换S中的元素,并且交换一个置换的元素会产生另一个置换。
b.SSL和WEP,以及其他许多地方。
8.
a.根据提示,界限是216*256=21700
b.它给出了一个键流序列在他必须重复之前的最大可能长度,并且如果键流重复,有严重的问题,当然,可能存在短周期,所以大的状态空间是不够的,但却是必要的。
9.实现RC4算法。假定密钥包括如下7个字节: 0x1A、0x2B、 0x3C、 0x4D、 0x5E、 0x6F和0x77。针对下面每一项,请给出以16x16数组形式表示的查找表S,其中每个数组元素都以十六进制表示。
a.请列出初始化阶段完成以后的排列S以及索引下标i和j。
b.请列出密钥流的前100个字节生成以后的排列S以及索引下标i和j。
c.请列出密钥流的前1000个字节生成以后的排列S以及索引下标i和j。
答:
a.初始化阶段完成以后的排列S以及索引下标i和j,
4c 46 51 0e 36 aa 27 24 14 00 70 80 42 7f a7 a9
8e 94 0c 7d 7b 37 78 be af o9 c0 9b e2 0d 3c 6c
04 ed 1f b8 a2 68 db 3f d6 76 ba bc c2 d5 3b ff
39 2e 4e bd fa 18 b2 b1 86 6b fc 1e 73 5b 75 35
1a 13 d7 ad 74 66 f7 b3 ac fb 07 ab e3 41 77 57
53 84 98 e8 dd 31 11 a1 d2 16 82 72 f9 6a 40 33
8c c4 99 02 cf 81 dc 5e 9c 5a b4 22 c1 5f cc 0b
56 30 c7 7c 7a 9a 10 cd 4d 83 65 7e ee ce 71 34
c8 62 fd 49 f4 9f bf 2a 8f 6d 1c 0a c9 ef e4 b9
06 d8 3d 3a bb a8 b5 a4 c3 43 52 4b a0 05 a5 93
90 ae 48 d4 a6 2d 6f a3 63 e1 8a 8d b0 5d b6 23
ea 60 44 69 92 17 2f 0f 50 2b f5 f6 32 b7 29 01
45 12 59 26 d3 c6 87 d9 e5 de 47 5c 6e cb 1d 58
08 4f eb da 55 89 85 f0 e6 e7 f1 c5 03 f8 d0 38
d1 fe e0 67 88 9d 25 ca ec 8b 19 21 15 28 f3 97
79 20 df 91 61 4a 54 1b e9 9e 3e f2 64 2c 96 95

b.密钥流的前100个字节生成以后的排列S以及索引下标i和j,
4c f7 a4 2d c5 41 c4 3f 88 14 f9 55 70 ba 73 4e
7c 3b 1a 42 ad 4f 6c 37 c8 6d fb 0c 87 da 9d 04
d5 66 bc 67 aa 28 98 94 f8 e8 a8 c2 ab 00 fc 82
3a 12 6b 6e e2 d0 06 13 d9 3c 72 e3 91 31 26 e9
7d 75 5b b3 f6 78 5e 52 45 af 2a 6f d3 9f 11 0f
dd e4 e5 a0 ed 77 8c 97 2e f0 85 08 53 7a 92 ca
7b b0 93 ae 56 81 dc 46 9c 5a b4 22 c1 5f cc 0b
cf 30 c7 8e 6a 9a 10 cd 4d 83 65 7e ee ce 71 34
c0 62 fd 49 f4 a2 bf 07 8f 09 1c 0a c9 ef 84 b9
b2 d8 3d 39 bb 7f b5 51 c3 43 d7 4b 76 05 a5 99
90 02 48 d4 a6 Oe 1f a3 63 e1 8a 8d 27 5d b6 23
ea 60 44 69 40 17 2f 57 50 2b f5 74 32 b7 29 01
ac d2 59 b1 1e c6 fa 86 db de 47 5c bd cb 1d 58
24 be eb 0d 80 89 ff 16 e6 e7 f1 36 03 d6 18 38
d1 fe e0 b8 9b a9 25 33 ec 8b 19 21 15 68 f3 a1
79 20 df a7 61 4a 54 1b 35 9e 3e f2 64 2c 96 95
c.密钥流的前1000个字节生成以后的排列S以及索引下标i和j,
aa 9a ea 7d 30 0a 21 e3 c8 e9 66 cf 5a f6 f5 72
31 c3 d3 3f a9 75 c6 a1 8f 8a c7 3c 77 ee a0 d6
c9 bc f1 0b ed fc 3b fb 7e 13 7c 95 fd 39 b9 98
e6 03 4e 05 65 63 ff 7b 0c 27 93 dd da 1d 3a fa
e7 73 ce 51 b1 89 86 3d 01 46 52 df 90 a8 8d 5b
b4 48 e1 02 2f d1 60 26 d4 b0 74 11 10 9e 69 f7
d9 9b e2 0f b6 96 2b 9d 22 29 d5 94 cb 6e 62 eb
80 42 20 4d 3e 38 6b 44 fe d0 91 14 2e 34 1f 6f
84 41 59 b5 5f 4b 47 78 cd ad 64 12 00 92 e0 36
db 57 5c 7f d8 1e cc 50 d2 0d 8b a4 b2 37 e5 f2
19 87 bf 06 53 4c 33 88 07 f4 18 a3 c5 c2 9c 35
e4 82 1c b7 49 ca 2d 6d 4a a2 c4 a7 dc de 17 ae
32 f3 58 71 28 7a 16 5e 45 67 6c 70 ef 40 6a 09
a5 ab 97 1a 83 bb be 76 c1 1b 2c 04 43 d7 15 ba
9f 23 ac ec e8 56 f0 25 24 a6 b8 f8 4f 68 55 99
0e 5d 2a 79 54 61 b3 81 bd 8c f9 85 08 af 8e cO
10.假设Trudy有一条用RC4加密算法加密的密文消息一详见图 3-2和图3-3。对于RC4算法,其加密公式由ci=pi○+ki给出,其中ki是密钥流的第i个字节,pi是明文消息的第i个字节,而ci是密文消息的第i个字节。假如Trudy知道第一个密文消息字节和第一个明文消息字节,也就是说,Trudy 知道c0和p0。
a.请证明Trudy能够确定密钥流的第一个字节k0。
b.请证明Trudy能够将c0替换为c0’,其中,c0’能够解密成Trudy所选择的任何一个字节,比如p0’。
c.假如CRC算法(见参考文献[326])用于检测传输中的错误。那么,Trudy 在b中的攻击仍然能够成功吗?请给予说明。
d.假如这里使用了基于密码学技术的完整性校验(比如MAC或HMAC中的一种,抑或使用数字签名)。那么,Trudy 在b中的攻击仍然能够成功吗?请给予说明。
答:
a. k0 = c0○+p0。
b.将c0替换为p0’○+ k0 = p0’○+ (c0 ○+ p0) 。
c.能成功,Trudy需要更改CRC以匹配。
d.不能成功。
11.这个问题针对的是Feistel密码结构。
a.何谓Feistel密码结构,请给出其定义。
b.请问,DES是Feistel密码结构吗?
c.请问,AES是Feistel密码结构吗?
d.为什么说TEA(Tiny Encryption Algorithm)算法“几乎”是Feistel密码结构呢?
答:
a.Feistel 密码结构,在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 为名,而Horst Feistel 本人是一位物理学家兼密码学家,在他为 IBM 工作的时候,为Feistel 密码结构的研究奠定了基础。很多密码标准都采用了Feistel 结构,其中包括DES。
b.是。
c.不是。
d.因为TEA用“+”和“-”代替○+。
12. 请考虑含 4 轮运算的 Feistel 密码方案。据此考虑,若明文表示为 P=(L0, R0),对应的密 文表示为 C=(L4, R4)。依据 L0、R0 以及子密钥,对于如下每一个轮函数,请问密文 C 分别是什么?
a. F(Ri-1, K)=0
b. F(Ri-1, Ki)=Ri-1
c. F(Ri-1, Ki)=Ki
d. F(Ri-1, Ki)=Ri-1⊕ Ki
13. 在单独的一轮计算中,DES 算法同时运用了扰乱和扩散原则。
a. 请给出在 DES 算法的轮运算中对扰乱原则的应用。
S盒。
b. 请给出在 DES 算法的轮运算中对扩散原则的应用。
每一次置换。
14.
答:
a.64
b.64
c.56
d.48
e.16
f.8
g.6
h.4
15.
答:末置换是初始置换的逆过程,des最后一轮,左右两半部分并未进行交换,而是两部分并未进行交换,而是两部分合并成一个分组作为莫置换的输入。
16.
答:请回顾本章讨论的对双重DES加密算法的攻击。假定我们将双重DES加密算法的定义换成C=D(E(P,K),K2),请描述针对这个加密算法的中间人攻击。
答:中间攻击人必须要找到K1和K2满足E(C,K2)=E(P,K1),其他与双重DES加密算法攻击一样。
17.
请回顾本章之前提到的,对于分组密码加密方案,由密钥分配算法基于密钥K来确定每一轮的子密钥。假设K=(kok1…k55)是56位的DES密钥。
a.依据密钥的各位ki,请分别列出16轮DES 算法的各个子密钥K1,K2,… K16的48位二进制串。
b.做一张表,要包含所有的子密钥数量,而且其中每一个密钥位ki都要被使用到。
c.请问,你是否能够设计DES 的密钥分配算法,其中每一个密钥位被利用的次数要相等。
a.
k1 8 44 29 52 42 14 28 49 1 7 16 36 2 30 22 21 38 50 51 0 31 23 15 35
19 24 34 47 32 3 41 26 4 46 20 25 53 18 33 55 13 17 39 12 11 54 48 27
k2 1 37 22 45 35 7 21 42 51 0 9 29 52 23 15 14 31 43 44 50 49 16 8 28
12 17 27 40 25 55 34 19 24 39 13 18 46 11 26 48 6 10 32 5 4 47 41 20
k3 44 23 8 31 21 50 7 28 37 43 52 15 38 9 1 0 42 29 30 36 35 2 51 14
53 3 13 26 11 41 20 5 10 25 54 4 32 24 12 34 47 55 18 46 17 33 27 6
k4 30 9 51 42 7 36 50 14 23 29 38 1 49 52 44 43 28 15 16 22 21 45 37 0
39 48 54 12 24 27 6 46 55 11 40 17 18 10 53 20 33 41 4 32 3 19 13 47
k5 16 52 37 28 50 22 36 0 9 15 49 44 35 38 30 29 14 1 2 8 7 31 23 43
25 34 40 53 10 13 47 32 41 24 26 3 4 55 39 6 19 27 17 18 48 5 54 33
k6 2 38 23 14 36 8 22 43 52 1 35 30 21 49 16 15 0 44 45 51 50 42 9 29
11 20 26 39 55 54 33 18 27 10 12 48 17 41 25 47 51 33 4 34 46 40 19
k7 45 49 90 22 51 8 29 38 44 21 16 7 35 2 1 43 30 31 37 36 28 52 15
24 6 12 25 41 40 19 4 13 55 53 34 3 27 11 33 46 54 48 17 20 32 26 5
k8 31 35 52 43 8 37 51 15 49 30 7 2 50 21 45 44 29 16 42 23 22 14 38 1
10 47 53 11 27 26 5 17 54 41 39 20 48 13 24 19 32 40 34 3 6 18 12 46
k9 49 28 45 36 1 30 44 8 42 23 0 52 43 14 38 37 22 9 35 16 15 7 31 51
3 40 46 4 20 19 53 10 47 34 32 13 41 6 17 12 25 33 27 55 54 11 5 39
k10 35 14 31 22 44 16 30 51 28 9 43 38 29 0 49 23 8 52 21 2 1 50 42 37
48 26 32 17 6 5 39 55 33 20 18 54 27 47 3 53 11 19 13 41 40 24 46 25
k11 21 0 42 8 30 2 16 37 14 52 29 49 15 43 35 9 51 38 7 45 44 36 28 23
34 12 18 3 47 46 25 41 19 6 4 40 13 33 48 39 24 5 54 27 26 10 32 11
k12 7 43 28 51 16 45 2 23 0 38 15 35 1 29 21 52 37 49 50 31 30 22 14 9
20 53 4 48 33 32 11 27 5 47 17 26 54 19 34 25 10 46 40 13 12 55 18 24
k13 50 29 14 37 2 31 45 9 43 49 1 21 44 15 7 38 23 35 36 42 16 8 0 52
6 39 17 34 19 18 24 13 46 33 3 12 40 5 20 11 55 32 26 54 53 41 4 10
k14 36 15 0 23 45 42 31 52 29 35 44 7 30 1 50 49 9 21 22 28 2 51 43 38
47 25 3 20 5 4 10 54 32 19 48 53 26 46 6 24 41 18 12 40 39 27 17 55
k15 22 1 43 9 31 28 42 38 15 21 30 50 16 44 36 35 52 7 8 14 45 37 29 49
33 11 48 6 46 17 55 40 18 5 34 39 12 32 47 10 27 4 53 26 25 13 3 41
k16 15 51 36 2 49 21 35 31 8 14 23 43 9 37 29 28 45 0 I 7 38 30 22 42
26 4 41 54 39 10 48 33 11 53 27 32 5 25 40 3 20 24 46 19 18 6 55 34

b.
bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
count 14 15 12 14 14 14 13 14 13 14 13 14 13 14 14 15 13
bit 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
count 14 14 14 13 14 13 14 13 13 14 15 13 15 14 13 15 13
bit 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
count 13 15 12 13 15 13 14 15 13 15 14 12 15 13 13 15 12
bit 51 52 53 54 55
count 13 15 13 14 14
c.
子密钥位数为16x48= 768,密钥位数为56。因为768不能被56整除,所以不可能每一个键位使用完全相同的次数。但是,可以使用每个密钥位13或14次,这比DES的实际计数更一致
18.
请回顾本章之前讨论的针对双重DES算法的中间人攻击。假设选择明文是可行的,那么这种攻击要破解112位密钥,耗费的工作量与采用穷举式密钥检索攻击来破解56位密钥所需的工作量大体相当,也就是说,大约是2^55。
a.如果我们仅仅有已知明文可用,而不可以选择明文,那么要实施对双重DES算法的攻击,我们需要的工作量有什么变化吗?
b.对于双重DES 算法,已知明文版本的中间人攻击的实施要素是什么?

攻击是相同的,只是每次进行攻击时都需要重新计算查找表。
因为我们不能将这项工作摊销,我们必须涵盖计算查寻表的工作。这给了我们一个256+255≈2^56工作系数。所以,如果我们只知道纯文本而不知道选择纯文本,平均起来,要做两倍的工作。
19.
题目:AES算法包括4个函数,分为3个层次。
在这4个函数中,哪些主要着眼于扰乱原则,哪些又主要着眼与扩散原则?请回答并给出相应理由。
在这3个层次中,哪些主要着眼于扰乱原则,哪些又主要着眼于扩散原则?请回答并给出相应理由。
Bytesub函数主要着眼于扰乱原则,因为它通过查找表来进行替换,混淆了明文和密文之间的相关性;ShiftRow函数主要着眼于扩散原则,因为它通过循环移位来湮灭了统计特性;MixColumn函数着眼于扰乱原则,和Bytesub函数一样;AddRoundkey函数主要着眼于扰乱原则,因为它通过加密扰乱了明文
非线性层和密匙添加层主要着眼于扰乱原则;线性混合层主要着眼于扩散原则。
20.
实现TEA(Tiny Encryption Algorithm)算法。
a.请使用你的TEA算法加密如下64位明文分组:
0x0123456789ABCDEF
使用如下128位密钥:
0xA56BABCD0000000FFFFFFFFABCDEF01
请解密密文,验证你是否能够得到原始的明文信息。
答:

b.请使用a中的密钥,分别采用本书讨论的三种分组密码加密模式(ECB模式、CBC模式以及CTR模式)来加密和解密下面的消息:
Four score and seven years ago our fathers brought forth on this continent,a new nation,conceived in Liberty, and dedicated to the proposition that all men are created equal.
答:
1.ECB:电子密码本模式
特点:简单,效率高,密文有规律,容易被破解
将最后一个明文分组填充满8字节
2. CBC:密码块链模式
特点: 密文没有规律, 经常使用的加密方式
最后一个明文分组填充满8字节
需要一个初始化向量:负责加密的人的提供一个数组,数组的长度:与明文分组相等,加解密使用的初始化向量值必须相同
3.CTR:计数器模式
特点: 密文没有规律, 明文分组是和一个数据流进行的按位异或操作, 最终生成了密文。不需要初始化向量。
21.

a. 对于本章所讨论的用途,按顺序选择IV即可。
b. 如果lv较小,按顺序选择Is可能是有利的,因为IV重复的时间较长,这是一个问题(特别是在CTR模式下)。
23.

计数器模式加密的公式如下:
C_i=P_i⨁E(IV+i, K)
假设我们换用如下公式:
C_i=P_i⨁E(K, IV+i)
如此一来,是否安全?请说明为什么?
答:不安全。因为初始化向量IV是无需保密的分组,从而攻击者可以通过这个已知明文的分组来确定密钥K,然后解密所有的分组。
25.
假如我们按照如下规则,使用分组密码加密方案实施加密。
C0=IV⊕ E(P0, K),C1=C0⊕ E(P1, K),C2=C1⊕E(P2, K),···
请问相对应的解密规则是什么?
答:
解密规则是:
P0=D(C0⊕IV,K),Pi=D(Ci⊕Ci-1,K)
请给出这种加密模式相比 CBC加密模式的两个安全弱点。
答:
第一、这种方法并不比ECB模式更好,因为可以将Ci⊕Ci-1计算为
获取ECB模式数据
第二、此模式具有与ECB模式相同的所有问题。
26.假设有10个密文分组以CBC模式进行加密。证明这里可能存在复制-粘贴攻击。也就是说,请证明,确实存在重新安排这些分组的可能,而且这种分组的重排使得一些分组消息仍能够正确地被解密,即便这些分组事实上已经不是正确排序的了。
只要两个连续的密文块相邻,对应的明文块就正确,即使它是无序的。例如,C8,C9,C1,C2。将产生X,P9,Y,P2。
27.请说明,如何对以CBC模式加密的数据实施随机访问。相比CTR加密模式,对于随机访问,使用CBC加密模式是否有什么明显的劣势?
如果你知道密钥,你可以得到P_i,只要你知道C_i和C_(i-1),所以,随机访问是可能的,只要你有权访问当前和以前的密文块。但是,如果您想用P_i^’替换纯文本P_i,那么CBC模式是不切实际的——您需要对所有内容进行解密和重新加密。
28.CTR加密模式使用分组密码加密方案生成密钥流。请再设计一种不同的方案,使用分组密码加密方案作为流密码生成器。你的方法是否支持随机访问?
答:一个简单的修改是C_i=P_i⨁E(IV⨁i,K),这个方法支持随机访问。另一个修改是P_i⨁E(IV⨁C_(i-1),K),这可以用于随机访问解密,但如果我们想重新加密新的明文则不行。
29.
假设式(3.8)中的密文以CBC模式加密,而并非以ECB模式加密。如果 Trudy认为使用的是ECB加密模式,并尝试与前文讨论的同样的复制-粘贴攻击,那么哪个分组将会被正确解密?
答:0,1,4将被正确解密
30.
请从本书网站上下载文件Alice.bmp和Alice.jpg。
a. 使用TEA加密算法,以ECB加密模式加密Alice.bmp,并保留前10个分组不加密。观察加密后的图像,你看到了什么?请对该结果予以说明。
答:它应该和书中的例子一样。ECB模式存在非常严重的安全问题,结果就是在实践中从来不会使用这种方式。结果仅仅取决于使用了ECB加密模式这一事实,而与具体加密算法细节无太大关系。
b. 使用TEA加密算法,以ECB加密模式加密Alice.jpg,并保留前10个分组不加密。观察加密后的图像,你看到了什么?请对该结果予以说明。
答:jpg格式是压缩的,看起来相同的部分实际上存储在不同的位中。因此,看起来相似的块是不同的,所以它们加密到不同的块,即使在ECB模式下。
31.假如Alice和Bod决定一直使用相同的初始化向量IV,而不是随机地选择初始化向量IV。
a.请讨论,在使用CBC加密模式的情况下,这会产生哪些安全问题?
b.请讨论,在使用CTR加密模式的情况下,这会产生哪些安全问题?
c.如果一直使用相同的初始化向量IV,那么CBC加密模式和CTR加密模式,哪个会更安全一些?
答:a. 相同的初始明文产生相同的初始密文。而且一旦消息不同,即使明文在某些点上达成一致,密文也将与该点不同。
b.相同的明文产生相同的密文。
c.CTR更糟糕,因为每一次都使用相同的键流(直到键K改变),这至少和多次使用一次性密钥一样糟糕。
32.假设Alice和Bob使用CBC加密模式实施加密。
a.如果他们总是使用固定的初始化向量IV,相对于随机选择初始化向量IV,那么会产生什么安全问题?请给予说明。
b.假如Alice和Bob依顺序选择初始化向量IV,也就是说,他们第一次使用0作为初始化向量IV,然后使用1作为初始化向量IV,接下来再使用2,依此类推。相比随机地选择初始化向量IV,这会产生什么安全问题?
答:
以相同明文开头的两条消息将产生相同的明文,直到消息不同为止。
在这种情况下不会产生安全问题。
33.请给出运用分组密码加密方案加密一部分分组数据的两种思路。你的第一个思路应该使得密文的长度是完整的分组长度,而你的第二个思路则不要考虑扩展数据。讨论一下这两种思路各自可能存在的安全问题。
答:可以填充部分块,将其填充到整个块的大小。然而,它是必须能够删除填充解密时,这不是完全平凡。如果不想扩展数据,可以在任何finalpartial块上使用CTR模式。另请参阅施奈尔的应用密码学中有关“密文窃取”的讨论,它适用于ECB或CBC模式。
34.请回顾前文所述,消息认证码MAC源自CBC 加密模式的剩余,也就是说,MAC是数据以CBC模式加密时的最后一个密文分组。假定数据为X、密钥为K以及初始化向量为IV,定义函数F(X)为X的MAC值。
a.请问,F是个单向函数吗?也就是说,给定F(X),是否就能够确定出X?
b.请问,F具备抗冲突能力吗?也就是说,给定F(X),是否能够找到值Y,使得F(Y=F(X)?
答:
a.假设X是一个单独的块,函数F(x)是单向的,因为我们无法在没有密钥的情况下获得X。(假设密码是安全的)。那也就是说,我们需要解密或者破解密码以从F(X)中获得X。如果X是多个块的话,那是很难确定X的。
b.没有密钥,很难找到满足条件的值。
35.假设Alice使用DES加密算法来计算消息认证码MAC。然后,她发送明文消息、初始化向量IV以及相对应的MAC给Bob。如果Trudy在Bob接收到该消息之前修改了明文中的某个分组,那么,请问Bob觉察不到这种数据变更的可能性有多大呢?
答:分组密码是将明文数字序列按照固定长度分组,并且用同一个密钥和同一个加密算法逐组加密,从而将各个明文分组变换成为密文分组的密码。具有S盒和P盒两种规则。
其中S盒是混淆,使得密文和对应明文和密钥之间的关系足够复杂,以至于密码分析者无法利用这种关系。P盒是扩散,使得每一个明文bit和密钥bit影响尽可能多的密文bit,用来隐藏明文的统计特性和结构规律。
DES是每8位明文进行一次加密的,而DES在每8位明文的加密中有着很好的雪崩效应(就是对明文或者密钥改变1bit都会引起密文的巨大不同)。但是这也决定了DES对大量明文同时加密时雪崩效应不明显。
因此,修改一组数据能否产生较大的雪崩效应使得消息变化明显,取决于明文的数据量。从题目来看,Bob察觉不到数据变更的可能性较大。
36.
Alice有4个明文分组,分别是Po、P1、P2、P3,她使用CBC加密模式加密这些分组后 得到Co、 C、C2、C3。然后,她发送初始化向量IV和密文给Bob。当Bob接收到密文时,他就计划着手验证消息的完整性,方式如下:他首先实施解密得到假定的明文消息,然后他再次使用CBC加密模式重新加密明文以及接收到的初始化向量IV。如果他获得了与最后的密文分组相同的C3,他就可以信赖明文消息的完整性。
a.假设Trudy将分组C1的值改为X,而保持其他的分组消息和初始化向量IV不变。Bob能够检测到该数据的完整性缺失吗?
b.假设Trudy将分组C3的值改为Y,而保持其他的分组消息和初始化向量IV不变。Bob能够检测到该数据的完整性缺失吗?
c.请问Bob检测数据完整性的方法是否安全呢?
答:
不,因为我们只是,解密然后用相同的密钥重新加密,所以我们会得到我们开始的东西,所以不会检测到数据完整性的缺失


37.Alice使用CBC加密模式加密4个明文分组,分别为P0、P1、P2、P3,然后她将结果密文分组C0、C1、C2、C3和初始化向量Ⅳ发送给Bob。假如Trudy有能力在 Bob接收到密文之前修改任何密文分组的内容。如果Trudy知道P1,那么证明她能够用X来替换P1。提示:先确定出C,使得如果Trudy使用C ̃来替换C0,那么当Bob解密C1时,他将得到的是X而不是P1。
答:Trudy应该用C ̃=C_0⊕P_1⊕X替换 C_0
38、假设我们使用密钥K以CBC模式加密数据,并且使用密钥K来计算消息认证码MAC:K⊕X,其中的X是已知的常数。假如将被加密的密文和消息认证码MAC 从Alice发送给Bob,证明Bob将能够检测到复制-粘贴攻击。
解答:
CBC模式具有一个特点,那就是在加密过程中出现的错误会一直传播到最后,在Alice传播消息给bob的时候,如果信息受到了复制-粘贴攻击,那么从bob接收到的信息来看,将会出现MAC解密结果不正确的问题,因为在解密时,受到攻击的信息一定会有一个块解密不正确,这将导致最后的MAC出现错误。所以这个可以成为bob发现是否被攻击的依据。
39.假设Alice有4个明文分组,分别为P0、P1、P2、P3。她使用密钥K1来计算消息认证码MAC,再使用密钥K2采取CBC 加密模式对数据实施加密获得C0、C1、C2、C3。Alice发送初始化向量Ⅳ、密文消息以及消息认证码MAC给Bob。Trudy截获了消息并使用X替换C1,于是Bob接收到了初始化向量IV、C0、X、C2、C3,以及消息认证码MAC。Bob想要尝试验证该数据的完整性,通过先解密数据(使用密钥K2),再基于解密获得的假定明文来计算MAC(使用密钥K1)。
a.请证明Bob将能够检测出Trudy 的篡改。
b.假设Alice和 Bob仅仅共享单独的对称密钥K。他们已经协商好,令K1=K,K2=K⨁y,这里Y对于Alice、Bob和Trudy均为已知。如果Alice和 Bob使用与上述完全相同的框架,那么这种情况下是否会有安全问题,会产生什么安全问题呢?
答:1.当Bob解密时,块1和块2将是不正确的,然后当计算MAC时,Bob将使用不同的密钥重新加密,因此计算出的MAC几乎肯定与接收到的MAC不同,并且将检测到篡改。
2. 只要密钥不同就不会产生安全问题。
40.假设Alice和Bob有两个安全的分组密码加密方案可用,比方说加密方案A和加密方案B。其中,方案A使用64位密钥,而方案B使用128位密钥。Alice 倾向于使用方案A,而Bob则希望利用128 位密钥获得更进一步的安全支持,因此他坚持使用方案B。作为折中方案,Alice 提议他们使用方案A加密,但是要对每个消息加密两次,分别使用两个相互独立的64位密钥。假如针对这两个加密方案均无捷径攻击可供利用。请问,Alice建议的解决方案是否与Bob的方案一样安全呢?
答:不一样。在使用密码A的双重加密上有一种直接的中间相遇攻击,假设我们可以存储一个大小为264的查找表,该密码的工作系数约为264。相比之下,破解密码B的预期工作量是2^127。但是,请注意,此攻击需要已知的明文。
41.假设Alice拥有一个安全的分组密码加密方案,但是该方案仅仅使用8位密钥。为使这个加密方案“更加安全”,Alice 生成随机的64位密钥K,并迭代执行该加密方案8次。也就是说,她按照如下规则对明文P实施加密:C= E (E (E (E (E (E (E (E(P, Ko), K), K2), K3), K4), K5), K6), K7)其中,Ko, K1…,K7,分别是64位密钥K的各个字节。
假如已知明文可用,请问:要想确定密钥K需要多少工作量?
假如是仅密文攻击,请问:要想破解这个加密方案,需要多少工作量?
答:a.使用中间相遇攻击需要大约32位工作量。
b.使用1位密钥迭代密码,需要64位工作量。
42.假设我们给出使用168位密钥的三重DES(3DES)的定义如下:
C=E(E(E(P,K),Kz),K3)
假设我们能够计算并存储大小为26的表,而且还可以选择使用明文攻击。请证明,这个三重DES(3DES)并不比常规的3DES更安全,常规的三重DES仅仅使用112位的密钥。提示:可以使用模拟针对双重DES 算法的中间人攻击。
解:
令P= E(P,K1)
找到x=D(C,K’)
找到一个K使得X=E(P’,K)接着就有D(c.k)=E(P’,K)
其中密钥k和K都是已知的,对等式两边同时用密钥k’解密:
c=E(E(P’,K),K’)
最后令K2=K和K3=K’,就可以得到P’=E(P,K1),那么3DES问题就变成了DES问题,所以这个3DES的安全性不比常规的3DES好。
43.假定你知道消息认证码MAC的值X和用于计算MAC值的密钥K,但是你不知道原始消息是什么(将这个问题与第5章的思考题16进行对比,会很有启发意义)。
a.请证明你能够构造消息M,也能够为其计算生成MAC值等于X。注意,我们假设
你是知道密钥K的,并且你要用密钥K来计算上述两个消息认证码MAC。
b.请问,会有多少个你可以自由选择的消息M?
a.选择IV, Po, P,…Pn-2, CBC模式计算Cn-2。然后,我们希望E (Pn-1⊕ Cn - 2 K) = MAC, MAC是给定的MAC值。因为我们知道K,我们选择Pn-1 = D (MAC) K)⊕ Cn-2。
b.除了最后的明文块,你可以选择任何内容。

猜你喜欢

转载自blog.csdn.net/xuanyulevel6/article/details/126067826
今日推荐