《密码编码学与网络安全》复习题
1. 信息安全(计算机安全)目标是什么?
机密性(confidentiality):防止未经授权的信息泄漏
完整性(integrity):防止未经授权的信息篡改
可用性(avialbility):防止未经授权的信息和资源截留
抗抵赖性、不可否认性、问责性、可说明性、可审查性(accountability):
真实性(authenticity):验证用户身份
2. 理解计算安全性(即 one-time pad 的理论安全性)
使用与消息一样长且无重复的随机密钥来加密信息,即对每个明文每次采用不同的代
换表不可攻破,因为任何明文和任何密文间的映射都是随机的,密钥只使用一次
3. 传统密码算法的两种基本运算是什么?
代换和置换
前者是将明文中的每个元素映射成另外一个元素;后者是将明文中的元素重新排列。
4. 流密码和分组密码区别是什么?各有什么优缺点?
分组密码每次处理一个输入分组,对应输出一个分组;流密码是连续地处理输入元素,
每次输出一个元素
流密码 Stream: 每次加密数据流的一位或者一个字节。连续处理输入分组,一次输出一
个元素,速度较快。
5. 利用 playfair 密码加密明文 bookstore,密钥词是(HARPSICOD),所得的密文是什么?
I/JD RG LR QD HG
R
A
H
O
C
I/J
G
E
F
M N
Q
V W X
P S
D B
K L
T U
Y Z
bo ok st or ex
I/JD DG PU GO GV
6. 用密钥词 cat 实现 vigenere 密码,加密明文 vigenere coper,所得的密文是什么?
XIZGNXTEVQPXT
Key:
Plaintext:
Chipertext:
catca t ca tcatcatcat
vigenere coper
XIZGNXTE VQPXT
7. 假定有一个密钥 2431 的列置换密码,则明文 can you understand 的密文是多少?
YNSDCODTNURNAUEA
1
Key:
Plaintext:
y
n
s
3
n
u
r
n
2
c
o
d
t
YNSDCODTNURNAUEA
Chipertext:
8. 什么是乘积密码?
4
a
u
e
a
d
多步代换和置换,依次使用两个或两个以上的基本密码,所得结果的密码强度将强与所
有单个密码的强度.
9. 混淆和扩散的区别是什么?
扩散(Diffusion):明文的统计结构被扩散消失到密文的,使得明文和密文之间的统计关系
尽量复杂.即让每个明文数字尽可能地影响多个密文数字
混淆(confusion):使得密文的统计特性与密钥的取值之间的关系尽量复杂,阻止攻击者
发现密钥
10.
Feistel 密码中每轮发生了什么样的变化?
将输入分组分成左右两部分。
以右半部数据和子密钥作为参数,对左半部数据实施代换操作。
将两部分进行互换,完成置换操作。
11.S-Box 的概念
S 盒用在 DES 算法中,每个 s 盒都由 6 位输入产生 4 位输出,所有说,s 盒定义了一个
普通的可逆代换。相当程度上,DES 的强度取决于 s 盒的设计,但是,s 盒的构造方法
是不公开的
12.
AES 每轮变化中设计的基本操作有哪些?
每轮包括 4 个阶段:字节代换、行移位、列混淆、轮密钥加
13.
DES、AES 和 RC4 之间的比较(建议比较分组大小、密钥长度、相对速度、安全
强度、轮数、是否 Feistel 体制、基本操作等若干方面)*
算法
分组长度(bit)
密钥长度
相对速度
安全强度
轮数
是否 Feistel 体制
DES
64
56
较快
2^55(穷举)
16
是
AES
128
RC4
流密码
128/196/256
不少于 128
慢
10/12/14
不是
很快
很难
-
?
14.
AES 与 DES 相比有优点?3DES 与 DES 相比的变化有哪些?什么是 2DES 中的中
间相遇攻击?
(1) AES 更安全。
(2) 3DES 增加了 1 到 2 个密钥,进行多轮 DES,安全性更高。
(3) C = EK2(EK1(P))⇒ X = EK1(P) = DK2(C)
给定明文密文对(P,C)
对所有 256 个密钥,加密 P,对结果按 X 排序与 T 中
对所有 256 个密钥,解密 C,解密结果与 T 中的值比较
找出 K1,K2 使得 EK1(P) = DK2(C)
用 k1 和 k2 对 P 加密,若结果为 C,则认定这两个密钥为正确的密钥
15.
分组密码的工作模式有哪些?及优缺点?
A. ECB,电码本模式,一次处理 64 位明文,每次使用相同的密钥加密。任何 64 位的
明文组都有唯一的密文与之对应,有“结构化”的缺点。
B.CBC,密码分组连接模式,克服了 ECB 中“结构化”的缺点,同样的明文变成密
文之后就不同了,而且加密必须从头到尾
C.CFB,密码反馈模式.一次处理M位,上一个分组的密文产生一个伪随机数输出的
加密算法的输入,该输出与明文的异或,作为下一个分组的输入。
D. OFB,输出反馈模式,与CFB基本相同,只是加密算法的输入是上一次 DES 的
输出。
E. 计数器模式,计数器被初始化为某个值,并随着消息块的增加其值加 1,在于明文
组异或得到密文组。也可用于流密码。
16.
RSA 算法中密钥的生成和加密解密过程。
生成过程
RSA 的加解密为:
给定消息 M = 88 ( 88<187)
加密:
C = 887 mod 187 = 11
解密:
M = 1123 mod 187 = 88
17.
RSA 算法计算实例(给定 p,q,e,m/c,计算 n,
)(n ,d,c/m)
1. 选择素数: p=17 & q=11
2. 计算 n = pq =17×11=187
3. 计算ø(n)=(p–1)(q-1)=16×10=160
4. 选择 e : gcd(e,160)=1; 选择 e=7
5. 确定 d: de=1 mod 160 and d < 160, d=23
因为 23×7=161= 1×160+1
6. 公钥 KU={7,187}
7. 私钥 KR={23,17,11}
描述 Diffie-Hellman 密钥交换机制。
18.
算法:
A. 双方选择素数 p 以及 p 的一个原根 a
B.用户 A 选择一个随机数 Xa < p,计算 Ya=aXa mod p
C. 用户 B 选择一个随机数 Xb < p,计算 Yb=aXb mod p
D. 每一方保密 X 值,而将 Y 值交换给对方
E.用户 A 计算出 K=YbXa mod p
F. 用户 B 计算出 K=YaXb mod p
G. 双方获得一个共享密钥(aXaXbmod p)
素数 p 以及 p 的原根 a 可由一方选择后发给对方
用户A
用户B
产生随机数XA
7 B 计算: (Xo)Xb≡(aXo)Xb≡aXoXb mod p
8 O 计算: (Ya)Xo≡aXaXo mod p, (Yb)Xo≡aXbXo mod p
O 无法计算出 aXaXb mod p
O 永远必须实时截获并冒充转发,否则会被发现
20.
如何使用公钥密码实现数据的保密性、完整性和数据源认证(签名)?
发送方用其私钥对消息“签名”。可以通过对整条消息加密或者对消息的一个小的数据
块(消息认证码/摘要)加密来产生。
E(K,[M||E(PRa,H(M))]) 其中 K 为 PUb
解密时,第一步解密使用 B 的私钥,然后使用 A 的公钥。
21.
22.
对比对称算法和公钥算法?(建议从用途,速度和效率等方面)
对称算法:速度快,主要用于数据加密,只有一个密钥。
公钥算法:速度较慢,主要用于数字签名和密钥交换,有两个密钥
对称密钥分配有哪些方法?(注意和重放攻击相结合)
对于参与者 A 和 B,密钥分配有以下几种:
A. 密钥由 A 选择,并亲自交给 B
B.第三方选择密钥后亲自交给 A 和 B
C.如果 A 和 B 以前或最近使用过某密钥,其中一方可以用它加密一个新密钥后在发
送给另一方。
D. A 和 B 与第三方均有秘密渠道,则 C 可以将一密钥分别发送给 A 和 B
别人卷子上的分配方式:
传统加密方法 Needham/Schroeder Protocol [1978]
1、A KDC:IDA||IDB||N1
2、KDC A:EKa[Ks||IDB||N1||EKb[Ks||IDA]]
3、A B: EKb[Ks||IDA]
4、B A: EKs[N2]
5、A B: EKs[f(N2)]
保密密钥 Ka 和 Kb 分别是 A 和 KDC、B 和 KDC 之间共享的密钥。
本协议的目的就是要安全地分发一个会话密钥 Ks 给 A 和 B。
A 在第 2 步安全地得到了一个新的会话密钥,第 3 步只能由 B 解密、并理解。第 4 步表明 B
已知道 Ks 了。第 5 步表明 B 相信 A 知道 Ks 并且消息不是伪造的。
第 4,5 步目的是为了防止某种类型的重放攻击。特别是,如果敌方能够在第 3 步捕获该消
息,并重放之,这将在某种程度上干扰破坏 B 方的运行操作。
上述方法尽管有第 4,5 步的握手,但仍然有漏洞
假定攻击方 C 已经掌握 A 和 B 之间通信的一个老的会话密钥。C 可以在第 3 步冒充 A 利用
老的会话密钥欺骗 B。除非 B 记住所有以前使用的与 A 通信的会话密钥,否则 B 无法判断
这是一个重放攻击。如果 C 可以中途截获第 4 步的握手信息,则可以冒充 A 在第 5 步响应。
从这一点起,C 就可以向 B 发送伪造的消息而对 B 来说认为是用认证的会话密钥与 A 进行
的正常通信。
Denning Protocol [1982] 改进(加入时间戳):
1、A KDC:IDA||IDB
2、KDC A:EKa[Ks||IDB||T||EKb[Ks||IDA||T]]
3、A B:
4、B A:
5、A B:
| Clock - T | < t1 + t2
其中: t1 是 KDC 时钟与本地时钟(A 或 B)之间差异的估计值;
EKb[Ks||IDA||T]
EKs[N1]
EKs[f(N1)]
t2 是预期的网络延迟时间。
23.
公钥算法中公钥的分配和管理有哪些方法?
公钥的分配
A. 公开发布
B.公开可访问目录
C.公钥授权
D. 公钥证书
消息认证码的概念和基本用途?(237 页图)
24.
MAC(Message Authentication Code),消息认证码,也是一种认证技术,它利用密钥来产生
一个固定长度的短数据块,并将数据块附加在消息之后,格式如:MAC(M)|| M。消息和
MAC 一起发送到接受方。从而,接受方可以知道消息没有经过篡改,真正来自发送方(MAC
的密钥)和消息的时效性(如果 MAC 中包含序列号)。从这个层面来说,hash 是没有密钥
的 MAC
25.
26.
什么是散列函数的基本用途有哪些?(239 页图)
保密、认证和签名
安全散列函数有哪些特性? 什么是碰撞?找到一个碰撞意味着什么?代价是多
大?生日悖论和生日攻击。
Hash 算法的特点有
输入变长的分组,输出是一定长的分组;
任意 x,计算 H(x)容易,软件和硬件都可以实现
已知 H(x)= h,求 x 是不可行的,只是在计算上不可行(单向性)
任意 x,找到 y,使 H(x)=H(y)计算上不可行(抗弱碰撞性)
找到满足 H(x)=H(y)的(x,y)计算上不可行(抗强碰撞性)
碰撞指的是散列值相同而原值不同。找到一个碰撞意味着可以替换原来的消息。
2^n
单向
弱无碰撞 2^n
强无碰撞 2^n/2
生日问题:一个教室中,最少应有多少学生,才使至少有两人具有相同生日的概率不小于
1/2?
概率结果与人的直觉是相违背的. 实际上只需 23 人,即任找 23 人,从中总能选出两人具
有相同生日的概率至少为 1/2。
根据生日攻击原理,对长度为 m 位的散列码,共有 2^m 个可能的散列码,若要使任意的 x,y
有 H(x)=H(y)的概率为 0.5,只需 k=2m/2
27.
28.
消息认证码和散列函数有哪些区别?
散列函数(Hash):将任意长度的消息变换为定长的消息摘要,并加以认证。
消息认证码(MAC):依赖公开的函数(密钥控制下)对消息进行处理,生成定长的
认证标识,并加以认证。
HMAC 的原理
hash 是没有密钥的 MAC,所以不可以直接将 hash 算法(MD5,SHA1)直接用在 MAC 上,
所以,HMAC 实现的目标就是将密钥加入到 hash 函数中,简单的说,就是“带密钥的 hash”。
29.
安全 hash 码的基本结构(Merkle 提出的)?
30.
MD5 和 SHA-1 间的差异?(建议从输入、输出、轮数、强度和速度等几个方面比
较)
MD5
128 位
512 位
64(4 of 16)
无限
4
64
Little-endian
32.4 Mbps
SHA-1
160 位
512 位
80(4 of 20)
264-1 位
4
4
Big-endian
14.4Mbps
摘要长度
基本处理单位
步数
最大消息长度
基本逻辑函数
加法常数
Endianness
性能
31.
什么是数字签名?如何理解 RSA 私钥运算结果做为数字签名?
【提示:最简单的数字签名是:EKRa( M) 即用 a 的私钥(KRa)加密消息 M,接受
方 b 用 a 的公钥解密,得到 M,b 就可以认为 M 来自 a,因为其他人不可能有 a 的私钥;而
且消息没有经过修改,因为修改后的秘文不能用 a 的公钥解开,从而实现了数字签名。】
32.
如何实现用签名进行身份和消息认证?【提示:上面算法的改进算法就可以实现用
签名进行身份和报文鉴别:EKRa( H(M))||M 。先将消息 M 用 hash 算法(MD5 or SHA1)
算出 mac(消息认证码),然后,用 a 的私钥加密此认证码,最后和原始的消息并在一
起,发送到接受方 b。b 首先用 a 的公钥 KPa 解密前面部分,然后用同样的 hash 算法对
M 进行 hash 操作,比较两个结果是否相等。从而实现身份和消息认证。
数字签名的作用是什么
33.
当通信双方发生了下列情况时,数字签名技术必须能够解决引发的争端:
(1) 否认,发送方不承认自己发送过某一报文。
(2) 伪造,接收方自己伪造一份报文,并声称它来自发送方。
(3) 冒充,网络上的某个用户冒充另一个用户接收或发送报文。
(4) 篡改,接收方对收到的信息进行篡改。
34.
公钥算法 RSA、DH 和 DSS 算法的用途是什么?
RSA——加密/解密、数字签名、密钥交换
DH——密钥交换
DSS——数字签名
35.
实体认证(身份认证)和消息认证的区别是什么?
身份认证是验证主体的真实身份与其所声称的身份是否符合的过程。消息认证是是一
个证实收到的消息来自可信的源点且未被篡改的过程。即验证收到的消息确实是来自真正的
发送方且未被修改的消息,也验证消息的顺序和及时性。是为了确认被认证的实体与一些特
定数据项有着静态的联系,而身份认证主要是在连接建立或者在数据传送阶段的某些时刻使
用的。
36.
什么是消息重放?有哪些方法可以抵御消息的重放攻击,各有什么特点?
消息重放:攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。
对付重放攻击的一种方法是在认证交换中使用一个序列号来给每一个消息报文
编号。仅当收到的消息序数顺序合法时才接受之。但这种方法的困难是要求双方必须
保持上次消息的序号。
两种更为一般的方法是:
时间戳:A 接受一个新消息仅当该消息包含一个时间戳,该时间戳在 A 看来,是
足够接近 A 所知道的当前时间;这种方法要求不同参与者之间的时钟需要同步。
挑战/应答方式。(Challenge/Response)A 期望从 B 获得一个新消息,首先发给 B
一个临时值(challenge),并要求后续从 B 收到的消息(response)包含正确的这个临时
值。
挑战问/应答方法不适应非连接性的应用,因为它要求在传输开始之前先有握手的额
外开销,这就抵消了无连接通信的主要特点。
37.
对称密钥分配方式中有什么问题,如何避免?(针对消息重放攻击)
当采用传统对称加密方式时,发送者不能根据内容区分是发送的消息还是接收的消
息,这种攻击是可能的。
38.
加入时间戳。
Kerberos 系统适合什么样环境中的认证服务?它采用了什么方法来防止攻击者窃
取并使用票据?kerberos 系统的认证过程,每个步骤的作用?
分布式服务器 C/S 环境
AS 用安全方式向用户和 TGS 各自提供一个秘密信息,然后用户也以安全方式向 TGS
出示该秘密来证明自己的身份。这个秘密就是会话密钥。