【软考】信安中级密码学专题
如果没有复习完其他的这个可以放一放
密码学的三大目标
Confidentiality 机密性(保密性):确保信息未经非授权的访问,避免信息泄露。
Integrity 完整性:防止信息非法的修改和毁坏,包括保证信息的不可抵赖性和真实性。
Availability 可用性:保证信息及时且可靠地访问和使用
Hash函数
Hash函数主要用于数据完整性、数字签名、消息认证等。
Hash函数的特性如下:
(1)单向性(Oneway):已知x,求x=h(m)的m在计算上是不可行的。
(2)抗弱碰撞性(Weakly Collision-free):对于任意给定的消息m,如果找到另一个不同消息n,使得h(m)=h(n)在计算上是不可行的。
(3)抗强碰撞性(Strongly Collision-free):对于任意一对不同的消息m和n,使得h(m)=h(n)在计算上是不可行的。
2016年真题
【说明】用户的身份认证是许多应用系统的第一道防线,身份识别对确保系统和数据的安全保密及其重要。以下过程给出了实现用户B对用户A身份的认证过程。
(1)A→B:A
(2)B→A:{B,Nb}pk(A)
(3)A→B:h(Nb)
此处A和B是认证的实体,Nb是一个随机值,pk(A)表示实体A的公钥;{B,Nb}pk(A)表示用 A的公钥对消息B进行加密处理, h(Nb)表示用哈希算法h对Nb计算哈希值。
【问题1】
认证与加密有哪些区别?
参考答案(这里从目标不同出发):加密用于确保数据的机密性,阻止信息泄露。认证用于确保报文发送者和接收者身份的真实性以及报文的完整性,阻止如冒充、篡改等攻击。
【问题2】
(1)包含在消息2中的“Nb”起什么作用?
参考答案:Nb是一个随机值,只有发送方B和A知道,起到抗重放攻击作用。
(2) “Nb”的选择应满足什么条件?
参考答案:应具备随机性(不可预测性),不易被猜测。
【问题3】
为什么消息3中的Nb要计算哈希值?
参考答案:哈希算法具有单向性,经过哈希值运算之后的随机数,即使被攻击者截获也无法对该随机数进行还原,获取该随机数Nb的产生信息。
【问题4】
上述协议存在什么安全缺陷?请给出相应的解决思路。
参考答案(1):存在重放攻击和中间人攻击缺陷。
解决方案:针对重放攻击加入时间戳、验证码等;针对中间人攻击加入针对身份的双向验证。
参考答案(2):存在中间人攻击的安全缺陷。
解决方案:在响应中包含能够证明自己身份和挑战来源的信息。可以在消息2和消息3中加入身份标识。
2017年真题
【说明】在公钥体制中,每一用户 U 都有自己的公开密钥PKu 和私钥SKu。如果任意两个用户A和B按以下方式通信:

【问题1】
用户C怎样通过攻击手段获取用户A发送给用户B的消息m。

【问题2】
若通信格式变为:

这时的安全性如何?请分析A、B此时是如何相互认证并传递消息的。
参考答案:
这种方式提高了安全性,实现了加密和认证的双重功能,并且能对信息传输进行确认。但存在重放攻击的可能。
2019年真题
【说明】假设用户A和用户B为了互相验证对方的身份,设计了如下通信协议:
(1)A→B:RA
(2)B→A:f(PAB || RA)RB
(3)A→B:f(PAB || )
其中:RA、RB是随机数,PAB是双方事先约定并共享的口令,“||”表示连接操作。f是哈希函数。
【问题1】
身份认证可以通过用户知道什么、用户拥有什么和用户的生理特征等方法来验证。请问上述通信协议是采用哪种方法实现的?
参考答案:通过用户知道什么来验证。
【问题2】
根据身份的互相验证需求,补充协议第3步的空白内容。
参考答案:RB
试题解析:协议的目标是互相验证。
第1步:A向B发送随机数RA,作为对B的挑战。
第2步:B收到了RA,用共享口令PAB和RA计算出f(PAB || RA),这是对A挑战的响应。同时,B生成了自己的随机数RB发送给A,作为对A的挑战。
第3步:A收到了B的响应和挑战。A需要首先验证B的身份,通过自己计算f(PAB || RA)并与收到的值比对。验证通过后,A需要响应B的挑战RB。因此,A需要计算f(PAB || RB)并发送给B。
第4步:B收到了A的响应。B需要验证A的身份,通过自己计算f(PAB || RB)并与收到的值比对。
【问题3】
通常哈希函数 f 需要满足下列性质:单向性、抗弱碰撞性、抗强碰撞性。
如果某哈希函数具备:找到任何满足f(x)=f(y)的偶对(x,y)在计算上是不可行的,请说明其满足哪条性质。
参考答案:满足抗强碰撞性。
【问题4】
上述协议不能防止重放攻击,以下哪种改进方式能使其防止重放攻击?
(1)为发送消息加上时间参量。
(2)为发送消息加上随机数。
(3)为发送消息加密。
参考答案:(1)和(2)
【问题5】
如果将哈希函数替换成对称加密函数,是否可以提高该协议的安全性?为什么?
参考答案:不能。
参考原因(1):对称加密方式密钥不具备哈希函数的单向性。
参考原因(2):这个协议最主要的安全风险是暴力破解攻击。将哈希函数替换为对称加密函数并没有解决这个核心的安全风险,所以无法提高协议的安全性。
2018年也有一道
分组密码(密钥密码或对称密码)
在分组密码中,明文被分割多个块,加密后的密文也是多个块。
电子密码本模式(ECB)

填充密码块链接模式(PCBC)【2016年】

其缺点包括:
①明密文链接方式的加解密错误传播无界特性,使其不适合磁盘文件加密;
②要求数据长度是密码分组长度的整数倍,否则最后一个块需要特殊处理。
分组链接模式(CBC)

其缺点包括:
在CBC的密文链接方式下,加密会引发错误传播无界,解密会引发错误传播有界。CBC不利于并行计算。
密文反馈模式(CFB)

输出反馈模式OFB(OFB)

计数器模式(CTR)

该小节部分引用:
https://www.cnblogs.com/xiehongfeng100/p/4315817.html
仿射密码
仿射密码是一种典型的对称密码算法。仿射密码体制的定义如下:

前置知识:
①如果两个整数的最大公约数是1,我们就称它们互素。例如,gcd(11, 26) = 1,所以11和26是互素的。只有当一个数k与模数n互素时,k在模n的意义下才存在乘法逆元。
②在模n的运算中,如果存在一个整数x使得 (a * x) mod n = 1,那么我们称x是a在模n意义下的乘法逆元,通常记作 a⁻¹。
【问题1】
整数11在Z26中的乘法逆元是多少?
参考答案:一个一个代入试错就行。
【问题2】
假设明文消息为“SEC”,相应的密文消息是什么?
DES题
DES是分组密码,其分组长度为64比特,使用56比特密钥对64比特的明文串进行16轮加密,得到64比特的密文串。其中,使用密钥为64比特,实际使用56比特,另8比特用作奇偶校验。
DES安全性包含以下两点:
(1)如果DES密钥太短经不起穷尽攻击。
(2)DES存在弱密钥和半弱密钥。(还有不动点密钥,但软考不涉及)
弱密钥特性:明文加密两次能得到明文,加密和解密的结果一致。
S盒变换:
S盒变换是一种压缩变换,通过S盒将48位输入变为32位输出。共有8个S盒,并行作用。每个S盒有6个输入、4个输出,是非线性压缩变换。
设输入为b1b2b3b4b5b6,则以b1b6组成的二进制数为行号,b2b3b4b5组成的二进制数为列号。行列交点处对应的值转换为二进制,作为输出。
2017年真题
【说明】DES 是一种分组密码,己知 DES 加密算法的某个S盒如下表所示。
|
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
0 |
7 |
13 |
14 |
3 |
0 |
6 |
9 |
(1) |
1 |
2 |
8 |
5 |
11 |
12 |
4 |
15 |
|
1 |
13 |
8 |
11 |
5 |
(2) |
15 |
0 |
3 |
4 |
7 |
2 |
12 |
1 |
10 |
14 |
9 |
|
2 |
10 |
6 |
9 |
0 |
12 |
11 |
7 |
13 |
15 |
(3) |
3 |
14 |
5 |
2 |
8 |
4 |
|
3 |
3 |
15 |
0 |
6 |
10 |
1 |
13 |
8 |
9 |
4 |
5 |
(4) |
12 |
7 |
2 |
14 |
【问题1】
请补全该S盒,填补其中的空(1)~(4),将解答写在答题纸的对应栏内。
参考答案:S盒的每一行(0, 1, 2, 3)都是数字0到15的一个置换。也就是说,在S盒的任意一行中,0到15这16个数字都必须出现,且仅出现一次。
所以分别是(1)10,(2)6,(3)1,(4)11。
【问题2】
如果该S盒的输入为110011,请计算其二进制输出。
通用步骤:
- 将6比特的输入分为两部分:外部2比特和内部4比特。
- 外部2比特:取输入的第1位和第6位,组合成一个2比特的二进制数,将其转换为十进制,这个值就是S盒的行号。
- 内部4比特:取输入的第2、3、4、5位,组合成一个4比特的二进制数,将其转换为十进制,这个值就是S盒的列号。
- 根据计算出的行号和列号,在S盒表中查找对应的数值。
- 将查找到的十进制数值,转换为一个4比特的二进制数,即为S盒的最终输出。
本题详解:
- 输入为 110011。
- 确定行号:取第1位和第6位,即 1 和 1,组合为 11(B)。11(B)= 3(D)。所以行号为 3。
- 确定列号:取第2到第5位,即 1001(B)。1001(B) = 9(D)。所以列号为 9。
- 查表:在S盒中查找第3行、第9列的值。根据上表,该值为 4。
- 转换输出:将十进制数4转换为4比特的二进制数,即 0100。
【问题3】
DES加密的初始置换表如下:
|
58 |
50 |
42 |
34 |
26 |
18 |
10 |
2 |
|
60 |
52 |
44 |
36 |
28 |
20 |
12 |
4 |
|
62 |
54 |
46 |
38 |
30 |
22 |
14 |
6 |
|
64 |
56 |
48 |
40 |
32 |
24 |
16 |
8 |
|
57 |
49 |
41 |
33 |
25 |
17 |
9 |
1 |
|
59 |
51 |
43 |
35 |
27 |
19 |
11 |
3 |
|
61 |
53 |
45 |
37 |
29 |
21 |
13 |
5 |
|
63 |
55 |
47 |
39 |
31 |
23 |
15 |
7 |
置换时,从左上角的第一个元素开始,表示输入的明文的第58位置换成输出的第1位,输入明文的第50位置换成输出的第2位,从左至右,从上往下,依次类推。DES加密时,对输入的64位明文首先进行初始置换操作。若置换输入的明文M=0123456789ABCDEF(十六进制),请计算其输出(十六进制表示)。
参考答案:

没时间建议跳过此小问。
【问题4】
如果有简化的DES版本,其明文输入为8比特,初始置换表IP如下:
IP:2 6 3 1 4 8 5 7
请给出其逆初始置换表。
参考答案:
逆置换表的目的是将置换后的数据恢复到原始顺序。其求解逻辑是“反向映射”。
如果IP表告诉我们“旧位置x的比特,跑到了新位置y”,那么逆IP表就要告诉我们“旧位置y的比特,跑到了新位置x”。
用公式表达就是:如果 IP[y] = x,那么 IP⁻¹[x] = y。
IP⁻¹ = [4, 1, 3, 5, 7, 2, 8, 6]。
【问题5】
DES加密算法存在一些弱点和不足,主要有密钥太短和存在弱密钥。请问,弱密钥的定义是什么?
参考答案:如果存在一个密钥 k,由其产生的子密钥是相同的,则称其为弱密钥。
RSA
2020年真题
【说明】密码学作为信息安全的关键技术,在信息安全领域有着广泛的应用。密码学中,根据加密和解密过程所采用密钥的特点可以将密码算法分为两类:对称密码算法和非对称密码算法。此外,密码技术还用于信息鉴别、数据完整性检验、数字签名等。
【问题1】
信息安全的基本目标包括:真实性、保密性、完整性、不可否认性、可控性、可用性、可审查性等。密码学的三大安全目标C、I、A分别表示什么?
参考答案:
保密性、完整性、可用性。
【问题2】
RSA公钥密码是一种基于大整数因子分解难题的公开密钥密码。对于RSA密码的参数 p、q、n、Φ(n)、e、d,哪些参数是可以公开的?
参考答案:
在RSA算法中,以下参数是可以公开的:
n (模数): 它是两个大素数p和q的乘积 (n = p * q)。
e (公钥指数): 它是公钥的一部分。
因此,公钥就是由 (n, e) 组成的。私钥则是(n,d)。
【问题3】
如有RSA密码算法的公钥为(55,3),请给出对小王的年龄18进行加密的密文结果。
参考答案:

代入求解得到2。
【问题4】
对于 RSA 密码算法的公钥(55,3),请给出对应的私钥。
参考答案:
私钥的计算公式是: (d * e) mod Φ(n) = 1。
- 分解n,求p和q:
已知 n = 55。通过因数分解,得到两个素数 p = 5, q = 11。
- 计算欧拉函数Φ(n):
Φ(n) = (p-1) * (q-1) = (5-1) * (11-1) = 4 * 10 = 40。
- 求d
由公私钥关系(e * d) mod Φ(n) = 1,
得到(3 *d) mod 40 = 1,
猜数代入求解,
所以,对应的私钥 d 是 27。完整的私钥可以表示为 (55, 27)。
【问题5】
在 RSA 公钥算法中,公钥和私钥的关系是什么?
参考答案:
公钥中的指数 e 和私钥中的指数 d 互为模 Φ(n) 的乘法逆元。
这个关系可以用公式表达为:(e * d) mod Φ(n) = 1。
【问题6】
在RSA密码中,消息m的取值有什么限制?
参考答案:
消息 m (即明文) 的取值必须是一个小于模数 n 的非负整数。
【问题7】
是否可以直接使用RSA密码进行数字签名?如果可以,请给出消息m的数字签名方法。如果不可以,请给出原因。
参考答案:
不可以直接使用 RSA 进行数字签名,因为 RSA 的密钥没有与用户的身份进行捆绑,有可能被假冒。
【问题8】
上述RSA签名体制可以实现【问题1】所述的哪3个安全基本目标?
参考答案:
完整性、真实性和不可否认性。

浙公网安备 33010602011771号