《移动互联网安全》习题参考答案第一次习题1.什么特性使得加密绝对不可攻破?什么特性将使得加密在实际应用中是不可攻破的?答:在没有密钥的情况下,解密的计算难度远远超过加密的计算难度,或者解密成本远远大于密文本身的价值,或者在密文的有效时间内使用当前的计算技术根本无法解密。在实际应用中,解密成本远远大于密文本身的价值,或者在密文的有效时间内使用当前的计算技术根本无法解密,使得加密在实际应用中是不可攻破的。2.解释为什么双字母替换密码比单字母替换更安全?答:(1)虽然只有26个字母,但有26*26=676种双字母组合;识别各种双字母组合要困难得多。(2)各个字母组的相对频率要比双字母组合呈现出大得多的范围,因此使用频率分析困难得多3.密文为c,明文为m,26个字母编号为0~25,加密算法为c=7m+11(mod26),当明文为hello时,对应的密文是什么?解:hello对应的数字:7,4,11,11,147184113711(mod26)11110111101115对应密文:inkkf4.设π为集合{1,2,…,8}上的置换,求出逆置换π-1。x12345678π(x)41627385解:逆置换π-1为:x12345678π-1(x)246183575.解释为什么两个相对简单的密码(如代替和换位)的积可将安全提高到较高层次。答:两个相对简单的密码的积会使密码的搜索空间在大大有增加,例如,转轮机如果有3个转轮,所有整个系统重复使用:26*26*26=17576个不同的替换字母表。从而提高了安全层次。6.编程实现一种古典加密算法(Caesar、Playfair或Hill)。第二次习题1.混乱与扩散的差别是什么?扩散:指使明文的统计特性消散在密文中。等价于说每个密文数字被许多明文数字影响。混乱:尽可能的使密文和加密密钥之间的统计关系更复杂。阻止攻击者发现密钥。两者的差别在于作用对象不同,混乱是使密文和加密密钥之间的统计关系更复杂,扩散是使明文的统计特性消散在密文中,实现方式也不同,混乱使用的是代替的方法。扩散使用的是置换的方法。2.什么是雪崩效应?明文或密钥的微小改变将对密文产生很大的影响,特别的,明文或密文的某一位发生变化会导致密文的很多会变化,称为雪崩效应。3.为什么说研究Feistel密码很重要?绝大多数基于网络的对称密码都是使用的分组密码。针对理想分密码体制密钥随分组长度剧烈增长,Feistel密码用乘积密码来逼近简单代换密码,且强度强于所有单个密码的强度,混淆与扩散的引进抓住了设计分组密码的本质成为现代分组密码设计的里程碑,现代所有的对称分组密码都是基于Feistel密码结构,所以研究分组密码是十分有意义了。4.那些参数与设计选择决定了Feistel密码的实际算法?分组长度:分组越长,安全性越高,但会降低加,解密的速度。密钥长度:密钥越长,安全性越高,但会降低加,解密的速度。迭代轮数:多轮加密可以提高安全性子密钥产生算法:子密钥产生越复杂,密杩分析攻破就越难。轮函数:轮函数越复杂,抗攻击越强5.使用S-DES,用密钥0111111101手工解密二进制串10100010。给出执行IP、FK、SW、FK、IP-1后的中间值。再把前4位译码为另一个字母(例如将字母A,B,P分别对应为0000,0001,1111)。提示:执行SW后,串的形式为00010011。答:解密过程为:明文=)))))(((((211密文IPfSWfIPKK⑴由密钥0111111101生成K1和K2:Key:0111111101P10Key:1111110011LS-1/Left:11111LS-1/Right:00111Merged:1111100111K1:01011111LS-2/Left:11111LS-2/Right:11100Merged:1111111100K2:11111100⑵IP(密文):IP(10100010)=00110001⑶fK2(L,R):L=0011R=0001K2=(11111100),R=0001;第一步:n4n1n2n3=1000n2n3n4n1=0010第二步:1+10+10+10+1=01110+10+11+00+0=1110第三步:(0,1)行,(1,1)列查S0的1行3列产生00输出;(1,0)行,(1,1)列查S1的2行3列产生00输出;第四步:P4置换,得输出为F(R,K2)=(0000);Fk2=(L⊕F(R,K2),R)=00110001⑷SW将输入的左四位和右四位交换:SW=00010011⑸fK1(L,R):同第(4)步可得:Fk1=(L⊕F(R,K1),R)=10110011⑹IP-1:IP-1=11101010因此明文为:11101010映射到字母:OK;6.什么是3重加密?在3重加密中用到多少个密钥?3重加密就是对一段明文进行重复的三次加密。在3重加密加密中可以使用两个密钥,也可以使用三个密钥。第三次习题1.简述AES中的字节代换。AES的字节代换是一个简单的查表操作,AES定义了一个16*16字节的矩阵。State中的每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作业列值,然后取出S盒子中对应的原素作为输出。2.简述AES中的轮密钥加变换。轮密钥加变换中的正向轮密钥加变换:128位的state按位与128位的密钥异或。逆向轮密钥加变换与正向的一样。,轮密钥变换简单,却影响了每一位值。密钥扩展的复杂性和AES的其他阶段的复杂性,确定了该算法的安全性。3.链路加密与端到端加密的区别是什么?(1)在端系统和中间系统中的安全性:链路加密中,消息在发送主机时为明文,消息在中间节点为明文。端到端加密时,消息在发送主机和中间节点都为密文。(2)用户的作用:[1]链路加密是由发送主机应用,而端到端加密是由发送进程应用;[2]链路加密是对用户透明的,而端到端加密是应用用户加密;[3]链路加密是由主机维护加密设施,而端到端加密是由用户决定算法;[4]链路加密中所有用户用一个设施,而在端到端加密中由用户选择加密方案;[5]链路加密可以由硬件完成;而端到端加密是由软件实现;[6]链路加密中所有或没有报文被加密,而端到端加密中对每个报文有用户决定是否加密。(3)实现上的考虑:[1]链路加密中每对主机和中间结点、每个中间结点和中间结点之间都需要密钥,而端到端加密每个用户对需要一个密钥;[2]链路加密提供主机认证,而端到端加密提供用户认证4.什么是传输填充?其作用是什么?为了防止通信量攻击,通信量填充产生连续的明文输出,即使在没有明文时也不间断。有明文的时候,明文就被加密并传输,没有明文的时候,就把随机数据加密并传输。作用是,使得攻击者无法区分出真正的数据流和填充内容,因此也就无法推测出通信量的大小。5.公钥密码体制的主要成分是什么?公钥密码体制的三种应用是什么?明文:算法的输入。它们可以是可读信息与各种交换。加密算法:加密算法对明文进行的各种变换。分钥与私钥:这对密钥中一个用于加密,一个用于解密。密文:算法输出。以对给定的明文与密钥,产生的密文。解密算法:该算法接收密文与密钥,产生原始的明文。公钥密码体制的三种应用:加密与解密。数字签名,密钥交换。6.公钥和私钥的作用是什么?公钥与密钥都可以用来加密与解密。公钥加密,私钥解密的系统就是加密系统。私钥加密,公钥解密,就是认证系统。7.在一个使用RAS的公开密钥系统中,你截获了发给一个其公开密钥是e=5,n=35的用户的密文C=10。明文M是什么?N=pq=35P=5,q=7φ(n)=(p-1)(q-1)=24;de=1mod24d=5510(mod35)5dMC8.在一个RAS的系统中,一个给定用户的公开密钥是e=31,n=3599。求解这个用户的私有密钥。N=pq=3599p=59;q=61;φ(n)=(p-1)(q-1)=3480;乘法逆元QA1A2A3B1B2B3---103480013111201311-112831-1128-333771-333774-4491根据模算法性质,可得乘法逆元3031这个用户的私有密钥(3031,3599)9.编程实现一种加密算法或MillerandRabin提出的判断一个大素数的WITNESS算法。第四次习题10.消息认证是为了对付哪些类型的攻击?泄密;传输分析;伪装;内容修改;顺序修改;计时修改;发送方否认;接收方否认。11.什么是消息认证码?消息认证码又称MAC,也是一种认证技术,它利用密钥来产生一个固定长度的短数据块,并将数据块附加在消息之后。若接收的MAC与计算的MAC相等:(1)接收者可以确信消息M未被改变;(2)接收者可以确信消息来自所声称的发送者;(3)如果消息中包含顺序码(如HDLC,X.25,TCP),则接收者可以确信该序号的正确性。12.产生消息认证有哪些方法?消息加密:用完整消息的密文对消息进行认证。消息认证码:公开函数+密钥产生一个固定长度的值作为认证标识。散列函数:将任意长的消息映射成一个定长的信息。13.MD5中使用的基本算术和逻辑运算是什么?(1)增加填充位。填充消息使其长度与448模512同余。(2)填充长度,用64位表示填充后消息长度(3)初始化MD缓冲区:(4)以512位为单位处理消息。算法的核心是压缩函数,由“4”轮运算组成。4轮运算结构相同,但各轮使用不同的基本逻辑函数。F(b,c,d)(bc)(bd)G(b,c,d)(bd)(dc)H(b,c,d)bcdI(b,c,d)=c(bd)所有的L个512位分组处理完后,第L个分组输出就是128位消息摘要。MD5的操作的基本表达式是:0CVIV132IGqFqq(,[,[,[Y,RF[Y,CV]]]])qqqHqCVSUMCVRFYRFYRFLMDCV其中IV:缓存ABCD的初始值qY:第q个长度为512bit的报文分组L:报文(包括填充子段和长度字段)的分组数qCV:处理第q个报文分组时的连接变量xRF:使用原始逻辑函数x的循环函数MD:最终的报文摘要32SUM:对输入队中的每个字分别执行模322相加14.SHA-1中使用的基本算术和逻辑运算是什么?(1)增加填充位。填充消息使其长度与448模512同余。(2)填充长度,用64位表示填充后消息长度(3)初始化MD缓冲区:(4)以512位为单位处理消息。算法核心是具有4轮运算的模块,每轮执行20步迭代。4轮运算结构相同,但各轮使用不同的基本逻辑函数。分别是:1f(t,B,C,D)()()BCBD,(019)tt2f(t,B,C,D)DBC2(039)t3f(t,B,C,D)()()()BCBDCD4(059)t4f(t,B,C,D)DBC6(079)tSHA-1的操作的基本表达式是:0CVIV132q(,ABCDE)qqCVSUMCVLMDCV其中:IV:缓存ABCDE的初始值qABCDE:第q个长度为512bit的报文分组L:报文(包括填充子段和长度字段)的分组数MD:最终的报文摘要32SUM:对输入队中的每个字分别执行模322相加15.RIPEMD-160中使用的基本算术和逻辑运算是什么?(1)增加填充位。填充消息使其长度与448模512同余。(2)填充长度,用64位表示填充后消息长度(3)初始化MD缓冲区:(4)以512位为单位处理消息。算法的核心是具有十轮运算的模块,分成两组,每组5轮,每轮执行16步迭代。使用的逻辑函数:步骤编号函数(015)t1f(t,B,C,D)DBC(1631)t2f(t,B,C,D)()()BCBD(3247)t3f(t,B,C,D)()BCD(4863)t4f(t,B,C,D)()()BDDC(6479)t5f(t,B,C,D)()BCDRIPEMD-160的操作的基