《清华大学现代密码学课后习题答案》是一本为学习现代密码学的学生编写的参考书,提供了课程中重要习题的解答与解析,帮助学生更好地掌握和理解密码学知识。
### 现代密码学知识点解析
#### 一、古典密码学基础
##### 1. 仿射密码
**知识点概述:**
仿射密码是一种基于简单数学运算的加密方法,利用模运算实现加解密操作。具体而言,其加密函数可表示为 \(E_{a,b}(m) = am + b \mod n\) ,其中 \(n\) 是字母表长度(如26)。对于解密,则需要找到合适的逆元来计算。
**例题解析:**
- **仿射密码实例:**
- 明文:“hello”
- 密钥对\((a, b)\) = (5, 8)
根据上述公式,我们可以把每个字母转换为对应的数字(如h对应7),然后进行计算得到密文。
##### 2. 多表代换密码
**知识点概述:**
多表代换密码使用矩阵运算来进行加密。假设有一个\(2 \times 2\)的矩阵 \(A\) 和一个\(1 \times 2\) 的向量 \(B\), 加密变换可以表示为:
\[ C = AM + B \mod n \]
其中,M是明文向量。
**例题解析:**
- **已知条件:**
- 明文:dont
- 密文:elni
通过矩阵运算解得加密所用的矩阵 \(A\) 和偏移向量 \(B\), 这里假设\(n=26\)(字母表长度)。
#### 二、流密码
##### 1. 线性反馈移位寄存器(LFSR)
**知识点概述:**
线性反馈移位寄存器 (LFSR) 是一种用于生成伪随机比特序列的设备,常见于设计流密码。其工作原理是将寄存器中的值按位右移,并根据选定的反馈函数更新最高位。
**例题解析:**
- **3级LFSR的不同反馈函数示例:**
- 初始状态为(1,0,1)。
对于不同的反馈系数组合,可以获得不同周期长度和序列特征:
- 当\(c_1=0\), \(c_2=0\)时,输出序列的周期是3;
- 当\(c_1=0\), \(c_2=1\)或\(c_1=1\), \(c_2=0\)时,得到7位长的不同序列;
- 当\(c_1=c_2=1\)时,则产生长度为2的循环。
##### 3. 非线性反馈移位寄存器(NLFSR)
**知识点概述:**
非线性反馈移位寄存器 (NLFSR) 类似于 LFSR,但使用更复杂的反馈函数来生成输出序列。这使得 NLFSR 的输出更加难以预测。
**例题解析:**
- **初始状态为(1, 1, 0, 1)**:
- 反馈函数可定义为 \(f(a_1,a_2,a_3,a_4) = a_1 \oplus a_4 \oplus 1 \oplus (a_2\cdot a_3)\)
根据此反馈公式,可以计算出序列的输出周期及具体值。
##### 4. 密钥流生成
**知识点概述:**
密钥流通常由线性反馈移位寄存器(LFSR)或其他类型的移位寄存器生成,并用于流密码中的加解密操作。通过适当的设置和初始化,可以产生具有高随机性的序列。
**例题解析:**
- **条件设定为 LFSR 级别 \(m=2s\), 前\(m+2\)个比特是(01)^{s+1}**
分析:
- 第\(m + 3\)位的值取决于反馈函数的具体形式,不能简单地断定其一定不是“1”。这需要根据具体的初始状态和反馈规则来确定。