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

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

只需将对称密钥加密替换为使用密钥的哈希即可,或者最好是使用HMAC
2.
1.加密发送者的名字以及时间戳和密钥
2.Bob记得所有在时钟歪斜范围内收到的时间戳。所以重放攻击是不可能的。
3.
a.在图9-22中,用对称加密替换签名/公钥加密
b.用时间戳替换nonce
4.
答:以下攻击将起作用:

  1. Trudy 打开一个与 Bob 的连接并发送第一条消息,获得 Bob 的回复。 然后她打开第二个连接并将 R + 1 发送给 Bob。 她使用 Bob 的响应来完成第一个连接,让第二个连接超时。
  2. Trudy 可以在 Alice 和 Bob 之间的合法连接中记录消息 1 和 3,然后稍后重播它们。

针对图9-28所示的基于TCP协议的认证方案,请考虑相对应的攻击方式。假如Trudy无法准确地猜测到初始序列号b,实际上,Trudy只能够缩小bz的值到某个范围,比如说等于1000个可能的值中的一个。请问,Trudy 如何发起攻击,才有可能获得成功?
答:最明显的就是反复攻击——如果她能重复的话,500次没有被发现,她很可能成功。
6. 在安全协议中,时间戳可以用来取代nonce值的作用。
a. 请问,使用时间戳方案的主要优势是什么?
b. 请问,使用时间戳方案的主要不足是什么?
答:
a. 时间戳的好处是我们不再需要为交换nonce值而浪费任何的消息,前提是当前时间对于Alice和Bob都是可知的。
b. 时间戳带来的安全问题:时间戳的使用意味着时间是一个关键性的安全参数。我们不能依赖于系统时钟的完全同步,所以我们必须允许一定的时间偏差。
7.
a.Alice可以认证,因为需要S才能确认最终消息中的K,Alice可以验证最终消息中是否有K,同时只有Bob知道他的私钥,从{S}Bob中可以确认S
b.Bob不能认证Alice,需要公钥操作才行

a. 是的。最后一条信息将说服爱丽丝,她已经与bob取得了联系。只有Bob知道K_ab,它是确定S和计算K所需要的,如果Alice解密并找到SRVR,那么她知道应答者一定知道K。
b. 是的。trudy(伪装成Alice)可以在消息3中发送一个随机的比特字符串来代替E(S,KAB)。然后Bob就会“解密”这个随机字符串,无论结果如何,他都会假设它是S。然而,Trudy不知道Bob得到的结果S就不能确定一个有效的K,而Trudy只有知道K_ab才能知道这个。因此,当Bob解密E(CLNT,K)并发现结果是CLNT时,他在消息3中验证了Alice。因为Trudy不能计算E(CLNT,K),所以Bob没有把Trudy错当成Alice。

由于会话密钥K和时间戳T都并未进行加密,因此Trudy可以侦听这两个信息并进行重放攻击。
10.
假设R是从Alice发送给Bob的一个明文形式的随机的challenge值,K则是一个只有Alice和Bob知道的对称密钥。请问,下面哪个是安全的会话密钥,哪个不是。并请说明理由。
R+K
E(R,K)
E(K,R)
H(K,R)
H(R,K)
答:
a不可以,Trudy可以通过R找出K;
b可以;
c不可以,通过明文对密钥进行加密,Trudy可以破解出密钥;
d可以,H(K,R)是不可逆的,即使知道了R和H(K,R),也无法得到K;
e可以。
11.
请设计一个安全的包含两条消息的认证协议,它要能够支持双向相互认证,并可以建立一个会话密钥K。假设Alice和 Bob事先都知道彼此的公钥。请问,对于一个被动攻击者(即,攻击者只能观察到Alice和 Bob之间往来传递的消息)来说,你所设计的协议是否能够为Alice和 Bob 提供匿名保护?如果不能,那么请修改你的协议,使其能够提供匿名性保护。
答:11.图9.23中的协议可以是一个例子(无论如何,都需要使用时间戳)。

该特定协议不能提供匿名保护,进行修改,在第一条消息中“ Alice”位于加密内部(但不包括签名),则它将提供匿名性。
12.

也许令人惊讶的是,这个协议确实提供了似是而非的否认。考虑下面的消息交换。

假设鲍勃观察到这些信息。Bob可以通过使用他的私钥来确定S,因此他知道K。然后,他验证通过将Alice的公钥应用于消息1中发送的数量,他获得了消息3中用密钥K加密的值(对于消息2和消息4也是如此)。根据协议,这是他应该看到的,所以这似乎是一个合法的连接。这里的问题是,Bob没有办法知道他实际上是在加密X,而不是验证RA上的签名。对任何其他观察者来说,这种相互作用似乎也是有效的。
还要注意,Trudy可以简单地重放前两条消息,然后选择anyvalue S并完成协议的两边。因此,可能有人认为,这足以表明该议定书提供了合理的否认。然而,观察者可能会注意到,随机非随机数RA和Rg都是从先前的相互作用中重复出现的,这种可能性可以忽略不计。请注意,重复的nonce表示连接几乎肯定是伪造的。此外,如果不重复这些非关键时刻,那么爱丽丝和鲍勃就不能“似是而非地否认”这段对话。因此,上述论点需要证明该协议确实提供了合理的可否认性。
13.
请考虑如下协议,其中K=h(R_a,R_b):

请问,这个协议是否提供了可以否认性(请参见思考题12中的相关说明)?如果提供了这种特性,那么请说明为什么。如果没有提供这种特性,那么请对该协议稍加修改,使其具备这种特性,并且要保留现有的双向相互认证特性和建立安全会话密钥的特性。
答:是的,该协议确实提供了可否认性,因为Trudy可以构造一组对于Alice和Bob都看似有效的消息,Alice和Bob都可以否认收到消息的有效性。
14 请设计一个双向相互认证协议,要求利用数字签名技术来进行认证,并且提供可
以否认性的特性(请参见思考题12中的相关说明)。
设计方案如下:

左边为协议方式,右边为攻击预演
15.
可以否认性(请参见思考题12中的相关说明)究竟是一个安全特性,还是一个安全缺陷呢?请给出说明。
答:在思考题12中,提供了一种具有可否认性的协议,可否认的认证协议是指这样一类协议:指定的消息接收者能够验证消息的来源,但是该接收者不能向任何第三方证明消息的来源。所谓“不能向任何第三方证明消息的来源”,是指接收者可以使用自己的私钥和发送者发送的信息,构造收发双方进行交互的所有参数。因此,即使接收者将秘密信息泄露出去,第三方也没有能力辨认出泄露消息的来源,即:接收者无法说服第三方相信被泄露的消息确实来自于发送者。所以,发送者可以向恶意第三方否认自己发送过的消息。它实际上是某些协议的一个安全特性,但是在某些使用场景中,它也可能会导致一些问题,如果是这样的话,那么就不应该使用这样的协议。
16.
这与图9.10中出现的协议相同,因此攻击与图9.11中的相同。同样,图9.12中的方法可以防止这种攻击。找到防止攻击的其他修改是一个很好的练习
17.
这与图9.24中的协议相同;攻击与图9.25中的协议相同,图9.26中给出了防止攻击的修改。找到防止攻击的其他修改是一个很好的练习。
18.
答:a.Bob不知道使用哪个公钥来验证签名,因此协议不有效。
b.可以提供一种有效的途径
c.可以提供一种有效的途径
d.Alice没有通过身份验证,因此Trudy可以重播消息。Bob不知道k是什么,所以他无法验证签名。
e.可以进行互相身份验证,但是密钥可能很弱。比如说Trudy可以猜测时间在五分钟之内,然后即使时间分辨率是微秒,Trudy也只需要尝试少于2^30个密钥来进行彻底搜索。

请考虑如下包含三条消息的双向相互认证和会话密钥建立协议,该协议基于一个
共享的对称密钥KAp:

对于下列情况中的每一种, 请分别简要地说明所得到的协议是否能够提供一种有
效的途径,以确保安全的双向相互认证并建立一个安全的会话密钥K。
a. Message 1: E(“Alice”, K, RA, KAB), Message 2: Rs, E(RB,KAB)
b. Message 1:“ Alice”, E(K,RA,KAB), Message 2: Rs, E(RV,K)
C. Message 1:“Alice ”, E(K,RA,KAB), Message 2: Rs, E(RB,KAB)
d. Message 1:“Alice”, RA, Message 2: E(K, RA, RB, KAB)
答:
bob 不知道是 alice 所以他不知道该用哪把钥匙,所以这不实用。
安全的双向认证和密钥。
安全的相互认证和密钥。
安全的相互认证和密钥。
20.
没有Alice的身份验证。
有相互的身份验证和安全的会话密钥。
没有Alice或Bob的身份验证。即使身份验证正常,密钥也有问题,因为Trudy可以用他自己选择的密钥替换它。
有相互的身份验证,但是当Trudy知道 时可以用 替换 。
没有Alice的身份验证,不能让“Alice”选择她自己的挑战。
21.

a.Trudy在5.60.1000 = 300,000中有一个机会。
b. 有许多可能的解决方案。 时间分辨率可以降低为,例如:微秒。 或者可以将该协议修改为Bob必须返回K代替(或除了)T + 1,在这种情况下,K将用作会话密钥并且有效地,也可以作为随机数(当然,也可以使用单独的随机数)。或者在第二条消息中可以使用签名代替加密。
22.
请考虑如下双向相互认证和会话密钥建立协议,其中会话密钥K= g"mod p:

假设Alice试图利用这个协议发起一个与Bob的连接。
a.请证明Trudy可以对该协议发起攻击,从而使下面两种情况均会发生。
i. Alice和Bob成功地相互认证。
ii. Trudy知道了Alice 的会话密钥。
提示:请考虑中间人攻击。
b.请问,这种攻击对于Trudy有意义吗?
答:
A.Trudt进行了 MIM攻击,但是她在信息2中发送{ g^t mod p } alice 给 alice,代替{ g^b mod p } alice。Trudy 也打开了和 bob 的连接,声称是 alice,并在信息1中发送{ g^a mod p } bob 代替 RA。Bob 在这个值上“标记”,然后解密,然后发送 g^a mod p 给 trudy。然后 trudy 让这个连接消失,她就可以计算 alice 将要使用的会话密钥。注意 bob 使用不同的会话密钥,尽管确实相互验证成功了。
B.事实上,至少 trudy 能破译一条恶意信息。
23.
针对下面每一种情况,请利用公开密钥加密方案,设计一个双向相互认证及会话
密钥建立协议,并要求交互的消息数量尽可能的少。
a.使用时间戳来认证Alice,使用nonce值来认证Bob.
b.使用nonce值来认证Alice,使用时间戳来认证Bob…
答:
A 用一个时间戳协议模拟协议“ sign and encrypt” ,但第一条消息包括 nonce,并在消息2中用了 nonce 替换密钥 k (实际上,没有必要加密第二条消息)。所以这仅需要两条信息。
B.这需要三条信息,因为bob 必须在信息2发送 nonce/challengein, alice 必须在信息3中做出适当的回应。所以这种方法与使用nonce相比没有任何好处。
24.
假设我们使用下式替换图9-22所示协议里的第三条消息:
〖{R_B}〗_Bob ,g^a mod p
a.请问Trudy 如何才能够令Bob相信她就是Alice,也就是说,Trudy如何才能够
破解这个认证方案?
b.请问Trudy是否能够做到令Bob相信她就是Alice,并且还能确定出Bob将要
使用的会话密钥呢?

第三条消息中只需要包含Alice的公钥就可以了。
不能,因为Trudy不知道 g^a mod p
25.
假设我们使用下式替换图9-22所示协议里的第二条消息:
〖R_B,{R_A}〗_Bob ,g^b mod p
并且使用下式替换其第三条消息:
〖{R_B}〗_Alice ,g^a mod p
a.请问Trudy能否令Bob 相信她就是Alice,也就是说,Trudy是否能够破解这个
认证方案?
b.请问Trudy能否确定Alice和 Bob将要使用的会话密钥呢?
不能,因为Trudy没办法将R_B签名成Alice。
能,因Trudy可以进行MiM攻击,并让Alice生成她的密钥 K_A=g^at mod p,同时让Bob生成他的密钥K_B=g^bt mod p。由于Trudy知道t,所以Trudy就可以知道K_A和K_B。无论怎样,身份验证都是成功的,所以Alice和Bob不会怀疑出现任何错误,而Trudy此时可以读取或修改他们所有的加密消息。
26.
本章前面已经说明图9-18所示的协议是安全的,而与之相似的图9-24所示的协议则不是安全的。请问,为什么对后一个协议有效的攻击方式在针对前一个协议时,却不能奏效呢?
答:两者重要的区别在于Alice在后一协议选择了K而Bob在前一协议选择了K。在后一协议中,Trudy会收到{R,K}Alice和{R+1,K}Bob;但因为Bob选择了K,两个没有一个可以被重放获取K。
27.
一个基于时间戳的协议可能会受到重放攻击,只要Trudy能够抓住时钟偏差见机行事。缩短可接受的时钟偏差将会使这样的攻击更加困难,但是却无法完全杜绝,除非时钟偏差为零,那当然是不现实的。假设存在一个非0的时钟偏差,请问,Bob或者服务器,应该如何来预防此类基于时钟偏差的攻击方式呢?
答:Bob可以记住每一个接收到的时间戳,直到它超过了可接受的时钟偏差,然后拒绝接收任何复制的时间戳。
28.
针对本章开始所讨论的敌我识别(IFF)协议进行修改,使得其不会再受到中间米格攻击的威胁。
答:一个简单的解决方法是在挑战被加密之前需要飞行员的干预。想必,飞行员会知道他什么时候接近自己的基地。然而,这是有风险的,因为飞行员可能会犯错误,比如按下错误的按钮,或者反应太慢等等。
29.
请考虑如下认证协议,该协议是基于对-一个共享的4位十进制PIN码的知情。这里有KpN=h(PIN, Rs, RB):
a.假设Trudy以被动方式观察了该协议的一*轮执行,请问,她是否能够确定该4.位十进制PIN码?请给出你的理由。
b.假设将该PIN码替换为一个 256位二进制长的对称密钥,请问修改后的协议是否安全?请说明为什么。
答:a. 能确认。如果Trudy观察到协议的一次迭代,她就能猜出PIN号。直到她正确地解密,比如说,E(Bob,RA,K)。请注意,Trudy知道RA(和Bob),所以她会知道什么时候她找到了正确的PIN。由于只有10,000个可能的PIN号码,这对Trudy来说是一个微不足道的攻击。
b. 这是安全的,因为暴力攻击是不可能的。

能,因为Trudy不知道RA在这种情况下,Trudy必须猜测一个PIN编号,生成一个假定的密钥KpIN,然后“解密”,比如E(RA,KpIN)和E(RA,Rp,KpIN)。只有当PIN码正确,Trudy才会在两种情况下看到相同(未知)的RA值。
31.

作为一个被动者,Trudy需要解决离散日志问题,我们认为这是不可行的,所以答案是否定的。
Trudy可以充当MiM,但她只有一次机会(每次迭代)去猜测PIN,因为她必须实时这么做。这给了她1/10000的机会成功,每次迭代。注意,事后,她猜不到PIN,因为她需要解决离散日志问题,这意味着在这种情况下,开裂是不可行的。所以,她的成功概率取决于她可以攻击协议的多次迭代。当然,一旦她发现她可以继续破坏协议直到密码改变。
值得注意的是,Difie-Hellman的使用使得基于PIN的(或基于密码的)协议更安全,几乎没有额外的成本。
32.请描述一种方法,使得其可以支持完全正向保密,并且无需利用Diffe-Hellman体制。
答:使用RSA生成一个公钥-私钥对,使用它一次建立会话密钥,然后丢弃私钥。虽然这是可行的,但它远不如使用短命的Diffie-Helman方法有效。
33.
请问,你是否能够只利用对称密钥加密方案来获得与完全正向保密(如同本章前面所介绍过的)相类似的效果呢?如果可以,那么请给出这样的一一个协议;如果不能,那么请说明为什么。
答:使用加密散列函数h可以实现类似的效果。假设Alice和Bob共享密钥KAB。Alice选择会话密钥K并将E(K,KAB)发送给Bob。Alice计算K’AB=h(KAB),然后忘记KAB。Bob接收E(K,KAB)并解密得到K,然后计算K’AB=h(KAB)并忘记KAB。新的“长期”秘密是K’AB,如果Trudy得到了这个秘密,她就不能阻止我的KAB(散列是单向的),因此她不能从E(K,KAB)中删除K。在随后的每个连接处,都会重复此过程。保持同步是一个实际困难,但是原则上这将达到与完美的前向保密类似的效果。
34.请设计一个类似于使用Bob洞穴方案的零知识证明协议,要求使得Bob只需执行一轮就能够非常肯定地判定Alice是否知道其中的秘密暗语。
答:解密状态对Bob透明,监听Alice的解密状态,如果解密成功就像Bob发出通知。
35.
将Bob洞穴问题与Fiat-Shamir 协议进行类比其实并不完全准确。在Fiat-Shamir协议中,如果Alice遵从协议的约定,那么Bob是知道哪-一个e值会令Alice 不得不使用秘密值S。也就是说,如果Bob选择了e=l, 那么Alice必须使用秘密值S来构建第三条消息中的正确响应,但是,如果Bob选择了e=0,那么Alice不必使用秘密值S。正如前文所述,Bob必须随机地选择e值以防Trudy破解这个协议。在Bob洞穴问题这个类比中,Bob并不知道Alice是否需要使用秘密暗语(同样,我们假定Alice 遵从协议的约定)。
请修改Bob洞穴问题的设计,使得Bob可以知道Alice是否要使用秘密暗语,前提是不允许Bob观察Alice实际选择进入哪–侧。这个新的增强型Bob洞穴协议必须仍然能够抵抗来自不知道秘密暗语的某些人的攻击。
请问,你所设计的新洞穴问题与Fiat Shamir协议相比,有什么显著的不同吗?

把山洞的门做成单向的,鲍勃就知道它是朝哪个方向开的,比如说,从图中的“R”侧到“S”侧,爱丽丝应该总是选择R侧。但是,鲍勃看不到爱丽丝到底选哪一方。现在,如果鲍勃告诉爱丽丝从s面出来,艾莉丝必须知道这个秘密短语(假设她遵守了协议),但是如果鲍勃告诉她从R面出来,她不需要这个短语。Bob仍然必须随机选择一边——如果Bob的选择是可预测的,Trudy可以通过简单地选择Bob将选择的一边来作弊。
这个新的洞穴协议仍然不同于Fiat Shamir。在这个洞穴协议中,Alice没有做任何随机选择,而在Fiat-Shamir中,她为r选择了一个随机值。从这个意义上说,最初的类比更准确一些,因为Alice随机选择了r或S。

假设在图9-32所示的Fiat-Shamir协议中,我们有N=63和v=43。回想一下我们就能知道,如果Bob验证y2=xvmodN能够通过,那么他就会接受该协议的一轮执行并认可其结果。
a.在协议执行的第-一轮中,Alice 在第一条消息中发送x=37, Bob在第二条消息中发送e=1,Alice 再通过第三条消息发送y=4。那么请问,这样的一轮协议执行,Bob是否会接受并认可其结果?请说明为什么。
b.在协议执行的第二轮中,Alice 在第一条消息中发送x=37,Bob 在第二条消息 中发送e=0,Alice 再通过第三条消息发送y=10。请问,这样的一轮协议执行,Bob是否会接受并认可其结果?请说明为什么。
c.请找出Alice的秘密值S。提示: 10~= 19 mod 63。
答:
a.会接受并认可其结果
b.会接受并认可其结果
c.显然,Alice为两次迭代选择了相同的r。从第二次迭代,第三条消息,我们知道r=10 mod 63,从第一次迭代,第三条消息,r·S=4 mod 63。然后使用提示,S=r-l·r·S’=19·4=13 mod 63。
37.假设在图9-32所示的Fiat-Shamir 协议中,我们有N=77和 v= 53。
a.假如 Alice在第一条消息中发送x=15,Bob在第二条消息中发送e=1,Alice又通过第三条消息发送y=5。证明Bob可以接受并认可这样一轮协议执行的结果。
b.假如Trudy事先知道Bob将会在第二条消息中选择发送e=1。如果Trudy选择了r=10,那么请问,Trudy需要在第一条消息中发送什么样的x值,并在第三条消息中发送什么样的y值,才能够使得 Bob接受并认可这样一轮协议执行的结果呢?请利用你的答案证明,Bob确实接受并认可这样一轮协议执行的结果。提示:53-1 = 16 mod 77。
因为 y2=x*ve mod N,Bob可以接受并认可这样一轮协议执行的结果
第一条消息中,Trudy选择x=r2*v(-1) mod N=60,在第三条消息中,Trudy发送y=r=10,很容易证实Bob接受了这个协议的迭代。这表明Bob对e的选择一定是不可预测的。
38.
假设在图9-32所示的 Fiat-Shamir协议中,我们有N=55,并且已知 Alice的秘密值是S=9。
a.请问v值是多少?
b.如果 Alice选择了r=10,那么 Alice在第一条消息中应该发送什么?
c.假如 Alice选择了r=10,并且Bob在第二条消息中发送了e=0。那么,Alice在第三条消息中应该发送什么?
d.假如 Alice选择了r=10,并且Bob在第二条消息中发送了e=1。那么,Alice在第三条消息中应该发送什么?
解答:
v = S2 mod N 即为:81 mod 55 = 26
如果r=10,那么Alice发送的第一条信息应该是r2 mod 55 = 45
如果Alice选择了r=10,并且Bob在第二条消息中发送了e=0,那么Alice在第三条消息中应该发送y = 10(y = r mod N)
假如 Alice选择了r=10,并且Bob在第二条消息中发送了e=1,那么Alice应该在第三条消息中发送y = 35( y = ( r * S) mod N);
组员:蒋豪、王聪、雷佳俊
39.
请考虑图9-32所示的Fiat-Shamir协议。假设公开值分别是N=55和v=5。再假设Alice在第一条消息中发送了x=4,Bob在第二条消息中发送了e=1,然后 Alice又通过第三条消息发送了y=30。请证明,在这种情况下,Bob可以成功验证Alice的响应。另外,你能够找出 Alice的秘密值S吗?
答:y²mod55=900mod55=20
xvᵉmod55=20mod55=20
通过暴力破解,由于15²mod55=5
得S=15
40.
在图9-32所示的Fiat-Shamir协议中,假如Alice不想花费太多精力,决定在每一轮协议的执行中都选择使用相同的“随机”值r。
a.请证明Bob能够确定出Alice的秘密值S。
b.请说明为什么这会是-一个安全隐患。
第一次迭代时,Bob发送e = 0,在消息3中接收到r。在下一次迭代Bob sendse= 1,他在消息3中接收到rS。鲍勃(或任何观察到这些信息的人)可以从r-1rS中找到S。
任何知道S的人都可以模仿Alice,从而破坏了协议。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值