一、选择
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,然后从挑战者处得到挑战密文
**
***12(,)(,)r r b C c c y g m ==。
④ 在Phase 2,敌手A 首先通过篡改挑战密文来得到新的密文**12(,2)C c c '=(注意到该新密文实质上对应明文2m b 的有效密文)。然后,敌手A 通过进行解密查询< C '>来得到相应的明文2m b ,从而可以进一步得到m b 。
知道了明文m b ,敌手A 当然可以获知b 的值,从而可以知道敌手A 针对题中的加密方案的优势是不可忽略的(即1/2)。从而题中的加密方案不是IND-CCA2安全的。
一个数字签名方案通常由密钥生成算法KeyGen (k )、签名算法Sig (sk , m )和验证算法Ver (pk , m , σ)所组成。下面给出了一个数字签名方案的前两个算法,请据此推导出该签名方案的验证算法Ver (pk , m , σ)。 (5分)
● 密钥生成算法KeyGen (k ): 输入安全参数k , 该算法首先选取两个大素数p 和q ,其中p
为k 比特的大素数, q 是p -1的大素因子。然后随机选取一个生成元*p Z g ∈,
且p g q m od 1≡。接着随机选取*q x Z ∈,计算mod x y g p =。此外,还选取一个哈希函数H :{0,1}*→*q
Z 。最后输出私钥sk x =和公钥(,,,,)pk g p q y H =。 ● 签名算法Sig (sk , m ): 输入私钥sk x =和消息*
{0,1}m ∈ ,该算法随机选取q r Z ∈,计算mod r R g p =,(||)e H m R =和mod s r xe q =+。最后输出签名(,)R s σ=。
因篇幅问题不能全部显示,请点此查看更多更全内容