《应用密码学》胡向东版习题和思考题答案(1) 联系客服

发布时间 : 星期二 文章《应用密码学》胡向东版习题和思考题答案(1)更新完毕开始阅读d334ed68fd0a79563d1e72cf

4-10 基于最优化正规基表示的GF(2)域,计算?1010?和?1101?分别等于多少?

4109 解:按照最优化正规基表示的乘法计算方法,有:

?1010?10=?1010?2??1010?8=?0101???0101?=?1010? ?1101?9=?1101???1101?8=?1101???1011?=?0001?。

4-11 什么是计算复杂性?它在密码学中有什么意义? 答:计算复杂性理论提供了一种分析不同密码技术和算法的计算复杂性的方法,它对密码算

法及技术进行比较,然后确定其安全性,是密码安全性理论明文的基础,涉及算法的复杂性和问题的复杂性两个方面,为密w位w位码算法的“实际上”安全提供了依据。

L0R0K1XORF第5章 对称密码体制

5-1 画出分组密码算法的原理框图,并解释其基本工作原理。 答:

m?(m0,m,mL?1)1,m2,?加密算法L1第1轮R1c?(c0,c1,c2,?,cL?1)密文分组解密算法m?(m0,m,mL?1,m2,?明文分组KiXORF明文分组k?(k0,k1,k2,?,kt?1)k?(k0,k1,k2,?,kt?1)图5-1 分组密码原理框图Li第i轮Ri

分组密码处理的单位是一组明文,即将明文消息编码后的数字序列m0,m1,m2,?,mi划分成长为L位的组

KnXORFm??m0,m1,m2,,各个长为L的分组分别在密钥,Lm??1k??k0,k1,k2,Rn,kt?1?(密钥长为t)的控制下变换成与明

,cL?1?。

Ln第n轮文组等长的一组密文输出数字序列c??c0,c1,c2,L通常为64或128。解密过程是加密的逆过程。

5-2 为了保证分组密码算法的安全强度,对分组密码算法的要求有哪些? 答:(1)分组长度足够大;(2)密钥量足够大;(3)密码变w位w位换足够复杂。 密文5-3 什么是SP网络? 图5-6 Feistel密码结构答:SP网络就是由多重S变换和P变换组合成的变换网

络,即迭代密码,它是乘积密码的一种,由Shannon提出。其基本操作是S变换(代替)和P变换(换位),前者称为S盒,后者被称为P盒。S盒的作用是起到混乱作用,P盒的作用是起到扩散的作用。 5-4 什么是雪崩效应?

答:雪崩效应是指输入(明文或密钥)即使只有很小的变化,也会导致输出发生巨大变化的现象。即明文的一个比特的变化应该引起密文许多比特的改变。

5-5 什么是Feistel密码结构?Feistel密码结构的实现依赖的主要参数有哪些? 答:

Feistel密码结构如图5-6所示。加密算法的输入是长为2w位的明文和密钥K,明文被均分为长度为w位的L0和R0两部分。这两部分经过n轮迭代后交换位置组合在一起成

Ln+1Rn+1为密文。其运算逻辑关系为:

Li?Ri?1(i?1,2,,n)

,n)

Ri?Li?1?F(Ri?1,Ki)(i?1,2,每轮迭代都有相同的结构。代替作用在数据的左半部分,它通过轮函数F作用数据的右半部分后,与左半部分数据进行异或来完成。每轮迭代的轮函数相同,但每轮的子密钥Ki不同。代替之后,交换数据的左右部分实现置换。

Feistel结构的实现依赖的主要参数是:分组长度、密钥长度、迭代轮数、子密钥生成算法、轮函数。

5-6 简述分组密码的设计准则。

答:分组密码的设计准则主要包括S盒的设计准则、P盒的设计准则、轮函数F的设计准则、迭代的轮数以及子密钥的生成方法。

5-7 什么是分组密码的操作模式?有哪些主要的分组密码操作模式?其工作原理是什么?各有何特点?

答:通常,分组密码算法(如典型的DES)是提供数据安全的一个基本构件,它以固定长度的分组作为基本的处理单位。分组密码的操作模式就是如何在各种各样的应用中使用这

些基本构件。

Li-1(32位)Ri-1(32位) 主要有ECB、CBC、CTR、OFB、CFB等五种分

组密码操作模式。具体原理及特点参见教材。

F5-8 在8位的CFB模式中,若传输中一个密文扩展变换E变字符发生了一位错误,这个错误将传播多远? 密换48位钥答:9个明文字符受影响。因为除了与密文字符48位产+Ki相对应的一个明文字符受影响外,受影响的该明生48位器文字符进入移位寄存器,直到接下来的8个字符

处理完毕后才移出。 选择压缩变换S盒代替5-9 描述DES的加密思想和F函数。

32位答:DES 算法的加密过程经过了三个阶段:

首先,64位的明文在一个初始置换IP 后,比特置换运算P重排产生了经过置换的输入,明文组被分成右半

32位部分和左半部分,每部分32位,以L0和R0表示。

+接下来的阶段是由对同一个函数进行16次循环组成的,16轮迭代称为乘积变换或函数F,这个函

Li(32位)Ri(32位)数本身既包含有换位又包含有代替函数,将数据和密钥结合起来,最后1轮的输出由64位组成,图5-18 DES算法的一轮迭代处理过程其左边和右边两个部分经过交换后就得到预输

-1

出。最后阶段,预输出通过一个逆初始置换IP算法就生成了64位的密文结果。 F函数的变换如下图所示。

5-10 为什么要使用3DES?

答:随着计算机处理能力的提高,只有56位密钥长度的DES算法不再被认为是安全的。因此DES需要替代者,其中一个可替代的方案是使用3DES。3DES的优点:(1)密钥长度增加到112位或168位,可以有效克服DES面临的穷举搜索攻击;(2)相对于DES,增强了抗差分分析和线性分析的能力;(3)具备继续使用现有的DES实现的可能。 5-11 AES的主要优点是什么?

答:AES的主要优点表现为:汇聚了安全性能、效率、可实现性和灵活性等优点,最大的优点是可以给出算法的最佳差分特征的概率,并分析算法抵抗差分密码分析及线性密码分析的能力。AES对内存的需求非常低,也使它很适合用于受限制的环境中,AES的操作简单,并可抵御强大和实时的攻击。

5-12 AES的基本运算有哪些?其基本运算方法是什么?

答: AES的基本运算包括字节运算和字运算。基本运算方法(略)。 5-13 AES的基本变换有哪些?其基本的变换方法是什么?

答:AES的基本变换包括三个代替和一个混淆:(1)字节代替SubBytes:用一个S盒完成分组中的按字节的代替;(2)行移位ShiftRows:一个简单的置换;(3)列混淆MixColumns:

8

一个利用在域GF(2)上的算术特性的代替;(4)轮密钥加AddRoundKey:一个利用当前分组和扩展密钥的一部分进行按位异或。 基本变换方法(略)。

5-14 AES的解密算法和AES的逆算法之间有何不同?

答:AES的逆算法是相对加密基本变换而言的,即存在InvSubBytes、InvShiftRows、InvMixColumns变换。

AES的解密算法是相对于加密算法而言的,它由InvSubBytes、InvShiftRows、InvMixColumns和AddRoundKey等基本变换构成。

8

5-15 在GF(2)上{01}的逆是什么? 答:01。

第6章 非对称密码体制

6-1 为什么要引入非对称密码体制?

答:对称密码体制不能完全适应应用的需要,主要表现在以下三个方面:密钥管理的困难性问题、陌生人间的保密通信问题、数字签名问题,而非对称密码体制可以在这三个方面有较好的解决方案。

6-2 对公钥密码体制的要求是什么? 答:(1)参与方B容易通过计算产生一对密钥(公开密钥KUb和私有密钥KRb)。 (2)在知道公开密钥和待加密报文M的情况下,对于发送方A,很容易通过计算产生对应

的密文:C?EKUb(M) 。 (3)接收方B使用私有密钥容易通过计算解密所得的密文,以便恢复原来的报文: M?DKRb(C)?DKRb(EKUb(M))

(4)敌对方即使知道公开密钥KUb,要确定私有密钥KRb在计算上是不可行的。 (5)敌对方即使知道公开密钥KUb和密文C,要想恢复原来的报文M在计算上也是不可行的。

(6)两个密钥中的任何一个都可以用来加密,对应的另一个密钥用来解密(这一条不是对所有公开密钥密码体制都适用): M?DKRb(EKUb(M))(机密性实现)

M?DKUb(EKRb(M))(数字签名实现)。

6-3 什么是陷门单向函数?陷门单向函数有何特点?如何将其应用于公钥密码体制中?

答:陷门单向函数是满足下列条件的函数f: (1) 正向计算容易。即如果知道了密钥pk和消息x,容易计算y?fpk(x)。

(2) 在不知道密钥sk的情况下,反向计算是不可行的。即如果只知道消息y而不知道密钥sk,则计算x?f计算x?f?1?1sk(y)是不可行的。

(3) 在知道密钥sk的情况下,反向计算是容易的。即如果同时知道消息y和密钥sk,则

sk(y)是容易的。这里的密钥sk相当于陷门,它和pk是配对使用的。

特点:对于陷门单向函数而言,它是指除非知道某种附加的信息,否则这样的函数在一个方向上计算容易,在另外的方向上要计算是不可行的;有了附加信息,函数的逆就可以容易计算出来。

公钥密码体制中的公钥用于陷门单向函数的正向(加密)计算,私钥用于反向(解密)计算。

6-4 简述公钥密码体制的主要应用方向?

答:大体上说,可以将公开密钥密码系统的应用分为三类:机密性的实现(发送方用接收方的公开密钥加密报文,接收方用自已对应的私钥来解密)、数字签名即防否认性的实现(发

送方用自己的私钥“签署”报文,接收方用发送方配对的公开密钥来解密以实现鉴别)和密钥交换(即用常规密码体制加密需要保密传输的消息本身,然后用公钥密码体制加密常规密码体制中使用的会话密钥,将二者结合使用)。

6-5 简述Diffie-Hellman算法实现密钥交换的原理。该算法基于什么数学难题?

答:Diffie-Helllman密钥交换原理:假设用户A和用户B希望安全地交换一个密钥,他们需要先确定并都知道两个整数:一个素数q和一个整数a,这两个整数对用户A和B是共享的,但对其他人是保密的。整数a是素数q的一个本原元。用户A选择一个随机数

XA?q,并计算:YA?aXAmodq。类似地,用户B选择一个随机数XB?q,并计算:YB?aXBmodq。

每一方都保密存放自己的随机数XA或XB(相当于私钥),并使YA或YB(相当于公钥)的值对于另一方可以公开得到。用户A计算K?(YB)用户B计算K?(YA)XBXAmodq,并将其作为自己的密钥;

modq,并将其作为自己的密钥。通过这种方式,双方共享了一个

密钥K,相当于双方交换了一个密钥。

Diffie-Helllman密钥交换算法的有效性依赖于计算有限域中离散对数的困难性。 6-6 设Diffie-Hellman方法中,公用素数q=11,本原元等于2。若用户A的公钥Ya=9,则A的私钥Xa为多少?如果用户B的公钥Yb=3,则共享的密钥K为多少? 解:YA?aXAmodq,即9=2Xamod11,经推算得Xa=6(这里在公用素数很小的情况下

Xa得出的,实际使用时公用素数应很大,这就是离散对数的难解性问题)。 如果用户B的公钥Yb=3,则共享的密钥K=YBmodq?36mod11?5。

6-7 RSA算法的理论基础是什么? 答:大数因子分解的困难性。 6-8 编写程序实现RSA算法。 略。

6-9 设通信双方使用RSA加密体制,接收方的公开密钥是(5,35),接收到的密文是10,求明文。

解:据题意知:e=5,n=35,C=10。 因此有:??n????35????5???7??4?6?24

d?e?1mod??n??5?1mod24?5

所以有:M?Cmodn?10mod35?5。

6-10 选择p=7,q=17,e=5,试用RSA方法对明文m=19进行加密、解密运算、给出签名和验证结果(给出其过程),并指出公钥和私钥各为什么? 解:加密:n?pq?7?17?119

d5C?memodn?195mod119?66

解密:??n????119????7???17??6?16?96

d?e?1mod??n??5?1mod96?77

所以,m?Cmodn?66mod119?19 签名:y?mmodn?19mod119?66

验证:x?ymodn?66mod119?19?m,该签名是真实的。 6-11 在RSA体制中,给定某用户的公钥e=31,n?3599,那么该用户的私钥等于多少? 解:3031。

6-12 编写程序计算:1615mod4731。 程序略。

6-13 试编写程序判断2537是否为素数。

e5d77d77