(完整版)密码学复习题.docx

  • 格式:docx
  • 大小:16.04 KB
  • 文档页数:3

一、选择
1. 若一个单向函数存在一个附加信息,当不知道该附加信息时从函数值求原像是困难的,但是知道
该附加信息时从函数求原像是容易的,则该单向函数是
A. 陷门单向函数 B.门陷单向函数 C. 完全单向函数 D 容量单向函数
2. 标志着公钥密码学诞生的事件是
A. C.Shannon 发表的保密系统的通信理论
B. W.Diffle 和 M.Hellman 发表“密码学的新方向 ”一文
C. C.RSA 加密公钥的提出 D. 维吉利亚密码体制的提出。
3. 下列密码体制中,被认为无条件安全的是
A. 一次一密乱码本 (one-time pad) B.ElGamal C.RSA
D.Cramer-Shop

4. 下列密码体制中,不属该分组密码的是
A. IDEA B.AES C.ElGamal
D.DES

5. 目前通称的 AES 算法指的是
A. Terpent 算法 B.RCG 算法 C.Rijndael 算法 D.Tuofish 算法

二、填空
1. 按照一个明文字母是否总是被一个固定的字母代换进行划分,代换密码可分为 单表代换密码 和
多表代换密码 。
2. 经典密码学的 2 个分支: 密码编码学 和 密码分析学 。
3. 根据攻击者所拥有的信息不同, 对数字签名方案的攻击主要有 惟密钥攻击 ,已知消息攻击 ,选择消
息攻击 , 适应性选择消息攻击 四种常见的类型。
4. 分组密码主要有 电子密码本模式 (ECB) , 密码分组链接模式 (CBC) , 密码反馈模式 (CFB) ,输出
反馈模式 (OFB) 。
5. 根据密码分析者破译时已具备的条件, 把对密码系统的常见攻击分为 惟密文攻击 , 已知明文攻击 ,
选择明文攻击 , 选择密文攻击 。

三、问答
1.Feistel
密码结构主要部件是哪些?它在迭代运算中起到什么作用?

ANS:Feistel 密码是通过代替和置换 (S-P 网络 )交替的方式来构造分组密码,其实就是基于混乱和
扩散原理实现加解密运算。
S 盒变换:它把输入的一个 n 长的比特串转化为另一个 m 长的比特串输出。
P 盒变换:通过把一个比特串中各比特的位置次序重新排列而得到新的比特串的变换。

2.数字签名的四个特征?
ANS:数字签名具有以下特征:
(1) 收方能够确认或证实发方的签名,但不能伪造。
(2) 发方发出签名的消息给收方后,就不能再否认他所签发的消息。
(3) 收方对已收到的签名消息不能否认。
(4) 第三者可以确认收发双方之间的消息传送,但不能伪造这一过程。

3.分组密码主要优点是什么?其设计原则应考虑哪些问题?
ANS:分组密码的优点是:明文信息良好的扩展性,对插入的敏感性,不需要密钥同步,较强的
适用性,适合作为加密标准。在分组密码具体设计中,还需重点考虑的有: S 盒的设计、 P 盒的设计、
轮函数 F 的设计、迭代轮数以及密钥扩展算法等。
下面给出一个多项式时间的
IND-CCA2 敌手 A ,它可以按照如下方法攻破题中加密方案的
IND-CCA2 安全性 :

在 Setup Phase ,敌手 A 从挑战者处得到公钥 pk 。

在 Phase 1 ,敌手 A 无需进行任何解密查询。

在 Challenge Phase ,敌手输出两个等长的明文 m 0, m 1,然后从挑战者处得到挑战密文

C
* * *
r *r*
(c
1
,c2 ) ( y , g mb ) 。


在 Phase 2,敌手 A 首先通过篡改挑战密文来得到新的密文
C (c1* , 2c2* )

(注意到该新密文实

质上对应明文
2m b 的有效密文 )。然后,敌手 A 通过进行解密查询 < C >来得到相应的明文
2m b ,从而可以进一步得到 m b 。
知道了明文 m b ,敌手 A 当然可以获知 b 的值,从而可以知道敌手 A 针对题中的加密方案的
优势是不可忽略的 (即 1/2) 。从而题中的加密方案不是 IND-CCA2
安全的。
一个数字签名方案通常由密钥生成算法 KeyGen (k) 、签名算法 Sig(sk, m )和验证算法 Ver (pk ,
σ) 所组成。下面给出了一个数字签名方案的前两个算法,请据此推导出该签名方案的验证算法
Ver (pk , m , σ)。
( 5 分)

m ,

密钥生成算法 KeyGen (k): 输入安全参数
k, 该算法首先选取两个大素数 p 和
q ,其中
p
为 k 比特的大素数, q 是 p -1 的大素因子。然后随机选取一个生成元
g

Z *p ,且 g

q
1 mod p

接着随机选取
x
Zq* ,计算
y

g

x
mod p

。此外,还选取一个哈希函数

H:{0 ,1}* → Z *q 。最后

输出私钥
sk
x 和公钥
pk

( g, p, q, y, H )

签名算法 Sig(sk, m ): 输入私钥
sk
x 和消息
m

{0,1}

*
,该算法随机选取 r Zq ,计算

R g
r
mod p , e H (m || R) 和 s r xe mod q
。最后输出签名
( R, s)