【软考】信安中级密码学专题

如果没有复习完其他的这个可以放一放

 

密码学的三大目标

‌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按以下方式通信:

image

【问题1】

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

image

【问题2】

若通信格式变为:

image

这时的安全性如何?请分析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)

image

 

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

image

其缺点包括:

①明密文链接方式的加解密错误传播无界特性,使其不适合磁盘文件加密;

②要求数据长度是密码分组长度的整数倍,否则最后一个块需要特殊处理。

 

分组链接模式(CBC)

image

其缺点包括:

在CBC的密文链接方式下,加密会引发错误传播无界,解密会引发错误传播有界。CBC不利于并行计算。

 

密文反馈模式(CFB)

 

image

 

输出反馈模式OFB(OFB)

image

 

计数器模式(CTR)

image

 

该小节部分引用:

https://www.cnblogs.com/xiehongfeng100/p/4315817.html

 

仿射密码

仿射密码是一种典型的对称密码算法。仿射密码体制的定义如下:

image

 

前置知识:

①如果两个整数的最大公约数是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,请计算其二进制输出。

通用步骤:

  1. 将6比特的输入分为两部分:外部2比特和内部4比特。
  2. 外部2比特:取输入的第1位和第6位,组合成一个2比特的二进制数,将其转换为十进制,这个值就是S盒的行号。
  3. 内部4比特:取输入的第2、3、4、5位,组合成一个4比特的二进制数,将其转换为十进制,这个值就是S盒的列号。
  4. 根据计算出的行号和列号,在S盒表中查找对应的数值。
  5. 将查找到的十进制数值,转换为一个4比特的二进制数,即为S盒的最终输出。

本题详解:

  1. 输入为 110011。
  2. 确定行号:取第1位和第6位,即 1 和 1,组合为 11(B)。11(B)= 3(D)。所以行号为 3。
  3. 确定列号:取第2到第5位,即 1001(B)。1001(B) = 9(D)。所以列号为 9。
  4. 查表:在S盒中查找第3行、第9列的值。根据上表,该值为 4。
  5. 转换输出:将十进制数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(十六进制),请计算其输出(十六进制表示)。

参考答案:

image

没时间建议跳过此小问。

 

【问题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进行加密的密文结果。

参考答案:

image

代入求解得到2。

 

【问题4】

对于 RSA 密码算法的公钥(55,3),请给出对应的私钥。

参考答案:

私钥的计算公式是: (d * e) mod Φ(n) = 1。

  1. 分解n,求p和q:

已知 n = 55。通过因数分解,得到两个素数 p = 5, q = 11。

  1. 计算欧拉函数Φ(n):

Φ(n) = (p-1) * (q-1) = (5-1) * (11-1) = 4 * 10 = 40。

  1. 求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个安全基本目标?

参考答案:

完整性、真实性和不可否认性。

posted @ 2025-11-02 20:52  DrClef  阅读(11)  评论(0)    收藏  举报