深入浅出:SM4 加密算法及其多种工作模式详解
引言
SM4 是中国国家密码管理局定义的对称分组加密算法,广泛应用于无线局域网安全协议等领域。作为中国商用密码算法之一,SM4 采用 128 位的分组长度和密钥长度,提供了高效且安全的加密性能。本文将介绍 SM4 算法的基础,并深入探讨常见的几种工作模式,包括 ECB、CBC、CFB、OFB、CTR 以及 GCM,以帮助读者理解其在不同应用场景下的优势和使用方式。
1. 什么是 SM4 加密算法?
1.1 SM4 算法的背景
SM4 是中国自主设计的对称分组加密算法,与全球著名的 AES(高级加密标准)类似。SM4 通过 128 位的密钥对数据进行加密或解密,其特点是效率高,适合硬件实现。特别是在移动通信和物联网等场景中,它的使用日益广泛。
1.2 SM4 的加密过程
SM4 的加密过程将数据块分成 128 位(16 字节)的分组进行加密,使用 32 轮加密操作,基于复杂的置换和替代(P-box 和 S-box)。由于其固定的 128 位分组长度,处理非 128 位整数倍的明文数据时,通常需要进行填充。
2. 工作模式:不同的数据加密方式
SM4 的核心加密过程是基于分组的,但在实际应用中,数据往往不是单个固定的 128 位分组,因此需要结合不同的 工作模式 来处理任意长度的数据块。工作模式定义了如何将数据分块,并控制加密块之间的依赖性。以下是常见的工作模式及其伪随机流生成机制的详细解释。
2.1 ECB(电子密码本模式 - Electronic Codebook Mode)
ECB 是最简单的加密模式,它将明文划分为独立的 128 位分组,对每个分组独立进行加密。
特点:
- 每个分组独立加密,密文与明文之间存在一一对应关系。
- 不同分组之间没有关联,易于并行处理。
缺点:
- 安全性较低。相同的明文块总是加密为相同的密文块,容易被攻击者识别出模式。
适用场景:
- 适合处理结构化的数据(如加密图片),但不推荐用于大量的纯文本数据。
明文: P1 P2 P3 P4 ...
密文: C1 C2 C3 C4 ...
2.2 CBC(密码分组链接模式 - Cipher Block Chaining Mode)
CBC 通过引入链式依赖来提高安全性。它将每个明文块与前一个密文块异或后再进行加密,第一个分组需要一个初始化向量(IV)来开始链式加密。
特点:
- 每个分组依赖于前一个分组,无法并行处理。
优点:
- 安全性高,适合大多数情况下的加密需求。
缺点:
- 需要初始化向量 (IV),加密过程是顺序进行的。
明文: P1 P2 P3 P4 ...↓ ↓ ↓IV ⊕ P1 ⊕ P2 ⊕ P3 ⊕ P4↓ ↓ ↓ ↓
密文: C1 C2 C3 C4 ...
2.3 CFB(加密反馈模式 - Cipher Feedback Mode)
CFB 是一种流模式,允许加密不满 128 位的数据块。CFB 的基本思想是,先将初始化向量加密,然后将输出与明文进行异或操作生成密文。
生成伪随机流的步骤:
- 初始化向量(IV):选择一个随机的 IV。
- 加密 IV:将 IV 输入到 SM4 算法中,生成 R1。
- 生成密文:
- 将 R1 与第一个明文块 P1 异或,生成密文 C1。
- 使用密文生成下一个伪随机流:
- 将 C1 输入 SM4,生成 R2,并以此类推。
优点:
- 能够处理流数据,安全性较高。
缺点:
- 解密过程必须顺序进行,无法并行化。
IV -> SM4 -> R1↓P1 ⊕ R1 = C1
2.4 OFB(输出反馈模式 - Output Feedback Mode)
OFB 与 CFB 类似,但加密过程不依赖于前一个密文块。OFB 通过将上一个加密结果作为输入,生成伪随机流。
生成伪随机流的步骤:
- 初始化向量(IV):选择随机的 IV。
- 加密 IV:对 IV 加密,得到 R1。
- 生成密文:
- 将 R1 与明文 P1 异或,生成 C1。
- 生成下一个伪随机流:
- 将 R1 输入 SM4 生成 R2,并以此类推。因此无须顺序执行。可以提前生成随机流。
优点:
- 非常适合流式数据加密,具有良好的并行性。
缺点:
- 如果 IV 重复,可能导致安全性问题。
IV -> SM4 -> R1↓P1 ⊕ R1 = C1
2.5 CTR(计数器模式 - Counter Mode)
CTR 模式通过计数器生成伪随机流,每个分组的加密是独立的,因此可以并行处理。
生成伪随机流的步骤:
- 初始化向量(IV):选择一个随机的 IV。
- 计数器(Counter):初始化计数器,通常从 0 开始。
- 生成伪随机流:
- 将 IV 和计数器结合,输入 SM4 生成 R1。
- 递增计数器,继续生成 R2、R3 等。
- 生成密文:
- 将 R1、R2 与明文异或生成密文。
优点:
- 并行性强,适合多处理器系统。
缺点:
- 必须确保计数器唯一,避免重用。
IV || CTR -> SM4 -> R1, R2, ...↓P1 ⊕ R1 = C1, P2 ⊕ R2 = C2
2.6 GCM(Galois/Counter Mode)
GCM 是一种结合了 CTR 模式和身份验证的加密模式。它提供了加密和认证功能,适合对数据进行加密时也需要验证数据完整性的场景。
生成伪随机流的步骤:
- 初始化向量(IV):选择随机的 IV。
- 计数器(Counter):初始化计数器,结合 IV。
- 加密:
- 使用 CTR 模式生成伪随机流。
- 计算身份验证标签:
- 结合明文和其他附加数据,生成一个身份验证标签,确保数据的完整性和来源。
优点:
- 提供加密和认证功能,安全性极高。
缺点:
- 复杂度较高,处理时间相对较长。
3. 总结
SM4 算法是中国商用密码体系的重要组成部分,其 128 位分组加密特性和高效的性能使其广泛应用于安全通信、无线网络等领域。在实际使用中,不同的工作模式满足了各种应用场景的需求:
- ECB 简单但安全性较低,适合结构化数据。(高安全场景不推荐使用)
- CBC 具有良好的安全性,适合大多数应用。
- CFB 和 OFB 将分组加密转化为流加密,适合流式数据。
- CTR 模式不仅安全,还支持并行处理。
- GCM 结合了加密和认证,适合对安全性要求极高的场景。
根据具体需求,选择合适的工作模式能够极大地提升 SM4 算法的实际效果。
参考文献
- 《中国密码标准 SM4 算法规范》
- 密码学相关文献及论文