2. 密码学基础概念
在深入对称加密算法之前,必须建立一套精确的术语体系。本章定义密码学中最基本的五个要素,并阐述现代密码学设计的核心原则——Kerckhoffs 原则,以及攻击者可能采用的密码分析方法。这些概念是后续所有算法讨论的基石。
2.1 五元组:密码系统的核心要素
任何密码系统都围绕五个基本元素构建,它们构成了通信模型中的完整链路。下表总结了每个要素的定义与角色:
| 要素 | 英文 | 定义 | 通信角色 |
|---|---|---|---|
| 明文 | Plaintext | 原始的可读消息,未经任何变换 | 发送方输入 |
| 密文 | Ciphertext | 经过加密算法变换后的不可读数据 | 信道传输内容 |
| 密钥 | Key | 控制加密与解密变换的秘密参数 | 双方共享的秘密 |
| 加密算法 | Encryption Algorithm | 将明文与密钥映射为密文的确定性函数 | 发送方操作 |
| 解密算法 | Decryption Algorithm | 将密文与密钥还原为明文的逆函数 | 接收方操作 |
这五个要素构成一个封闭的变换循环:加密算法以明文和密钥为输入,输出密文;解密算法以密文和密钥为输入,还原出明文。密钥是唯一需要保密的元素,算法本身可以公开。
2.2 加密与解密的形式化定义
用数学语言描述上述过程,可以更精确地定义密码系统的功能。设:
P为明文空间(所有可能明文的集合)C为密文空间(所有可能密文的集合)K为密钥空间(所有可能密钥的集合)E为加密算法函数D为解密算法函数
则加密与解密过程可表示为:
加密:C = E(K, P) // 加密算法以密钥 K 和明文 P 为输入,输出密文 C
解密:P = D(K, C) // 解密算法以密钥 K 和密文 C 为输入,输出明文 P
密码系统的正确性要求:对于任意密钥 K ∈ K 和任意明文 P ∈ P,必须满足 D(K, E(K, P)) = P。即解密是加密的逆运算。
2.3 Kerckhoffs 原则
1883 年,荷兰语言学家兼密码学家 Auguste Kerckhoffs 在其著作《军事密码学》中提出了六条设计原则,其中第二条成为现代密码学的基石:
这意味着:即使攻击者完全了解加密算法的工作原理、源代码和实现细节,只要他不知道密钥,就无法破解密文。这一原则带来了三个重要的工程优势:
- 公开审查:算法可以公开发表,接受全球密码学家的分析,发现潜在漏洞。
- 标准化:算法可以成为国际标准(如 AES、ChaCha20),不同厂商实现互操作。
- 密钥可更换:当密钥泄露时,只需更换密钥,无需更换整个系统。
下图展示了 Kerckhoffs 原则下的安全模型:攻击者掌握算法细节,但缺少密钥,因此无法从密文恢复明文。
2.4 密码分析基础
密码分析(Cryptanalysis)是研究如何在没有密钥的情况下从密文恢复明文或密钥的科学。根据攻击者掌握的信息量,密码分析可分为以下主要类型:
| 攻击类型 | 攻击者掌握的信息 | 现实场景 | 难度等级 |
|---|---|---|---|
| 唯密文攻击 | 仅截获的密文 | 被动监听通信链路 | 最难 |
| 已知明文攻击 | 密文 + 对应的部分明文 | 已知文件头、固定格式消息 | 中等 |
| 选择明文攻击 | 可让加密器加密任意选择的明文 | 攻击者能向系统提交数据 | 较易 |
| 选择密文攻击 | 可让解密器解密任意选择的密文 | 攻击者能访问解密接口 | 较易 |
现代对称加密算法(如 AES)在设计时必须保证:即使攻击者能够执行选择明文攻击,也无法在合理时间内恢复密钥或明文。这被称为选择明文攻击下的不可区分性(IND-CPA),是衡量算法安全性的最低标准。
下图对比了四种密码分析攻击的访问能力差异:
2.5 本章小结
本章建立了密码学通信的完整概念框架:
- 五元组(明文、密文、密钥、加密算法、解密算法)构成了密码系统的核心。
- Kerckhoffs 原则要求安全性仅依赖于密钥,算法必须公开接受审查。
- 密码分析从唯密文攻击到选择密文攻击,攻击者能力逐级增强,算法设计必须抵抗最强的攻击模型。