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 在其著作《军事密码学》中提出了六条设计原则,其中第二条成为现代密码学的基石:

Kerckhoffs 原则:密码系统的安全性不应依赖于算法的保密性,而应仅依赖于密钥的保密性。

这意味着:即使攻击者完全了解加密算法的工作原理、源代码和实现细节,只要他不知道密钥,就无法破解密文。这一原则带来了三个重要的工程优势:

  1. 公开审查:算法可以公开发表,接受全球密码学家的分析,发现潜在漏洞。
  2. 标准化:算法可以成为国际标准(如 AES、ChaCha20),不同厂商实现互操作。
  3. 密钥可更换:当密钥泄露时,只需更换密钥,无需更换整个系统。
常见误区:初学者常误以为“算法保密”能增加安全性。历史证明,依赖“隐蔽式安全”(Security through Obscurity)的系统几乎全部被攻破。Kerckhoffs 原则要求我们假设算法完全公开,只依赖密钥的随机性和保密性。

下图展示了 Kerckhoffs 原则下的安全模型:攻击者掌握算法细节,但缺少密钥,因此无法从密文恢复明文。

Kerckhoffs 原则下的安全通信模型 发送方 加密算法 E 密文 C 解密算法 D 接收方 攻击者 密钥 K 明文 P 明文 P 知道算法 E 和 D 缺少密钥 K

2.4 密码分析基础

密码分析(Cryptanalysis)是研究如何在没有密钥的情况下从密文恢复明文或密钥的科学。根据攻击者掌握的信息量,密码分析可分为以下主要类型:

攻击类型 攻击者掌握的信息 现实场景 难度等级
唯密文攻击 仅截获的密文 被动监听通信链路 最难
已知明文攻击 密文 + 对应的部分明文 已知文件头、固定格式消息 中等
选择明文攻击 可让加密器加密任意选择的明文 攻击者能向系统提交数据 较易
选择密文攻击 可让解密器解密任意选择的密文 攻击者能访问解密接口 较易

现代对称加密算法(如 AES)在设计时必须保证:即使攻击者能够执行选择明文攻击,也无法在合理时间内恢复密钥或明文。这被称为选择明文攻击下的不可区分性(IND-CPA),是衡量算法安全性的最低标准。

实战启示:在系统设计时,应假设攻击者至少能发起已知明文攻击。例如,网络协议中的固定报文头、文件格式的魔数(Magic Number)都是攻击者可利用的已知明文。因此,算法必须能抵抗已知明文攻击。

下图对比了四种密码分析攻击的访问能力差异:

四种密码分析攻击对比 唯密文攻击 仅截获密文 无任何额外信息 最接近被动监听 难度:★★★★★ 已知明文攻击 密文 + 部分明文 已知文件头/格式 常见于协议分析 难度:★★★☆☆ 选择明文攻击 可加密任意明文 控制加密输入 标准安全模型 难度:★★☆☆☆ 选择密文攻击 可解密任意密文 控制解密输入 最强大的攻击 难度:★☆☆☆☆ 攻击者掌握的信息量递增 → 攻击难度递减

2.5 本章小结

本章建立了密码学通信的完整概念框架:

  • 五元组(明文、密文、密钥、加密算法、解密算法)构成了密码系统的核心。
  • Kerckhoffs 原则要求安全性仅依赖于密钥,算法必须公开接受审查。
  • 密码分析从唯密文攻击到选择密文攻击,攻击者能力逐级增强,算法设计必须抵抗最强的攻击模型。