答: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程序略。
6-14 ECC的理论基础是什么?它有何特点?
答:ECC的理论基础是椭圆曲线离散对数问题的难解性。
ECC与RSA相比的主要优点在于:它用少得多的比特大小能够取得和RSA同等强度的安全性,因此减少了处理开销,具有存储效率、计算效率和通信带宽的节约等方面的优势,特别适用于那些对计算能力没有很好支持的系统,如智能卡、手机等。
6-15 椭圆曲线E11(1,6)表示y2?x3?x?6mod11,求其上的所有点。对于E11(1,6)上的点G?(2,7),计算2G的值。
解:对于x的所有可能值,计算方程右边的值。
x 是mod p平方根? y 3x + x + 6 mod 11 0 1 2 3 4 5 6 7 8 9 10 6 8 5 3 8 4 8 4 9 7 4 no no yes yes no yes no yes yes no yes 4, 7 5, 6 2, 9 2, 9 3, 8 2, 9 即所有点为:(2,4),(2,7),(3,5),(3,6),(5,2),(5,9),(7,2),(7,9),(8,3), (8,8),(10,2),(10,9)。
要计算 2G = (2, 7) + (2, 7), 先计算:
可得:
所以:
x3 = 82–2–2 mod 11 = 5 y3 = 8(2–5)–7 mod 11 = 2 2G = (5, 2)
23 ? ?= (3×22 + 1)/(2×7) mod 11
= 13/14 mod 11 = 2/3 mod 11 = 8
6-16 设实数域上的椭圆曲线为y=x-36x,令P=(?3.5,9.5),Q?(?2.5,8.5)。计算
P?Q。
解:将 xP = –3.5, yP = 9.5, xQ = –2.5, yQ = 8.5 代入椭圆曲线加方程易得:
xR = 7、 yR = 1。
因此:P + Q = (7, 1)。
6-17 利用椭圆曲线实现ElGamal密码体制,设椭圆曲线是E11(1,6),生成元G?(2,7),接收方A的秘密密钥nA?7。求: (1)A的公开密钥PA。
(2)发送方B欲发送消息Pm?(10,9),选择随机数k?3,求密文Cm。 (3)显示接收方A从密文Cm恢复消息Pm的计算过程。 解:(1)PA?nA?G?7??2,7???7,2?。
Cm??kG,Pm?kPA???3?2,7?,?10,9??3?7,2??
(2)???8,3?,?10,9???3,5?????8,3?,?10,2??
(3)Pm??10,2??7?8,3???10,2???3,5???10,2???3,6???10,9?。
第7章 HASH函数和消息认证
7-1 什么是HASH函数?对HASH函数的基本要求和安全性要求分别是什么?
答:HASH函数是一种单向密码体制,即它是一个从明文到密文的不可逆映射,只有加密过程,不能解密。HASH函数可以将任意长度的输入经过变换以后得到固定长度的输出。
HASH函数的基本要求:①算法公开,不需要密钥。②有数据压缩功能,能将任意长度的输入转换成一个固定长度的输出。③容易计算。即给出消息M,要计算出该消息的散列值
h?M?是容易的。
HASH函数的安全性要求:①给定消息的散列值h?M?,要求出M是计算上不可行的。 ②给定消息M和其散列值h?M?,要找到另一个与M不同的消息M?,使得它们的散列值相同是不可能的(即抗弱碰撞性)。
③对于任意两个不同的消息M和M?,它们的散列值不可能相同(即抗强碰撞性)。 7-2 安全HASH函数的一般结构是什么? 答:安全HASH函数的一般结构如下图所示。
消息M填充,附加位长度等M1M2??MtIV即fH1f压缩函数H2??Htg输出变换H0h?M?图7-1 安全散列函数的一般结构
7-3 为什么要进行HASH填充?
答:HASH函数的处理是以分组为单位,在生成散列值之前,在对输入消息进行分组时,如
果最后一块报文不足r位,就要进行填充。 7-4 HASH函数的主要应用有哪些?
HASH函数的主要应用有:数字签名、生成程序或文档的“数字指纹”、用于安全存储口令。 7-5 简述散列算法的设计方法及其分类。 答:散列算法的设计主要可分为三大类: (1)基于模数运算
这种设计方法是使用公开密钥算法来设计单向散列函数。通常可以使用CBC模式基于公开密钥算法对消息进行加密,并输出最后一个密文分组作为散列值。如果丢弃用户的密钥,这时的散列值将无法解密,也就是说,它满足了散列函数的单向性要求。一般情况下它的计算速度十分的慢,实用性差。 (2)基于分组加密
就是用对称分组算法设计单向散列函数。同样可以使用对称分组算法的CBC模式或CFB模式来产生散列值。它将使用一个固定的密钥及IV加密消息,并将最后的密文分组作为散列值输出。这类设计已经提出了一些方案,如MDC-2和MDC-4等。 (3)定制的
这类单向散列函数并不基于任何假设和密码体制,而是通过直接构造复杂的非线性关系达到单向要求,设计单向散列函数。这类算法典型的有:MD2、MD4 、MD5、SHA-1、PIPEMD-160等算法。
7-6 编写程序实现SHA-1? 略。
7-7 什么是消息认证?为什么要进行消息认证?消息认证的实现方法有哪些? 答:消息认证是使目标消息接收者能够检验收到的消息是否真实的认证方法。
消息认证的目的主要有两个:第一,验证信息的来源是真实的,而不是伪造的,此为信息源认证;第二,验证信息的完整性,即验证信息在传送或存储过程中未被篡改、重放或延迟等。
任何认证系统在功能上划分为两个层次:底层的认证函数产生一个用来认证消息的认证标识,上层的认证协议基于认证标识提供了一种能使接收方验证消息真实性的机制。认证函数分为三类:
(1) 消息加密函数:用整个消息的密文作为对消息进行认证的认证标识。 (2) 消息认证码MAC:是以消息和密钥作为输入的公开函数,产生定长的输出,并以此输出值作为认证标识。
(3) 散列函数:是一个不需要密钥的公开函数,它将任意长度的输入消息映射成一个固定长度的输出值,并以此值作为认证标识。
7-8 什么是认证协议?举例说明单向认证和双向认证。
答:认证协议就是能使通信各方证实对方身份或消息来源的通信协议。 例略。
第8章 数字签名
8-1 数字签名有什么特殊性?
答:电子文档的物理载体表现为电磁信号、所携带的文字符号以二进制编码的逻辑形式存在,可以任意分割、复制而不被察觉,且数字信息本身没有个性特征,如果按照传统方式进行电子文档的签名,签名本身将很容易被伪造和重用,完全达不到签名的目的。 8-2 数字签名的性质是什么?
答:数字签名应该具有以下性质: (1)签名是对文档的一种映射,不同的文档内容所得到的映射结果是不一样的,即签名与文档具有一一对应关系;(精确性)
(2)签名应基于签名者的唯一性特征(如私钥),从而确定签名的不可伪造性和不可否认性;(唯一性)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《应用密码学》胡向东版习题和思考题答案 (1)(3)在线全文阅读。
相关推荐: