现代密码学期末考试题
别丢掉-大学生实习心得
班级:________学号:_______ 班内序号_____
姓名:_________
--------------------------------装
----------------------订
---------------------------------------
线-------------------------------------------------
北京邮电大学2005——2006学年第二学期
《现代密码学》期末考试试题(A卷)
考
试
注
意
事
项
一、学生参加考试须带学生证或学
院证明,未带者不准进入考场。学生必须按照监考教师指定
座位就坐。
二、书本、参考资料、书包等与考试无关的东西一律放到考场指定位置。
三、学生不得另行携
带、使用稿纸,要遵守《北京邮电大学考场规则》,有考场违纪或作弊行为
者,按相应规定严肃处理。
四、学生必须将答题内容做在专用答题纸上,做在试卷、草稿纸上一律无效。
一
二
三
四
考试时间
五
六
年 月
日
七
八
总分
考试课程
题号
满分
得分
阅卷
教师
试题一(10分):密码系统安全性的定义有几种?它们的含义是什么?
答:现有两种定义“
安全性”的方法。一种是基于信息论的方法(经典方法)。另一种是基于计算复杂性理论的方法(现
代方
法)。
基于信息论的定义是用密文中是否蕴含明文的信息作为标准。不严格地说,若密
文中不含明文的任何信息,则认为该密
码体制是安全的,否则就认为是不安全的。
基于计算复
杂性理论的安全性定义则不考虑密文中是否蕴含明文的信息,而是考虑这些信息是否能有效地被提取出来。
换句话说,把搭线者提取明文信息的可能性改为搭线者提取明文信息的可行性,这种安全性称为有条件安全性,
即搭线者在
一定的计算资源条件下,他不能从密文恢复出明文。
试题二(10分): 假设Hill密码加密使用密钥
K
<
br>118
,试对明文abcd加密。
37<
br>
118
118
答:(a,b)=(0,1)加密后变为(0,1)
同理(c,d)=(2,3) 加密
后变为(2,3)
37
=(3,7)=(d,h
);
37
=(31,37)=(5,11)=(F,L)。<
br>
所以,明文(abcd)经过Hill密码加密后,变为密文(DHFL)。
试题三(10分):设有这样一个密码系统,它的明文空间
P
x,y
的概率分布为
p
P
(x)14,p
P
(y)34
;它
的密钥空间
K
a,b,c
的概率分布为
p
K
(a)12,p
K
(b)p
K
(c)1
4
;它的密文空间
C
1,2,3,4
,假定该密码系
统的加密函数为:
e
a
(x)1,e
a
(y)2;e<
br>b
(x)2,e
b
(y)3;e
c
(x)3,e
c
(y)4
。请计算:
(1) 密文空间的概率分布;
(2)
明文关于密文的条件分布;
(3) 明文空间的熵。
答:(1)密文空间的概率分布为:18;716;14;316
(2)明文关于密文的条件分布
p(mc)
表如下:
11333
(3)明文空间的熵为:<
br>H(P)log
2
log
2
2(log
2
3)0.81
44444
m
c
1
2
3
4
x
1
17
14
0
y
0
67
34
1
试题四(10分)设DES密码中
的初始密钥是K=(
b
0
,b
1
,,b
63
,)
,记DES加密算法中16轮加密过程中所使
用的子密钥分别为
K
1
,K2
,,K
16
。请你计算出第一个子密钥
K
1
的数学
表达式。
答:先对初始密钥K=(
b
0
,b
1
,,b<
br>63
,)进行一个密钥置换PC-1(见下PC-1表1),将初始密钥的8个奇偶校验位剔除掉
,而
留下真正的56比特初始密钥(
C
0
D
0
)。接着分别
对
C
0
及
D
0
进行左一位循环,得到
C
1
与
D
1
,连成56比特数据。再依密钥
置换PC-2(如下PC-
2表2)做重排,便可得到子密钥
K
1
。
表1:密钥置换PC-1 表2 密钥置换PC-2
PC-1
PC-2
57 49 41 33 25 17 9
14
17 11 24 1 5
1 58 50 42 34 26 18
3 28 15 6
21 10
10 2 59 51 43 35 27
23 19 12 4 26 8
19 11 3 60 52 44 36
16 7 27 20 13 2
63
55 47 39 31 23 15
41 52 31 37 47 55
7 62
54 46 38 30 22
30 40 51 45 33 48
14 6 61
53 45 37 29
44 49 39 56 34 53
21 13 5 28
20 12 4
46 42 50 36 29 32
试题五(10
分)设p和q是两个大于2的素数,并且n=pq。记
(m)
是比正整数m小,但与
m互素的正整
数个数。再设e和d是两个正整数,分别满足gcd(e,
(n)
)=1 ,ed
1(mod
(n)<
br>)。设函数E(m)和D(c)分
别定义为E(m)
m
e
(
mod n)和D(c)
c
d
(mod
n)。请问(1)
(n)
等于多少?
(2)请证明对于任何正整
数m,都成立恒等式D(E(m))=m。
答:(1)
(n)
=(p-1)(q-1)。
(2)其实
,只需要证明RSA的解密正确性就行了。当(m,n)=1时,则由欧拉定理可知m
(n)
1(modn)
。
当(m,n)>1时,由于n=pq, 故(m,n)必含p,
q之一。不妨设(m,n)=p,则m=cp,(1
c
(q)
1(modq)
。
因此,对于任何k,总有m
k(q1)
1(modq)
,
m
k(p1)(q1)
(1)
k(p1)
1(modq)
,即m
k
(n)
1(modq)
。于是存在h(h是某个整数)
满足m
k
(n)
+hq=1。由假定m=cp。故m=
m
k
(n)1
+hcpq= m
k
(n)
1
+hcn。这就证明了m=m
k
(n)1
(mod n)。
因此对于n及任何m(m
(n)1
m(mo
dn)
。所以,D(E(m))=D(c)
c
d
=m
e
d
=m
l
(n)1
=m(mod n)。命题得证。
试题六(10分):(1)请利用著名的RSA公钥密码算法设计一个数字签名算法(
称为RSA签名算法)。
(2)由于RSA签名算法每次只能对一个固定长度(比如N比特)的消息进行
签名,为了对任意长度的消
息进行签名,有人建议了这样一种处理方法:首先将长消息切割成固定长度N
比特的数据块,然后用RSA
签名算法对每个数据块进行签名,最后将这些签名块拼接起来就得到了长消
息的签名。请问这种切割处理
方法所获得的签名算法安全吗?为什么?
答:(1)RSA签名算法的系统参数可设为n=pq,且p和q是两个大素数,则
M=A=Z
n
,定义К={(n,d,p,q,e)}这里e和d
满
足ed
1(modΦ(n))( Φ()是欧拉函数)。公开密钥
n,d;私有密钥 p,q,e; 签名算法为Sig
K
2
(x)=x
e
mod n;签名验证算法为
Ver(x,y)=TRUE
x
y
d
(modn). (x,y)
Z
n
Z
n
。更直观地说,用RSA解密算法作为签名,用RSA的加
密作为验证,于是,只
有合法用户自己才能签名,而任何人都可以验证签名的真实性。其实,基于任何一
个加、解密算法顺序可交换的密码算法都
可用于设计一个数字签名算法,只需要以解密做签名,以加密做
验证就行了。
(2)切割和拼接处理方法所获得的签名算法不安全。因为,假如m和n是两个N
比特的消息,那么,黑客可以通过已知
的m和n的签名S(m)S(n),至少获得另一个消息nm的合
法签名S(n)S(m)。
试题七(10分):(1)请详细叙述Diffie-
Hellman密钥预分配协议;(2)如果去掉Diffie-Hellman密钥
预分配协议中的证
书(即不存在可信中心),请你给出一种有效的中间人攻击方法,即攻击者截获通信双方
通信的内容后可
分别冒充通信双方,以获得通信双方协商的密钥。
答:(1)为完整描述Diffie-Hellman密钥预分配协议,用ID(U)表示网络中用户U的某些识
别信息。每个用户U有一
个秘密指数
a
U
(0a
U
p
2)
和一个相应的公钥
b
U
a
U
mo
dp
。
可信中心有一个签名方案,该签名方案的公开验证算法记为Ver
TA
,秘密签名算法记为Sig
TA
。当一个用户U入网时,可信
中心需给他颁发一个证
书:C(U)=(ID(U),b
U
,Sig
TA
(ID(U),b
U
))。可信中心对证书的签名允许网络中的任何人能验证它所包含的信
息。U和V计算共同的
密钥
k
U,V
a
U
a
V
mo
dp
的协议,即,Diffie-Hellman密钥预分配协议如下:
*
1)公开
一个素数
p
和一个本原元
Z
P
。
2)V使用
他自己的秘密值
a
V
及从U的证书中获得的公开值
b
U
,计
算
a
V
k
U,V
aU
a
V
modpb
U
modp
3)U使用
他自己的秘密值
a
U
及从V的证书中获得的公开值
b
V
,计
算
a
U
k
U,V
a
U
a
V
modpb
V
modp
(2)如果在上述Diffie-Hellman密钥预分配协议中去掉了可信中心和证书,那么,黑客可以按如
下步骤分别与U和V约
定合法的密钥,从而,窃听U和V的全部通信过程:黑客以V的身份,与U完成预
分配协议,获得一个与U共享的密钥A;
同时,黑客以U的身份,与V完成预分配协议,获得一个与V
共享的密钥B。当U想将消息M加密发送给V时,U用A做
密钥,由于,黑客知道密钥A,所以,黑客能
够解密获得消息M。然后,黑客再用B做密钥对消息M加密,并将此密文发给
用户V,用户V用B解密获
得M。在该中间人过程中,黑客既能够窃听U与V通信的全部过程,而且,用户U与V无法感
觉到中间人的存在。
班级:________学号:_______
班内序号_____ 姓名:_________
--------------------------------装
----------------------订
---------------------------------------
线-------------------------------------------------
北京邮电大学2005——2006学年第二学期
《现代密码学》期末考试试题(A卷)
考
试
注
意
事
项
一、学生参加考试须带学生证或学
院证明,未带者不准进入考场。学生必须按照监考教师指定
座位就坐。
二、书本、参考资料、书包等与考试无关的东西一律放到考场指定位置。
三、学生不得另行携
带、使用稿纸,要遵守《北京邮电大学考场规则》,有考场违纪或作弊行为
者,按相应规定严肃处理。
四、学生必须将答题内容做在专用答题纸上,做在试卷、草稿纸上一律无效。
一
二
三
四
考试时间
五
六
年 月
日
七
八
总分
考试课程
题号
满分
得分
阅卷
教师
试题一(10分):密码系统安全性的定义有几种?它们的含义是什么?
答:现有两种定义“
安全性”的方法。一种是基于信息论的方法(经典方法)。另一种是基于计算复杂性理论的方法(现
代方
法)。
基于信息论的定义是用密文中是否蕴含明文的信息作为标准。不严格地说,若密
文中不含明文的任何信息,则认为该密
码体制是安全的,否则就认为是不安全的。
基于计算复
杂性理论的安全性定义则不考虑密文中是否蕴含明文的信息,而是考虑这些信息是否能有效地被提取出来。
换句话说,把搭线者提取明文信息的可能性改为搭线者提取明文信息的可行性,这种安全性称为有条件安全性,
即搭线者在
一定的计算资源条件下,他不能从密文恢复出明文。
试题二(10分): 假设Hill密码加密使用密钥
K
<
br>118
,试对明文abcd加密。
37<
br>
118
118
答:(a,b)=(0,1)加密后变为(0,1)
同理(c,d)=(2,3) 加密
后变为(2,3)
37
=(3,7)=(d,h
);
37
=(31,37)=(5,11)=(F,L)。<
br>
所以,明文(abcd)经过Hill密码加密后,变为密文(DHFL)。
试题三(10分):设有这样一个密码系统,它的明文空间
P
x,y
的概率分布为
p
P
(x)14,p
P
(y)34
;它
的密钥空间
K
a,b,c
的概率分布为
p
K
(a)12,p
K
(b)p
K
(c)1
4
;它的密文空间
C
1,2,3,4
,假定该密码系
统的加密函数为:
e
a
(x)1,e
a
(y)2;e<
br>b
(x)2,e
b
(y)3;e
c
(x)3,e
c
(y)4
。请计算:
(1) 密文空间的概率分布;
(2)
明文关于密文的条件分布;
(3) 明文空间的熵。
答:(1)密文空间的概率分布为:18;716;14;316
(2)明文关于密文的条件分布
p(mc)
表如下:
11333
(3)明文空间的熵为:<
br>H(P)log
2
log
2
2(log
2
3)0.81
44444
m
c
1
2
3
4
x
1
17
14
0
y
0
67
34
1
试题四(10分)设DES密码中
的初始密钥是K=(
b
0
,b
1
,,b
63
,)
,记DES加密算法中16轮加密过程中所使
用的子密钥分别为
K
1
,K2
,,K
16
。请你计算出第一个子密钥
K
1
的数学
表达式。
答:先对初始密钥K=(
b
0
,b
1
,,b<
br>63
,)进行一个密钥置换PC-1(见下PC-1表1),将初始密钥的8个奇偶校验位剔除掉
,而
留下真正的56比特初始密钥(
C
0
D
0
)。接着分别
对
C
0
及
D
0
进行左一位循环,得到
C
1
与
D
1
,连成56比特数据。再依密钥
置换PC-2(如下PC-
2表2)做重排,便可得到子密钥
K
1
。
表1:密钥置换PC-1 表2 密钥置换PC-2
PC-1
PC-2
57 49 41 33 25 17 9
14
17 11 24 1 5
1 58 50 42 34 26 18
3 28 15 6
21 10
10 2 59 51 43 35 27
23 19 12 4 26 8
19 11 3 60 52 44 36
16 7 27 20 13 2
63
55 47 39 31 23 15
41 52 31 37 47 55
7 62
54 46 38 30 22
30 40 51 45 33 48
14 6 61
53 45 37 29
44 49 39 56 34 53
21 13 5 28
20 12 4
46 42 50 36 29 32
试题五(10
分)设p和q是两个大于2的素数,并且n=pq。记
(m)
是比正整数m小,但与
m互素的正整
数个数。再设e和d是两个正整数,分别满足gcd(e,
(n)
)=1 ,ed
1(mod
(n)<
br>)。设函数E(m)和D(c)分
别定义为E(m)
m
e
(
mod n)和D(c)
c
d
(mod
n)。请问(1)
(n)
等于多少?
(2)请证明对于任何正整
数m,都成立恒等式D(E(m))=m。
答:(1)
(n)
=(p-1)(q-1)。
(2)其实
,只需要证明RSA的解密正确性就行了。当(m,n)=1时,则由欧拉定理可知m
(n)
1(modn)
。
当(m,n)>1时,由于n=pq, 故(m,n)必含p,
q之一。不妨设(m,n)=p,则m=cp,(1
c
(q)
1(modq)
。
因此,对于任何k,总有m
k(q1)
1(modq)
,
m
k(p1)(q1)
(1)
k(p1)
1(modq)
,即m
k
(n)
1(modq)
。于是存在h(h是某个整数)
满足m
k
(n)
+hq=1。由假定m=cp。故m=
m
k
(n)1
+hcpq= m
k
(n)
1
+hcn。这就证明了m=m
k
(n)1
(mod n)。
因此对于n及任何m(m
(n)1
m(mo
dn)
。所以,D(E(m))=D(c)
c
d
=m
e
d
=m
l
(n)1
=m(mod n)。命题得证。
试题六(10分):(1)请利用著名的RSA公钥密码算法设计一个数字签名算法(
称为RSA签名算法)。
(2)由于RSA签名算法每次只能对一个固定长度(比如N比特)的消息进行
签名,为了对任意长度的消
息进行签名,有人建议了这样一种处理方法:首先将长消息切割成固定长度N
比特的数据块,然后用RSA
签名算法对每个数据块进行签名,最后将这些签名块拼接起来就得到了长消
息的签名。请问这种切割处理
方法所获得的签名算法安全吗?为什么?
答:(1)RSA签名算法的系统参数可设为n=pq,且p和q是两个大素数,则
M=A=Z
n
,定义К={(n,d,p,q,e)}这里e和d
满
足ed
1(modΦ(n))( Φ()是欧拉函数)。公开密钥
n,d;私有密钥 p,q,e; 签名算法为Sig
K
2
(x)=x
e
mod n;签名验证算法为
Ver(x,y)=TRUE
x
y
d
(modn). (x,y)
Z
n
Z
n
。更直观地说,用RSA解密算法作为签名,用RSA的加
密作为验证,于是,只
有合法用户自己才能签名,而任何人都可以验证签名的真实性。其实,基于任何一
个加、解密算法顺序可交换的密码算法都
可用于设计一个数字签名算法,只需要以解密做签名,以加密做
验证就行了。
(2)切割和拼接处理方法所获得的签名算法不安全。因为,假如m和n是两个N
比特的消息,那么,黑客可以通过已知
的m和n的签名S(m)S(n),至少获得另一个消息nm的合
法签名S(n)S(m)。
试题七(10分):(1)请详细叙述Diffie-
Hellman密钥预分配协议;(2)如果去掉Diffie-Hellman密钥
预分配协议中的证
书(即不存在可信中心),请你给出一种有效的中间人攻击方法,即攻击者截获通信双方
通信的内容后可
分别冒充通信双方,以获得通信双方协商的密钥。
答:(1)为完整描述Diffie-Hellman密钥预分配协议,用ID(U)表示网络中用户U的某些识
别信息。每个用户U有一
个秘密指数
a
U
(0a
U
p
2)
和一个相应的公钥
b
U
a
U
mo
dp
。
可信中心有一个签名方案,该签名方案的公开验证算法记为Ver
TA
,秘密签名算法记为Sig
TA
。当一个用户U入网时,可信
中心需给他颁发一个证
书:C(U)=(ID(U),b
U
,Sig
TA
(ID(U),b
U
))。可信中心对证书的签名允许网络中的任何人能验证它所包含的信
息。U和V计算共同的
密钥
k
U,V
a
U
a
V
mo
dp
的协议,即,Diffie-Hellman密钥预分配协议如下:
*
1)公开
一个素数
p
和一个本原元
Z
P
。
2)V使用
他自己的秘密值
a
V
及从U的证书中获得的公开值
b
U
,计
算
a
V
k
U,V
aU
a
V
modpb
U
modp
3)U使用
他自己的秘密值
a
U
及从V的证书中获得的公开值
b
V
,计
算
a
U
k
U,V
a
U
a
V
modpb
V
modp
(2)如果在上述Diffie-Hellman密钥预分配协议中去掉了可信中心和证书,那么,黑客可以按如
下步骤分别与U和V约
定合法的密钥,从而,窃听U和V的全部通信过程:黑客以V的身份,与U完成预
分配协议,获得一个与U共享的密钥A;
同时,黑客以U的身份,与V完成预分配协议,获得一个与V
共享的密钥B。当U想将消息M加密发送给V时,U用A做
密钥,由于,黑客知道密钥A,所以,黑客能
够解密获得消息M。然后,黑客再用B做密钥对消息M加密,并将此密文发给
用户V,用户V用B解密获
得M。在该中间人过程中,黑客既能够窃听U与V通信的全部过程,而且,用户U与V无法感
觉到中间人的存在。