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

湘潭大学信息安全课作业答案5
教师:李澄清院长
整理自助好心的助教大哥—申哥。

  1. 正如本章所讨论的,一个加密哈希函数必须满足如下所有的特性:
    压缩
    高效
    单向
    抗弱碰撞性
    抗强碰撞性
    a假如有一个哈希函数不能够提供压缩特性,但是可以提供其他几个必备的特性。 请给出一个应用场景,其中加密哈希函数可以使用,但是我们这里提到的这个哈希函数就不能够使用。
    b问题同a,但是假设该哈希函数除了高效特性不具备之外,其他特性都具备。
    c问题同a,但是假设该哈希函数除了单向特性不具备之外,其他特性都具备。
    d问题同a,但是假设该哈希函数除了抗碰撞特性不具备之外,其他特性都具备。
    答:
    a使用这样的哈希功能进行数字签名是没有用的,因为你仍然需要签署一个大的消息。
    b这将使数字签名计算变慢。
    c书中网上竞标的例子将会失败。
    d当在数字签名中使用该散列时将失败。
    2.请论证如下关于加密哈希函数的陈述。
    具备抗强碰撞特性必然就能够具备抗弱碰撞特性。
    具备抗强碰撞特性并不一定就具备单向特性。
    答:
    假设h满足强抗碰撞性能,但是不满足弱抗碰撞性能。那么对于x_0和〖h(x〗_0),我们可以求出x_1使〖h(x〗_0)=〖h(x〗_1)。但是x_0和x_1违反了强抗碰撞假设。
    假设g是一个哈希函数,具有很强的抗碰撞能力(因此也具有较弱的抗碰撞能力),并且g产生一个n位的输出。设(a,b)为a与b的串接,然后定义哈希函数h为:
    h(x)={ █( (1,x) x是n的长度@(0,g(x)) 其他情况)┤
    那么h是抗碰撞的,但不是单向的。
    3.假如一个安全的加密哈希函数生成的哈希值是n位二进制长度。请说明,一个强力攻击如何才能够得以成功实施,其预计的计算开销是多少?
    答:
    如果想要攻击强大的抗碰撞能力,需要哈希2^(n/2)个随机输入,才能得以成功实施并发现冲突。
    4.在下列情况下,请预计可能会发生碰撞的次数?
    你的哈希函数生成一个12位二进制长的输出值,你要对1024个随机选择的消息进行哈希运算。
    你的哈希函数生成一个n位二进制长的输出值,你要对比个随机选择的消息进行哈希运算。
    答:
    a.如果哈希运算210条消息,那么大约220次比较。对于每212次比较,您期望找到一个冲突,因此预计可能会发生的碰撞次数为28。
    b.答案是m2/2n。
    5.假设力是一个安全的哈希函数,其生成n位二进制长的哈希值。
    a.请估算要执行多少次哈希运算,就必然能够找到一次碰撞?
    b.请估算要执行多少次哈希运算,就必然能够找到10次碰撞?也就是说,估算要 执行多少次哈希运算,才能够找到一组(X, Z,),使得h(Xi)=机Z,),其中i = 0,1,2,… ,9。
    c.请估算要执行多少次哈希运算,就必然能够找到m次碰撞?
    答:
    a.需要执行2^(n/2)次哈希运算。
    b.需要大约√10×2(n/2)次哈希运算。因为这个哈希数将导致10×2n的比较,并且对于每2^n的比较,都能找到一个碰撞。
    c.我们需要√10×2^(n/2)次哈希运算。注意,这意味着随着计算的散列数增多,查找冲突会越来越容易。
  2. 一个k-way 碰撞是指一个集合,其元素值为Xo, X1, · ·· .Xk-1,这些元素经哈希运算后生成的值相同,也即满足下式:
    h(x0) = h(x1) = … = h(xk-I)
    假设h 是一个安全的哈希函数,生成n 位二进制长度的哈希值。
    a. 请估算要执行多少次哈希运算,就必然能够找到一个k-way 碰撞?
    b . 请估算要执行多少次晗希运算,就必然能够找到两个k-way 碰撞?
    c. 请估算要执行多少次哈希运算, 就必然能够找到m 个互不相同的k-way 碰撞?
    答案:
    a.大约2^(n(k-1)/k)次计算,然后才能够找到一个k-way 碰撞
    b.大约2(1/k)∙2(n(k-1)/k) 次计算,然后才能够找到两个k-way 碰撞
    c.对于y哈希值,有大约yk个k-way比较。因此,为了找到m个k-way碰撞,需要计算m(1/k)∙2^(n(k-1))次。
  3. 请回顾在5.4 节讨论的对于数字签名的生日攻击。假如我们对哈希运算的设计进行如下修改:给定一个消息M, Alice 想要对其实施签名,她首先随机地选择R , 然后计算签名,如式: S = [h(M, R)]AJice• 再把(M, R, S)发送给Bob 。请问,这样能够防止上述攻击吗?为什么?
    答案:
    没有。Trudy可以简单地找到R’ 就比如h(i,R)=h(E,R’),其中I是原始信息,E是Trudy的信息。所以,对于Trudy来说,这实际上更容易,因为她不需要编造一堆等价的其他信息,因为她只是改变了随机信息。
    8 . 请考虑一个利用除数10011 进行计算的循环冗余校验码(CRC 码)。请找到10101011的两个碰撞。也就是说, 请找出两个其他的数值,使之能够生成与10101011一样的循环元余校验码总和。
    答案:
    11100111
    11110000
    9 . 请考虑一个利用除数1001 l 进行计算的循环冗余校验码(CRC 码头假如数据的值为11010110 , 而Trudy 想要将其值改变为111 忡忡气其中“ V 表示她并不关注这些一进制位上的值,并且她想要使得结果的校验码总和与原始数据的校验码总和相同。确定Trudy 一共会有多少个数值可用,都是哪些数?
    答案:
    2个
    11100011
    11110000
    10:对于图5-2所示的Tiger哈希算法的外层轮算法,请填写出其每一行中各二进制位的数值
    答:右边的箭头(键一览表)都表示512位的数量左侧的箭头表示(a,b,c)的192位,而中间全部表示64位。

令h为Tiger哈希函数,并令F为图5-2所示的Tiger哈希算法的外层轮运算。
a.对于M=(B: B2, B3), 其中每- -个B;都是512位二进制长,请列出类似于式(5.2)的表达式。
b.现在假设M=(B1 Be… Bn),其中每一个B都是512位二进制长,请证明h(M)= F(h(B1, B2… B…1), B,)。
答:a、h(M)=F(F(F(A,B1),B2),B3)
=F(F(h(B1),B2),B3)
=F(h(B1,B2),B3)
b、一般情况下,先进行简单归纳。
12 .
在本书的网站上,你可以找到一个程序,实现了笔者精心设计的所谓山猫哈希算法。这个哈希算法本质上是Tiger算法的一个缩小版本——Tiger 哈希算法生成一个192位二进制值的输出(相当于三个64位二进制的字长),而山猫哈希算法生成一个48位二进制的数值(相当于三个16位二进制的字长)。

答:a.对于12位二进制版本的山猫哈希算法,请找出一个碰撞。这里,你可以通过截取所得的48位二进制哈希值来获得一个 12位的二进制哈希值。请问,需要经过多少次哈希运算你才能够找出第一个12位二进制的碰撞?
b.请找出完整的48位二进制版本的山猫哈希算法的一个碰撞。
13.
Alice很喜欢使用Tiger哈希算法,该算法能够生成一个192位二进制的哈希值。但是,有一个特定的应用,Alice仅仅需要一个64位二进制的哈希值。请回答以下问题。这里,我们假定 Tiger哈希算法是安全的。
a.对于Alice来说,如果仅仅采用截取Tiger哈希函数输出值的方式,那么请问这种做法是否安全?或者换句话说,对于Alice来说,仅仅使用Tiger哈希算法的192位二进制输出的前64位,是否就可以了?请解释为什么。
b.对于Alice来说,以每三位二进制选取其一位的方式,来使用Tiger哈希函数的
输出,这是否是一个值得考虑的方案呢?请解释为什么。
c.对于Alice来说,利用Tiger哈希函数得到其输出的三个64位二进制字,再将其放在一起执行异或运算得到最后的输出,这个方案是否安全?请解释为什么。
答案:
可以。Tiger哈希算法中的每一个位置都是安全的,算法实现中使用了4个S-box,这4个S-box的每一个都将8位二进制位映射为64位。
值得考虑。Tiger哈希算法共包含24轮运算,这24轮运算可以看成是3个外层轮运算,每一个外层运算都包含了8个内层轮运算。
安全。因为哈希算法是一个所有位置都安全的算法。
14.
请考虑式(5.3)。
a.请证明:如果K、M和X的长度都是哈希函数分组长度(通常来说,是64字节)
的整数倍,那么等式成立。
b.对于其他长度的K,M和X的值,请问该等式是否成立?
c.请证明,对于任意长度的M,M和K的值,只要h(M)= h(M’),式(5.4)就成立。
答:a、 从F的定义可以清楚地看出,如果K,M和X都是倍数,这个函数就成立
b、 它可以在(K,M)是块长度的倍数的任何时候工作。
c、 待定
15.
请问,消息认证码MAC是否可以用作HMAC?也就是说,消息认证码MAC是;否具备HMAC所满足的所有特性?
答:MAC将提供与HMAC相同的完整性保护,但两者之间有细微差别。如果密钥已知,就很容易为MAC生成冲突,但是HMAC的情况并非如此。
16.假如你知道一个HMAC的输出是X,其密钥是K,但是你不知道消息M是什么。那么,请问你是否能够构造一个消息M,使用同样的密钥K,使得该消息的HMAC值等于X?如果可以,就请给出构造此类消息的一个算法。如果不能,就请说明为什么。请注意,我们假定你知道密钥K,并且,两次HMAC 的计算都使用同一个密钥K(将本思考题与第三章的思考题43进行对比,会有一定的启发意义)。
答:不能,因为哈希是单向的
17.请回顾在5.8.1节所讨论的网上竞价方案。
a.在这种方案中,一个赖以预防诈骗的安全哈希函数h应该具备什么样的-些特
性呢?
b.假如Charlie能确定Alice和Bob将提交的竞投价格必定会在$10,000和$20,000
之间。请描述- -种前向检索攻击,使得Charlie 可以基于Alice 和Bob两人各
自的哈希值,使用这种攻击手段确定Alice和Bob的竞投价格。
c.在b中所描述的攻击,是否会构成一个实际的安全问题?
d.对这个网上竞价过程进行什么样的改造,才能够防止类似b中所述的那种前向检索攻击呢?
答:
a 防止任何人根据相关信息确定出价和抗冲突性(防止任何人更改其出价)
b前向搜索-散列所有合理的出价,然后寻找给出相同出价的出价散列为Alice或Bob的出价
c 可以
d Alice可以选择一个随机值RA并提交h(A,RA),类似地其他竞标者提出价时,Alice必须提交出价A并随机填充RA。
18.请回顾在5.8.2节中所讨论的垃圾邮件减阻方案。
a.在这种方案中,一个赖以减阻垃圾邮件的安全哈希函数h应该具备些什么样的
特性呢?
b.在5.8.2节中,我们曾经讲到“消息M包含了发送者和目标接收者的电子邮件
地址,但是不包含任何其他额外的地址信息。”假定我们放宽这一条件,仅需
要消息M包含目标接收方的电子邮件地址。请找出一种针对这个改造的垃圾邮
件减阻系统的攻击,也就是说,请证明,在这个改造的方案下,垃圾邮件发送
者仍然能够发送垃圾邮件,而不需要做过多额外的工作。
答:
a.耐冲击性,防止具有相同散列的多封电子邮件。单向性,否则可以通过指定哈希然后确定一条消息。
b.“消息”可以包含多个电子邮件地址,在这种情况下,Trudy只需找到一个合适的R即可将消息发送到所有地址。
19.假如你有一个安全的分组加密方案,但是没有哈希函数。而且,也没有密钥可用。
为简单起见,假设这个分组加密方案的密钥长度和分组长度都等于n。
a.请问,假如你只需要对一个长度刚好为n位二进制长的分组执行哈希运算,那
么你如何将这个分组加密方案作为一个加密哈希函数来使用?
b.请问,当消息包括多个n位二进制长的分组时,你又如何将这个分组加密方案
作为一个加密哈希函数来使用?
答:
A.定义h(B)= E(X,B),其中X是一些非秘密常数(e.g, 0),被散列处理的块会被用作密钥。
B. 如果有一个以上的块,则可以将消息划分为n位的块,其中n是块密码密钥的长度,然后迭代的加密块。
例如,假设消息是3个块:Bo,B1,B2。 然后用块定义h(Bo,B1,B2) = E(E(E(X,Bo),Br),Br)的密码,其中X是一些非秘密常数。 这是安全的,因为确定“key”很难,甚至如果攻击者知道明文和密文。 如a部分所述,任何初始常数可用于。 同样,CBC的“加密”也可以工作,其中消息被用作key,明文是一个常量。 在任何情况下,分组密码都必须具有足够大的块大小,以至于无法进行强力碰撞攻击。
20.假设Alice想要为Bob加密一条消息, 该消息包含三个明文分组,分别为Po, P1和P2。Alice 和Bob都能够访问一-个哈希函数和一一个共享的对称密钥K,但是没有加密方案可用。那么请问,如何能够做到: Alice 可以安全地加密该消息,并且Bob能够顺利地对其进行解密。
答:
加密方式:Co= Pθ K, C1 = P1θh(K),C1 = Pθh(h(K)).
但是这是不健壮的, 因为如果Trudy 知道 Pi,她就可以轻松的决定 Pj 因为 allj≥i.
21. Alice 的计算机需要访问-一个对称密钥K。请考虑如下两种生成和存储密钥KA的方
(i)通过令KA = h(Alice的口令)来生成密钥。密钥并不存储在Alice的计算机上, 相反,当需要使用Kg时,Alice 输入她的口令,于是密钥实时生成。
(ii)初始随机生成密钥Kx,然后将其加密,存储值E(Kx, K), 其中K= h(Alice的口令)。当需要使用Ka时,Alice输入她的口令,该口令被执行哈希运算生成K,然后再使用K来解密密钥K。
请给出方案(i)相对于方案(ii)的一一个 显著优势,请再给出方案(ii)相对于方案(i)的个显著优势。
答:方法(i)不需要存储任何东西。方法(i)使用更强的,密钥加密数据,使得直接攻击密文更加困难。当Alice想要更改密码时,方法(i)也可能是有利的,因为不需要解密/重新加密数据。
22.
假设Sally(一个服 务器的名字)需要访问三个对称密钥,-一个对称密钥为Alice服 务,另一个对称密钥为Bob服务,第三个对称密钥为Charlie 服务。那么,Sally可以生成对称密钥KA,Kp和Kc,并将它们存储在-一个数据库中。另-一个可选的 方案是密钥分散化(key diversifcation),即Sally先生成并存储一一个单- -的密钥 Ks。 然后,在需要时,Sally 再通过计算Ks = h(Alice, Ks)来生成密钥K,,密钥Kp和Kc的生成方式与Ks类似。相对于在数据库中存储密钥的方案而言,请指出这种密钥分散化方案的一个明显的优势和-一个显著的劣势。
答:关键的多样化的明显优势是几乎不需要存储。一个数据库的可能优点是没有单点故障。然而,如果有人能恢复主密钥,他们可能也能恢复数据库。另一方面,如果数据库是分布式的(就像它在GSM上一样),那么它可能是分布式的。最好使用数据库。在某些情况下,更改用户的密钥可能更容易一些使用一个数据库。
23.如果函数T满足如下特性,那么我们称该函数是增量函数:如果将该函数T应用于M,随着M的变化,其对应的函数值的变化速度与M自身的变化速度成正比。假设我们有一个增量的哈希函数H。
a.请讨论一个应用场景,在这个场景中,使用上述增量哈希函数H将会优于使用标准的(非增量的)哈希函数。
b. 假如消息M仅能够通过增补填充二进制位来修改,也就是说,对该消息的修 改M,可以表示为M=(M, x),其中x为某些确定的值。那么,给定加密哈希函数h,请基于h定义增量的加密哈希函数H。
答:a. 当你有大量的数据,只是稍微改变,增量散列将优先考虑。例如,假设您在您的硬盘上散列所有文件驱动作为一种检测错误的方法。假设您稍后想要散列所有文件同样,但应该只有一个文件发生了变化。使用非增量散列,重新-计算哈希的代价将与原始哈希计算一样高,而增量哈希的代价只与计算修改后的哈希值相同文件。
b. 假设块大小合适,设H(M’)= F(H(M),X)其中Fis哈希H的“round function”。
24.假如 Bob和 Alice想要通过网络来掷硬币。Alice提出了如下协议:
(i) Alice随机地选择一个值XE{0,1}。
(ii)Alice生成一个256位二进制的随机对称密钥K。
(iii)Alice使用AES加密方案,执行计算Y=E(X,R,K),其中R包含了255个随机选择的二进制位。
(iv)Alice将Y发送给Bob。
(v) Bob猜测一个值Z∈{0,1},并将其告诉Alice。
(vi)Alice将密钥K给Bob,Bob执行计算(X,R)= D(Y,K)。(vii)如果X=Z,那么Bob获胜,否则,Alice获胜。这个协议并不安全。
a.请说明Alice 如何才能够作弊?
b.请使用一个加密哈希函数h,修改这个协议,使得Alice无法作弊。
答:a.一旦Alice知道Bob的猜测Z,她就会尝试不同的“K”键,直到找到一个为止,其中W=D(Y,K’)的第一位不是Z。然后她将“key”K’发送给Bob。
b、Alice把h(K)和Y一起发送,所以她不能换钥匙。也就是说,密钥的散列将Alice提交给K,因为K是随机的,所以不存在前向搜索攻击。
25.MD5哈希算法被认为是已经破解了的,因为已经发现了碰撞,并且,事实上对该25.MD5哈希算法被认为是已经破解了的,因为已经发现了碰撞,并且,事实上对该算法,在一台PC上花上几秒钟就能构造一个碰撞(见参考文献[244])。请找出以下两条消息中所有不同的二进制位12。请验证这两条消息的MD5哈希值结果相同。
00000000 dl 31 dd 02 c5 e6 ee c4 69 3d 9a 06 98 af f9 5c
00000010 2f ca b5 87 12 46 7e ab 40 04 58 3e b8 fb 7f 89
00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 71 41 5a
00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd f2 80 37 3c 5b
00000040 96 0b 1d d1 dc 41 7b 9c e4 d8 97 f4 5a 65 55 d5
00000050 35 73 9a c7 f0 eb fd 0c 30 29 f1 66 d1 09 b1 8f
00000060 75 27 7f 79 30 d5 5c eb 22 e8 ad ba 79 cc 15 5c
00000070 ed 74 cb dd 5f c5 d3 6d b1 9b 0a d8 35 cc a7 e3

00000000 d1 31 dd 02 c5 e6 ee c4 69 3d 9a 06 98 af f9 5c
00000010 2f ca b5 071246 7e ab 40 04 58 3e b8 fb 7f 89
00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 f1 41 5a
00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd 72 80 37 3c 5b
00000040 96 0b 1d dl dc 41 7b 9c e4 d8 97 f4 5a 65 55 d5
00000050 35 73 9a 47 f0 eb fd 0c 30 29 f1 66 d1 09 b1 8f
00000060 75 27 7 79 30 d5 5c eb 22 e8 ad ba 79 4c 15 5c
00000070 ed 74 cb dd 5f c5 d3 6d b1 9b 0a 58 35 cc a7 e3
答案:
第一个:
16位小写:7d4746b3c8d09fe3
第二个:
16位小写:7d4746b3c8d09fe3
碰撞成功
26.在思考题25中所述的MD5碰撞常常被认为没有实际意义,因为发生碰撞的两条消息看起来是一些随机的二进制位,也就是说,这两条消息并不携带有意义的信息。目前来看,利用这个MD5碰撞攻击,不可能生成一个有意义的碰撞。鉴于这个原因,有时候会说MD5碰撞并不是一个严重的威胁。这个思考题的目的就是让你认识到事实并非如此。请从本书网站上下载文件MD5_collision.zip,解压该文件之后你可以得到两个脚本文件:rec2.ps和 auth2.ps.

a请通过脚本浏览器打开rec2.ps,你能看到什么样的消息﹖再通过脚本浏览器打开auth2.ps,你又能看到什么样的消息?
b请问,脚本文件rec2.ps的 MD5哈希值是多少?脚本文件auth2.ps的MD5哈希值又是多少?请问为什么这会是一个安全问题?请说明在这种特殊的情况下,Trudy可以轻而易举地发起攻击,请说明一种具体的攻击实施方案。提示:可以考虑数字签名的情况。
c修改脚本文件rec2 . ps 和 auth2.ps,相比目前的样子,要使得这两个文件显得互不相同,但是对其执行哈希运算却得到相同的结果。请问,最后得到的哈希值是多少?
d既然不可能生成一个有意义的MD5碰撞,那怎么才能使得两条(有意义的)消息具有相同的MD5哈希值呢?提示,脚本中会包含如下形式的条件语句;
(X)(Y)eq{T0}{T1}ifelse
其中,当文本X与Y相同的情况下,显示T0:否则,显示T1.。
答案:
a.简单
b.都是c321325acff48137d62844e481ab01c5;
假设我签了推荐信rec2.ps;
Trudy(或其他任何人)可以将fileauth2.ps替换为建议,签名验证仍然会通过。
c.取决于所选的消息,但是用文本编辑器打开任何一个文件都可以清楚地知道需要做什么。
d.基本思路是:假设A和B形成MD5碰撞,即h(A) = h(B)。然后我们创建两个相同的Postscript文件,其中“好的”字母是T0,“坏的”字母是T1,然后在第一个文件中我们设置,比如在条件语句中x - Band Y = B,这样To(“好的”消息)就会显示出来。在第二个文件中,我们让X - A和Y = B,以便显示“邪恶”消息。由于h(A) = h(B)这一事实,这两个消息将散列到相同的东西,并且文件在“(X)(Y)”之外是相同的。
27.假如你收到一封电子邮件,是自称为Alice 的某人发送过来的。该电子邮件包括一个数字证书,含有如下的内容:
M=(“Alice”, Alice’s public key)和[h(M)]CA
其中CA是一个证书权威机构。
请问,你该如何验证这个签名?请尽量给出详细描述。
为什么你还需要花费力气去验证签名呢?
假如你信任对该证书签名的CA。那么,在验证了该签名之后,你就可以认定只有Alice持有在这个证书中包含的公钥所对应的私钥。假定Alice 的私钥没有损害或被破坏,请问,为什么你的这个认定是有效的?
假如你信任对该证书签名的CA,在验证了该签名之后,关于该证书的发送者的身份,你都能了解到什么信息呢?
答案:
a.验证CA的数字证书和设立验证Alice 的邮件密钥。通过网页查询该邮件携带的数字证书来确定该证书确实由CA机构认证。
b.签名验证失败表示对应的私钥可以验证属于任何人。例如,Trudy可以简单地创建一个公钥/私钥对,将这个公钥放入一个表示“Alice”的证书中,自己签署该证书,并保留私钥。如果使用公钥加密消息,只有Trudy可以解密它,而Alice不能。
c.CA的工作是创建证书,并确保私钥属于Alice(而不是其他人)。只有CA可以签署证书,因此,如果CA完成了工作,并且Alice的私钥没有被泄露,那么只有Alice拥有私钥。
d.什么都没有。证书是公开的,所以任何人都可以拥有并发送它。
28.请回顾一下,我们在计算数字签名时,既使用了公开密钥系统,也使用了哈希函数。
a.请详细描述数字签名的计算过程和验证过程。
b.假定这里用于计算和验证签名的公开密钥系统是不安全的,但是其中的哈希函
数是安全的。请证明,在这种情况下,你能够伪造签名。
c.假定这里用于计算和验证签名的哈希函数是不安全的,但是其中的公开密钥系统是安全的。请证明,在这种情况下,你能够伪造签名。
答:
a.计算过程:首先是生成被签名的电子文件,然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。
验证过程:接收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文做同样哈希算法得出一个新的数字摘要,将两个摘要的哈希值进行结果比较,相同签名得到验证,否则无效。
b报文的接收方首先从接收到的原始报文中计算出散列值,接着再用发送方的公开密钥来对报文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。但是如果公开密匙系统是不安全的,就没法保证散列值是否为真实的,从而可以伪造签名。
c报文的接收方首先从接收到的原始报文中计算出散列值,接着再用发送方的公开密钥来对报文附加的数字签名进行解密。但是由于哈希函数已经被知道了。所以只要使解密前后的散列值相同就可伪造签名。
29.这个问题针对的是数字签名。
a,请详细说明,数字签名是如何计算并进行验证的?
b.请证明:数字签名能够支持数据完整性保护。
c.请证明:数字签名能够支持不可否认性保护。
答:
a.简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关
b.假设Alice发送M和s=[h(M)]aice·如果Bob收到M‘≠M和S,
然后H(M‘)≠{S}Alice。同样,如果Bob接收到M和S‘≠S,则h(M)≠{S’}Alice。如果两者都有错误,那么,几乎可以肯定h(M‘)≠{S’}Alice-。
c.用自己的私钥对数据进行加密,因为只有他自己有私钥,别人都没有,所以就提供了不可否认性的保护。
30.假如Alice想要对消息M实施签名,并将其发送给Bob。
a.按照我们的标准化表示方式,请问Alice需要执行哪些运算?
b.请问,Alice需要发送给Bob什么信息?Bob又是如何对签名进行验证的?
答:
Alice计算S=-[h(M)]Alice
艾丽斯把M和S=[h(M)]Alice发送给Bob。Bob验证h(M)={S}Alice.
31.在上一章,我们讨论了针对公开密钥加密系统的前向检索攻击背后的实现思路。在某些特定的应用中,前向检索攻击还能够用于对付哈希函数。
a.请问,什么是针对公开密钥加密方案的前向检索攻击?如何能够预防此类攻击呢?
b.请描述哈希函数的一种应用场景,使其看起来合理可行,但是却存在发生前向检索攻击的可能。
c.请问,如何才能防止针对哈希函数的前向检索攻击?.
a.猜测可能的明文消息,然后用公钥对每条消息进行加密。将结果与密文进行比较。
b.网上投标问题。
c.随机填充,即对公共密钥预搜索的相同解决方案
32.
假设我们已有一个分组加密方案,并想要利用该方案实现一个哈希函数。令X为某一特定的常量,令M为一条消息,其仅包含一个单独的分组,而这个分组的长度刚好就是我们的分组加密方案中的密钥长度。定义消息M的哈希计算为y=E(X,M。请注意:在我们运用该分组加密方案时,使用消息M代替了相应的密钥。
a.假定我们这个基本的分组加密方案是安全的,请证明,这个哈希函数满足加密哈希函数的抗碰撞特性和单向特性。
b.请扩展该哈希函数的定义,使得可以对任意长度的消息执行哈希运算。经过扩展之后,这个哈希函数是否满足加密哈希函数所必须具备的所有特性?
c.请问,对于用作加密哈希函数的一个分组加密方案,为什么其必须是要能够抗击“选择密钥”攻击的呢?提示:如果不能这样,那么对于给定的一个明文消息P,我们能够找到两个密钥K0和K1,使得E(P,K0)=E(P,K1)。请证明,这样的一个分组加密方案在用作一个哈希函数时,是不安全的
解答:
如果我们这个基本的分组加密方案是安全的,那么这个哈希函数应该满足安全密码的基础属性,那么它将具有加密函数的基本属性,即抗碰撞特性以及单项特性
拓展后的哈希函数满足加密哈希函数所具备的所有特性
如果我们选择的抗击“选择密钥”攻击能力弱的来用作加密哈希函数的一个分组加密方案,那么别人将能够通过构造碰撞来攻击我们
33: 请考虑一个“2 out of 3”型的秘密共享方案。
a.假如Alice 的那份共享秘密是(4,10/3),Bob 的那份共享秘密是(6,2),Charlie的那份共享秘密是(5,8/3)。请问,共享秘密S是什么?该直线的表达式是什么?
b.假定所采用的运算以13为模,也就是说,该直线的表达式形如ax+by =c(mod 13)。如果Alice的那份是(2,2),Bob的那份是(4,9),而 Charlie的那份是(6,3),那么请问,共享秘密S是什么?相对应直线的表达式(模13的运算形式)是什么?
a. 共享秘密S为6,直线表达式为2x+3y=18。
b. 共享秘密S为8,而相应直线的表达式(模13的运算形式)为5x+6y=9 mod 13。
34: 请回顾一下,我们之前给过的定义是:如果已知的对一个加密方案最有效的攻击就是穷举式密钥检索攻击,那么该加密方案可以以为是安全的。如果一个加密方案是安全的,并且其密钥的空间很大,那么已知的对其最有效的攻击将是计算上不可行的——对于一个实际的加密方案来说,这是理想的情况。然而,总是会有这样的可能性:出现了一种新的聪明的攻击方法,使得一个之前是安全的加密方案变成了一个不安全的加密方案。相比之下,Shamir的基于多项式的秘密共享体制是信息论意义上安全的,也就是意味着不存在捷径攻击的可能性。换句话说,秘密共享体制可以确保永远是安全的。
a.假如我们有一个“2 out of2”型的秘密共享方案,其中由Alice和 Bob共享一个秘密S。请问,为什么Alice无法根据她自己的那份秘密来确定有关共享秘密的任何信息呢?
b.假如我们有一个“m out of n”型的秘密共享方案。那么,任何m-1个参与者组成的集合都不能够确定有关共享秘密S的任何信息,请说明这是为什么?
答:
a. 需要两个点来确定这条线。只给出一个点的值,任何可能的S都将产生一条贯穿Alice的点的有效线,并且没有额外的信息来决定假定的S是否正确。
b. 需要m个点来确定线的表达式。若只给出m-1个点的值,任何可能的S都将产生经过这m-1个点的有效线,并且没有额外的信息来决定假定的S是否正确。
35: 请从本书的网站上下载文件visual. zip并解压下载的文件。
a.请使用你最喜爱的浏览器打开文件visual. html,并仔细地将两份进行重叠覆盖。请问你能看到什么图像?
b.请对另一幅不同的图像文件运用该程序创建出共享的各部分。请注意,所选的图像必须是gif文件格式。请分别给出屏幕快照影像,依次显示原始图像、共享的各部分以及对共享部分进行重叠覆盖的结果。
答:
a. 将两份进行重叠覆盖后,能够看到Alice的图像。
b. 通过修改html文件创建出了各部分内容。由于并未找寻到官方网站上的visual.zip文件,我们组内考虑通过求助网上其他资源完成了本次作业的内容。
36: 请回顾一下,我们之前给过的定义是:如果已知的对一个加密方案最有效的攻击就是穷举式密钥检索攻击,那么该加密方案可以认为是安全的。如果一个加密方案是安全的,并且其密钥的空间很大,那么已知的对其最有效的攻击将是计算上不可行的—对于一个实际的加密方案来说,这是可能存在的最理想情形了。然而,总是会有这样的可能性:出现了一种新的聪明的攻击方法,使得一个之前是安全的加密方案变成了一个不安全的加密方案。相比之下,Naor和 Shamir的视觉秘密共享体制是信息论意义上安全的,也就是意味着不存在捷径攻击的可能性——即该秘密共享体制可以确保永远是安全的(根据我们对安全的定义来说)。
a.请考虑本章中讨论的“2 out of 2”型视觉秘密共享方案。请问,为什么Alice无法根据她自己的那份秘密来确定有关共享秘密的任何信息呢?
b.请问,一个更加广义的“m out of n”型视觉秘密共享方案怎样才能是有效的?
c.对于一个“m out of n”型视觉秘密共享方案。请问当m取值很大,而n取值较小时,根据秘密共享方案恢复出来的图像的对比度如何呢?当n取值很大,而m取值较小时,所得图像的对比度如何呢?当m和n的取值都很大时,情况又如何呢?

a假设您知道一个共享,并考虑共享的任何给定像素。你没有关于原始像素是黑色还是白色的信息,因为两者都是
b Tsai和Wang的论文“隐藏三个秘密数据的(3,3)-视觉加密共享方案”中描述了三取三方案。
c至少对于b部分的解中提到的3/3格式,恢复图像的分辨率都有了一定的下降
37: 假定你有一个文本文件,并且你计划将其分发给几个不同的人。请描述一种简单易行的非数字水印的方法,以便你可以利用这种方法在该文件的每一个版本中分别置入截然不同的不可见数字水印。请注意,在这里的上下文中,“不可见”的意思并不是意味着数字水印真正不可见了,而是说,数字水印对于文件的阅读者来说不是显而易见的。
方案:改变行距、改变换行符、改变穿孔等。不同的地方是用稍微不同的方式重写每一行
38.假如你参加了一门课程的学习,该课程规定:使用教师所撰写的手稿的印刷版作为教科书。为简单起见,教师在其手稿的每-一个版本中都插入了一个简单的不可见水印。该教师想要做到:给定其手稿的任何-一个版本, 他都能够轻松地确定是谁最初接收了该版本的讲义手稿。教师向全班同学提出了如下的几个问题,希望大家能够给出相应的解决方案"。
(i)确定所使用的水印方案。
(i)请设法让水印成为不可见的。
请注意,在这里,“不可见"的含义并不是指眼睛真的看不见相应的水印,而是说,.
教科书的阅读者不容易看到或者读出来相应的水印。
a.请讨论:教师要给讲义手稿生成水印,有几种可以采用的方法,都是什么?
b.请问:你打算怎么解决问题()?
c.假设你已经解决了问题(),那么你打算怎么解决问题(i)呢?
d.假如你无法解决问题(),那采取什么样的方式,才有可能使得在问题(i)没有获
得解决的情况下将问题(i)解决掉呢?
答:a、 老师可能已经改写了特定的句子,或者是各种各样的换行变量。事实上,ied是行(或词)、更改字体、标点符号等之间的间距,作者使用的方案是创建两个稍有不同版本的第一个版本每章的页面(例如,使用斜体或斜体字体,用于引号,或稍微改变页面上的标点符号等)。带13章-ters,这使作者有能力创建213个不同的水印。因为作者选择了不同的水印,需要60份手稿尽可能多的位位置。实际上,这是一个纠错代码–在一定的阈值下,如果标记损坏,仍有可能分配给正确的学生打上标记。只有一对(优秀)学生在工作他们一起解决了这个问题,他们需要几个提示。会的如果这样的方案能应用到实际的教科书上,那就很有趣了就手稿而言,对于书籍来说,这个计划会更强大,因为下文提到的攻击将更加困难。当然,这很难应用于书籍的硬拷贝版本,但应用于电子书籍。注意,如果教科书上有水印,作者可以确定谁负责这些ilgal pdf版本的书不可避免地可以通过BitTorrent。。。。
b、 最好的办法是串通攻击。也就是说,仔细比较几个寻找差异的手稿副本
c、 因为已知道这个方案是如何工作的,所以直接可以交换页面包含不同副本之间的关键水印信息手稿。
d、 随机在各份手稿之间翻页。
39.在本章的最开始,我们曾引用了刘易斯卡罗尔(Lewis CarrolI)的诗文的一部分 。
在该引文的第二部分中,虽然没有给出这段诗文的标题,但是通常来说,会根据
起始行来进行引用,即“一条小船,在阳光明媚的天空下”。
a.请给出该诗的全文。
b.这首诗包含了-条隐藏的消息。请问那是什么?
答:a、七月的船儿
满载日光
晃悠悠去梦乡

倦而不眠的小童
眼睛跳下床
耳朵推开了窗

听晴天里的旧事
那不回头的情殇
看夏妆脸上的秋霜

她还萦绕梦里
穿过光明
只是不牵手的倩影

好奇的小童们
捂不住的心房
不知不觉睡安详

他们躺在仙境
吮吸着日月
回味仲夏的吻别

这不息的追逐
镀满了金光
人生莫非梦一场

译文3
斜阳照着小划船ㄦ
慢慢ㄦ漂着慢慢ㄦ玩ㄦ
在一个七月晚半天ㄦ

小孩ㄦ三个靠着枕
眼睛愿意耳朵肯
想听故事想得很

那年晚霞早已散
声儿模糊影儿乱
秋风到了景况换

但在另外一个天
阿丽丝这小孩ㄦ仙
老像还在我心边

还有小孩ㄦ也会想
眼睛愿意耳朵痒
也该挤着听人讲

梦里开心梦里愁
梦里岁月梦里流

顺着流水跟着过
恋着斜阳看着落
人生如梦是不错
b、每行的第一个字母拼写的是真正的爱丽丝的全名。
40.本思考题考察的是RGB色彩系方面的内容。
请证明如下两个RGB颜色
(0x7E,0x52,0x90)和(0x7E,0x52,0x10)
他们仅有一个二进制位的差别,但视觉效果截然不同。而另外两个颜色:
(0xAB,0x32,0xF1)和(0xAB,0x33,0xF1)
也仅有一个二进制位的差异,但是肉眼却是难以分辨。请尝试解释一下这种现象,何故如此?
从二进制位的位置排列上看,哪些位置的影响度是最小的呢?也就是说,在什么位置上的二进制数值可以被轻易改变,而不会产生色彩上可感知得到的变化呢?
答:a:

二者虽然差了一个二进制位,但是确实差异很大。

而这二者也是相差一个二进制位,但视觉效果差异很小,原因主要在于这个差异的二进制位是高位还是低位,高位的二进制位差异如0x90与0x10,会由于绝对值差异大而导致色彩某一个颜色的量有较大幅度的偏差,而低位的差异如0x32和0x33,绝对值差异也只有1,所以颜色差异小。
b:从二进制的排列上讲,在每个色彩通道的低位,也就是末位,对色彩影响度最小,而不产生可感知到的变化。
41.请从本书的网站上下载图像文件 alice. bmp,并考虑如下的问题。
a.请使用十六进制编辑器在文件中隐藏一些潜在的攻击信息。
b.请给出一个十六进制的编辑查看报告,在其中呈现出该图像文件中哪些二进制位被改变了,其具体位置是什么?并请呈现出相应的未发生改变的二进制位。
c.请给出原始bmp图像文件的屏幕快照,以及包含了隐藏信息的 bmp图像文件的屏幕快照。
答:原始bmp图像:

包含隐藏信息的图像:

试图写入到图像中的信息为一个txt文件,该文件如图所示:
十六进制查看为:
将该文件以每8位拆分为6,b,6,f,7,4…
并写入位图文件的图像部分的每个rgb通道颜色数值的最低位,如图所示:

通过此方法便将1.txt文件隐写至alice1.bmp中,且肉眼无法察觉与原图差距。
42.请从本书的网站上下载文件stego.zip,并考虑如下问题:
a.请使用程序stegoRead来提取出包含在图像文件aliceStego. bmp中的隐藏文件。
b.请使用该程序,将一个文件插入另一个不同的图像文件(未经压缩)中,并尝试从中再次提取出该信息。
c.请给出b中获得的图像文件的屏幕快照,要包括携带了隐藏信息的文件和没有携带隐藏信息的文件。
答:a. 隐藏文件为一个pdf文件,解密过程如图:

该pdf图像部分为空,但有目录,如图所示:

b.创建需要隐写的文件,如图:
进行写入:

重新读取:

读取结果为:

c.不包含隐写信息的图片为:

包含隐写信息的图片为:

43.请从本书的网站上下载文件stego.zip,并考虑如下问题:
a.请编写一个程序stegoDestroy.c,该程序的功能是要破坏隐藏在文件中的任何信息,假设其信息隐藏的方式采用的是在程序stego.c中运用过的方法。你编写的程序应该将一个bmp文件作为输入,生成一个bmp文件作为输出。从视觉上看,该程序输出的文件一定是和输入的文件基本相同。
b.请使用图像文件 aliceStego.bmp来测试你的程序。验证一下输出的图像文件是否被破坏了。请问,程序stegoRead.c从你的输出文件中抽取出了什么信息呢?
答:a.可以将低阶RGB 数据随机化(或归零)。 或者,可以用其他选择的信息替换这些数据。
如果将这些数据随机化,将毫无用处。
44.请从本书的网站上下载文件stego.zip,并考虑如下问题:
a.请问,程序stego.c是如何在图像文件中隐藏信息的呢?
b.假设使用程序stego.c 中的方法隐藏信息,你如何才能够破坏隐藏在一个图像文件中的信息,而同时使得图像没有视觉上的损坏呢?
c.请问,如何才能够使这种信息隐藏技术对于这类破坏攻击具有更强的抗击能力呢?
答:a、将信息放在低阶的RGB数据中
b、随机化比特,使位为零,用其他消息替换,等等。 c、使用高阶的RGB来存储图像。
45.请从本书的网站上下载文件stego.zip,并考虑如下问题:
a.请问,这种信息隐藏的方法为什么只能用于非压缩的图像文件呢?
b.请说明,对这种方法做什么样的修改,才能够使得其可以用于压缩的图像格式,比如jpg 图像文件。
答:a、如果图像被压缩,则会产生一个新的编码方案,因此修改数据会更加困难。
b、修改应当遵循压缩图像的编码方案,这将使过程复杂化。
46.请编写一个程序,在一个音频文件中隐藏信息,并能够抽取出你所隐藏的信息。
a.请详细描述你的信息隐藏方法。
b.请将一个没有隐藏信息的音频文件和同样的,但包含了隐藏信息的文件进行比较。你能辨别出二者在声音品质上的不同吗?
c.请讨论,对于你的信息隐藏系统,会存在哪些可能的攻击方式?
答:a、WAV格式的音频文件在Windows 中存储为8或16位值,对于8位样本,这意味着取值范围介于0和255之间。16位的样本取值范围介于0和65535之间。S-Tools在WAV格式的音频文件中隐藏信息时,首先用密码加密,然后根据密码决定要嵌入信息的位置,采用LSB (least significant bits))方法,把秘密信息代替载体音频文件的最不重要比特位。
例如,假设一个音频文件有以下8个字节的信息,分别为:132134137 141 121 101 7438
二进制表示为:
10000100 10000110 10001001 10001101 01111001 01100101 01001010 00100110
如果要隐藏二进制字节11010101 (213)在这个序列。简单地取代了音频文件的LSB(最低有效位)进行信息隐藏。因此上述顺序将变更为:
133135 136 141 120 10174 39
二进制表示为:
10000101 10000111 10001000 10001101 01111000 01100101 01001010 00100111
这样,秘密信息就隐藏在载体音频文件中,音频文件在听觉效果上和原始文件几乎没有区别。
b、一般情况下,我们无法感受到两段音频的差异。
c、可以向音频数据中随机插入随机数据。
47.请编写一个程序,在一个视频文件中隐藏信息,并能够抽取出你所隐藏的信息。
a. 请详细描述你的信息隐藏方法。
b.请将一个没有隐藏信息的视频文件和同样的但包含了隐藏信息的文件进行比
较。你能辨别出二者在视觉品质上的不同吗?
c.请讨论,对于你的信息隐藏系统,会存在哪些可能的攻击方式?
答:a.叠像术是由可视化密码技术发展而来的一种新的信息伪装技术。可视密码术的思想是把 要隐藏的机密信息通过算法隐藏到两个或多个子密钥图片中。这些图片可以存在磁盘上,或 印刷到透明胶片上。在每一张图片上都有随机分布的黑点和白点。由于黑、白点的随机分布, 持有单张图片的人不论用什么方法,都无法分析出任何有用的信息。而若把所有的图片叠加 在一起,则能恢复出原有的机密信息。由于该方法简单有效,其恢复只要通过人的视觉系统 就可识别,而无须大量的计算和密码学知识,所以其应用更为广泛。通过该技术产生的每一 张图像也可以不是随机噪声图像,而是常人能看懂的图像:图像上有不同的文字或图画,与 一般资料无异,只要将一定数量的图像叠加在一起,则原来每一张图像上的内容都将消失, 而被隐藏的秘密内容出现。至于单个图像无论是失窃还是被泄露,都不会给信息的安全带来 灾难性的破坏。由于每一张图像的“可读性”,使其达到了更好的伪装效果,可以十分容易地 逃过拦截者、攻击者的破解,而且,在一定的条件下,从理论上可以证明该技术是不可破译 的,能够达到最优安全性。
b.确切的说,你不应该能察觉到任何差异。
c.扫描、监听、嗅探。
48.本思考题针对的是加密技术中随机数的应用问题。
a.请问,在对称密钥加密技术中,哪些地方会使用到随机数?
b.请问,在RSA算法和Difie-Hellman密钥交换体制中,哪些地方会使用到随机数?
答:a.对称密钥和IVs。
b.随机选择素数(RSA)和产生随机指数(DH)。
49.根据我们在文章中的讨论,在加密技术中使用的随机数必须是不可预测的。
a.请问,对于加密技术类应用,为什么统计性的随机数(该类随机数往往用于模拟
仿真类领域)是不够的?
b.我们来做个假设,对于由一个流密码算法生成的密钥流来说,如果给定了n位
二进制密钥流,就能够确定其所有的后续密钥流位,在这个意义上,我们就称
该密钥流是可预测的。请问,这种情况会有实际的安全问题吗?请说明理由。
答:
a.给定这些数字的序列,序列中的剩余数字可以是被限定的。如果这样的序列被用作密钥流,那么一个已知的明文袭击可能是毁灭性的。
b.是的,因为攻击者可能知道一些明文,在这种情况下,他们会知道密钥流位。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值