在密码学领域,国密算法 SM4 是我国自主研发的分组对称加密算法,凭借 128 位分组长度、128 位密钥长度的设计,在金融、政务、物联网等领域广泛应用。但分组密码本身仅能处理固定长度(SM4 为 128 位)的明文数据,而现实中需要加密的文件、数据流、存储块等往往是任意长度的。为解决这一问题,“工作模式” 应运而生 —— 它相当于分组密码的 “应用框架”,定义了如何将固定长度的分组加密逻辑扩展到任意长度数据,同时兼顾安全性、性能与实际场景需求。本文将详细解读 SM4 的 8 种主流工作模式:ECB、CBC、CFB、OFB、CTR、GCM、CCM 与 XTS。
一、基础认知:分组密码工作模式的核心价值
工作模式的核心作用有三点:一是 “长度适配”,将任意长度的明文拆分为符合 SM4 分组长度的块(最后一块需补全),或转化为流密码形式处理;二是 “安全增强”,避免相同明文分组加密后产生相同密文(这是分组密码的天然隐患),通过引入初始化向量(IV)、随机数(nonce)等参数,抵御统计分析、重放攻击等风险;三是 “功能扩展”,部分模式(如 GCM、CCM)可同时实现 “加密” 与 “认证”,确保数据不仅不被窃取,还不被篡改。
在了解具体模式前,需明确两个关键概念:
- 初始化向量(IV):用于打破明文分组的关联性,通常要求 “随机且唯一”(部分模式仅需唯一),无需保密,但同一密钥下不可重复;
- 认证加密(AEAD):同时提供加密(机密性)与认证(完整性、防篡改)的能力,生成 “认证标签”,解密时需验证标签有效性,代表模式为 GCM、CCM。
二、8 种工作模式深度解析
1. ECB 模式:最简单却最危险的 “独立加密”
工作原理
ECB(电子密码本模式)是最基础的模式:将明文按 128 位拆分为独立分组,每个分组用 SM4 密钥单独加密,密文分组直接拼接即为最终密文。整个过程无需 IV,每个分组的加密 / 解密完全独立。
特点与风险
- 性能:加密、解密均可并行处理(因分组独立),理论性能最高;
- 安全性:存在致命缺陷 —— 相同明文分组会生成相同密文分组。例如用 ECB 加密图片,若图片中有重复像素块(如背景),密文会呈现明显的 “块重复”,攻击者可通过统计分析还原明文结构,甚至篡改单个密文块(对应明文块也会被篡改,不影响其他块);
- 适用场景:仅用于加密 “短且唯一” 的数据(如密钥封装、固定标识),绝对禁止用于文件、数据流等大数据加密。
2. CBC 模式:通过 “链式关联” 修复 ECB 缺陷
工作原理
CBC(密码分组链接模式)通过 “链式关联” 解决 ECB 的关联性问题:
- 明文分组按 128 位拆分,最后一块补全;
- 第一个明文分组与 “初始化向量(IV)” 进行异或运算,再用 SM4 加密得到第一个密文分组;
- 后续每个明文分组先与前一个密文分组异或,再加密,形成 “前密文影响后明文” 的链式结构。
特点与应用
- 安全性:相同明文分组因 “前密文异或” 的干扰,会生成不同密文,抵御统计分析攻击;但密文块被篡改后,会影响后续所有明文块的解密(链式传播);
- 性能:加密无法并行(需等待前一个密文块),解密可并行(已知密文块即可独立解密,再与前一个密文块异或);
- IV 要求:需随机生成且唯一(无需保密),若 IV 重复,相同明文会生成相同密文;
- 适用场景:文件加密、早期 SSL/TLS 协议(如 TLS 1.0)、IPsec VPN,适合对并行性要求不高的场景。
3. CFB 模式:将分组密码转化为 “流密码”
工作原理
CFB(密文反馈模式)将 SM4 从 “分组密码” 转化为 “流密码”,可处理任意长度明文(无需严格按 128 位拆分):
- 初始时,用 IV 作为 “反馈块”,用 SM4 加密反馈块得到 “密钥流块”;
- 密钥流块与明文数据(可小于 128 位)异或,得到密文数据;
- 下一轮的 “反馈块” 替换为当前密文块,重复上述过程。
特点与应用
- 流密码特性:加密过程类似 “一次性密码本”,密钥流与明文逐位 / 逐字节异或,适合处理流媒体、实时数据流;
- 性能:加密、解密均需串行(需等待前一个密文块作为反馈),并行性差;
- IV 要求:需随机唯一,若 IV 重复,密钥流会重复,导致明文泄露;
- 适用场景:语音 / 视频实时加密、串口数据传输,适合 “边产生边加密” 的场景。
4. OFB 模式:优化反馈逻辑的流密码模式
工作原理
OFB(输出反馈模式)与 CFB 类似,但 “反馈块” 改为 SM4 的 “输出块”(而非密文块),进一步优化并行性:
- 用 IV 加密得到第一个 “输出块”,输出块与明文异或得到密文;
- 下一轮的 “反馈块” 替换为当前输出块(而非密文块),加密输出块得到新的输出块;
- 所有输出块可提前生成(无需等待明文),再与明文异或。
特点与应用
- 并行性提升:输出块可独立预生成,加密、解密均可并行(只需提前计算输出块);
- 安全性:与 CFB 类似,但因反馈块是 “输出块”(不依赖密文),密文被篡改仅影响对应明文块(无链式传播);
- 风险点:若 IV 重复,输出块序列会完全相同,相同明文会生成相同密文,需严格保证 IV 唯一;
- 适用场景:资源受限设备(如物联网传感器)的实时数据加密、语音加密,兼顾流处理与并行性。
5. CTR 模式:高性能并行的 “计数器模式”
工作原理
CTR(计数器模式)是目前应用最广的流密码模式之一,核心是通过 “计数器” 生成密钥流:
- 定义 “nonce(随机数)” 与 “计数器”,两者拼接为 128 位的 “计数器块”(nonce 固定,计数器从 0 递增);
- 用 SM4 加密每个计数器块,生成对应的 “密钥流块”;
- 密钥流块与明文块异或,得到密文块(解密时用相同密钥流块与密文块异或)。
特点与应用
- 极致并行:计数器块可独立生成(nonce 固定,计数器递增),密钥流块可并行计算,加密、解密完全并行,性能接近 SM4 算法的理论上限;
- nonce 要求:同一密钥下,nonce 必须唯一(计数器可重复),若 nonce 重复,密钥流会完全相同,导致 “一次性密码本重复”,明文可被破解;
- 安全性:仅提供机密性,不提供认证(需额外配合 HMAC 等算法保证完整性);
- 适用场景:数据库加密、云存储加密、高性能服务器数据处理,适合对吞吐量要求高的场景。
6. GCM 模式:兼顾加密与认证的 “全能选手”
工作原理
GCM(Galois / 计数器模式)是典型的 AEAD 模式,结合了 CTR 的加密能力与 “Galois 域乘法” 的认证能力,同时支持 “关联数据(AD)”(如数据包头部信息,需认证但无需加密):
- 加密阶段:用 CTR 模式加密明文,生成密文;
- 认证阶段:将密文、关联数据(AD)通过 Galois 域乘法计算,生成 “认证标签”(通常 128 位);
- 解密阶段:先验证认证标签(不通过则拒绝解密),再用 CTR 模式解密。
特点与应用
- 全能性:同时提供机密性、完整性、防篡改性,支持关联数据认证;
- 并行性:加密、解密、认证标签计算均可并行,性能优异;
- nonce 要求:推荐使用 12 字节(96 位)nonce,需唯一(同一密钥下不可重复),若 nonce 重复,会导致密钥泄露;
- 硬件依赖:Galois 域乘法需硬件加速(如 CPU 的 AES-NI 指令集,可兼容 SM4 优化),软件实现性能较低;
- 适用场景:5G 通信、TLS 1.2+/1.3 协议、云存储、物联网网关,是目前最主流的高安全模式。
7. CCM 模式:轻量型 AEAD 模式
工作原理
CCM(计数器 / CBC-MAC 模式)也是 AEAD 模式,基于 CTR 加密与 CBC-MAC 认证(CBC-MAC 是用 CBC 模式生成消息认证码):
- 预处理阶段:将明文、关联数据(AD)按规则拼接,补全为 128 位分组;
- 认证阶段:用 CBC-MAC 对预处理数据计算认证码;
- 加密阶段:用 CTR 模式加密明文与认证码,生成密文与认证标签。
特点与应用
- 轻量性:无需 Galois 域乘法,软件实现简单(仅依赖 SM4 的分组加密逻辑),适合资源受限设备;
- 并行性:加密可并行(CTR 模式),但认证阶段(CBC-MAC)需串行,整体并行性弱于 GCM;
- nonce 要求:nonce 长度可配置(通常 4-14 字节),需唯一,若 nonce 重复,认证会失效;
- 适用场景:物联网终端(如智能电表、传感器)、嵌入式设备,适合硬件资源有限(无专用加密加速)的场景。
8. XTS 模式:专为存储设备设计的 “块加密模式”
工作原理
XTS(XEX-based tweaked-codebook mode with ciphertext stealing)是针对存储设备(如磁盘、SSD、U 盘)优化的模式,支持 “随机访问”(可独立加密 / 解密单个存储块,无需处理整个文件):
- 采用 “双密钥” 设计:K1 用于 SM4 分组加密,K2 用于生成 “tweak(微调值)”;
- tweak 由 “存储块地址”(如扇区编号)、“数据单元大小” 等信息生成,确保同一明文块在不同地址下加密结果不同;
- 明文块与 tweak 异或后用 K1 加密,再与 tweak 异或,得到密文块(解密过程相反)。
特点与应用
- 随机访问支持:每个存储块独立加密,修改单个块无需重新加密整个文件,适配磁盘 “按块读写” 的特性;
- 安全性:防 “重放攻击”(同一明文块在不同地址加密结果不同)、防 “块篡改”(篡改密文块会导致解密后明文错乱);
- 无 IV 依赖:无需额外存储 IV,tweak 由存储块自身信息生成,简化部署;
- 适用场景:磁盘加密(如 Windows BitLocker 的国密适配版)、SSD 加密、数据库存储块加密,是存储设备的首选模式。
三、模式选择指南:按需匹配场景
8 种模式无 “绝对优劣”,核心是匹配实际需求,以下为关键选择维度:
- 是否需要认证:若需同时保证完整性(如金融交易、云传输),优先选 GCM、CCM(AEAD 模式);仅需机密性(如本地文件加密),可选 CBC、CTR、OFB;
- 并行性需求:高性能场景(如云服务器、5G)选 GCM、CTR、OFB;资源受限场景(如物联网)选 CCM、OFB;
- 存储场景:磁盘、SSD 等块存储设备,必选 XTS;
- 流处理场景:实时语音 / 视频、流媒体,选 CFB、OFB、CTR;
- 兼容性需求:需兼容旧系统(如早期 TLS),选 CBC;新系统优先选 GCM。
需特别注意:ECB 模式仅用于极端特殊场景(如密钥封装),日常业务中严禁使用;所有模式均需严格遵守 IV/nonce 的使用规则(尤其是 GCM、CTR,nonce 重复会直接导致安全失效)。
四、总结
SM4 的 8 种工作模式,本质是为不同场景设计的 “安全工具”——ECB 是基础但脆弱的 “入门工具”,CBC、CFB、OFB 是适配传统场景的 “常规工具”,CTR 是追求性能的 “加速工具”,GCM、CCM 是兼顾安全与功能的 “全能工具”,XTS 是专为存储优化的 “专用工具”。在实际应用中,需结合业务场景的安全性、性能、兼容性需求,选择合适的模式,才能让 SM4 算法的安全价值最大化。
|
模式名称 |
模式类型 |
核心特性 |
并行性(加密 / 解密) |
安全能力(机密性 + 完整性 / 防篡改) |
关键要求 |
适用场景 |
|
ECB |
基础分组模式 |
独立加密每个明文块,无关联 |
可 / 可 |
仅机密性(弱,相同明文块密文重复) |
无 IV/nonce 需求 |
仅短且唯一数据(如密钥封装) |
|
CBC |
链式分组模式 |
明文块与前密文块异或,链式关联 |
不可 / 可 |
仅机密性(抵御统计分析,篡改传播) |
需随机唯一 IV(无需保密) |
旧系统文件加密、早期 TLS(1.0)、IPsec |
|
CFB |
流密码模式(密文反馈) |
密文块作为反馈生成密钥流,逐段处理任意长度数据 |
不可 / 不可 |
仅机密性(流处理,篡改影响单块) |
需随机唯一 IV(无需保密) |
实时语音 / 视频、串口数据传输 |
|
OFB |
流密码模式(输出反馈) |
输出块作为反馈生成密钥流,可预生成密钥流 |
可(预生成)/ 可 |
仅机密性(流处理,篡改不传播) |
需随机唯一 IV(无需保密) |
资源受限 IoT 传感器、实时语音加密 |
|
CTR |
流密码模式(计数器) |
计数器 + nonce 生成密钥流,独立计算 |
可 / 可 |
仅机密性(高性能,需额外认证) |
需唯一 nonce(同一密钥下不可重复) |
数据库加密、云存储、高性能服务器 |
|
GCM |
AEAD 模式(认证加密) |
CTR 加密 + Galois 域乘法认证,支持关联数据 |
可 / 可 |
机密性 + 完整性 + 防篡改(AEAD) |
需唯一 96 位 nonce,依赖硬件加速 |
5G 通信、TLS 1.2+/1.3、物联网网关 |
|
CCM |
AEAD 模式(轻量认证加密) |
CTR 加密 + CBC-MAC 认证,软件实现简单 |
可(加密)/ 不可(认证) |
机密性 + 完整性 + 防篡改(AEAD) |
需唯一可配置 nonce(4-14 字节) |
资源受限 IoT 终端(智能电表、传感器) |
|
XTS |
存储专用块模式 |
双密钥 + 存储块地址生成 tweak,支持随机访问 |
可(块独立)/ 可 |
机密性 + 防重放 / 块篡改 |
需双密钥(K1 加密 + K2 生成 tweak) |
磁盘加密(BitLocker 国密版)、SSD、数据库存储块 |
399

被折叠的 条评论
为什么被折叠?



