题目03:SM4 分组密码算法的 ECB、CBC、CFB、OFB、CTR、BC 及 OFBNLF 七种工作模式
你是一个商用密码应用安全性评估专家,现在有一道题目需要你来分析。
某信息系统声明支持 SM4 分组密码算法的 ECB、CBC、CFB、OFB、CTR、BC 及 OFBNLF 七种工作模式对存储的信息系统用户敏感数据(单位地址、用户住址)进行机密性保护,该信息系统以 1 字节(8 比特)为最小的数据处理单位,每次加密处理的数据长度可能不同。
(1)以下是密码应用安全性评估人员从该信息系统数据库中获取了单位地址的一组完整的 SM4 分组密码算法密文数据,其中密文数据以十六进制表示。
请分析此处最有可能采用了哪种工作模式并说明判断依据,采用此种模式可能存在什么问题。
a1939a14a00b5a78
101f8436318b7ba6
a72a26385dbc73cc
abd12b9ebb3b9d45
92e3ae63ae24dd0e
011986a5a0242f12
a096162f1af4652c
e429b7f91b3aa7f2
b971256a97ee0879
b73285c8e8385813
2f9476f4dfb81f2f
4f112c11d72a6817
d71f35507465d09e
f4bad45db3b9fe2a
2bd00d034a60840a
8bcb33c32ed8f4c8
c4d2fe54a655f9d8
ee4af8bcd4d30bb0
a1939a14a00b5a78
101f8436318b7ba6
(2)密码应用安全性评估人员从该信息系统数据库中获取了用户住址的两组密文数据(假定这两组数据是完整的,是使用 SM4 分组密码算法基于相同的工作模式及参数设置加密形成的密文),密文数据以十六进制表示。
请分析该信息系统对用户住址进行存储时,最有可能采用了哪种工作模式,请说明判断依据。
b931efb0113f9bef
3808203b581319b1
a9a578c775a94398
225d47b08042fe6b
c29e9f40237f8b1d
21ca20
9bfb3f8219c0240c
b578a4ae9eba1119
1547464de1825d19
be2fed920567d03e
e9571b6a9975375c
b8f27689601c6ac9
a2bf89fbd5fdaeb2
0802556aee589475
2e951c0a7a74d5a8
14c10beff01f0eac
0142e1bc071da6b2
adcbd3386f53bed0
本题共 3 分,共 2 个问题,基本按照 2 分 + 1 分作答。
(1)正确识别 ECB 模式(1 分),重复密文块依据(1 分)。
(2)正确识别 CTR 模式(1 分),任意长度与无填充特性依据(0.5 分),流模式特性补充(0.5 分)。
GB/T 39786-2021 《信息安全技术 信息系统密码应用基本要求》
GB/T 43206-2023 《信息安全技术 信息系统密码应用测评要求》
GB/T 17964-2021 《信息安全技术 分组密码算法的工作模式》
【【分组密码的工作模式】|分组密码 | 密码学 | 信息安全 | ECB | CBC | CFB| OF B| CTR|】
判断依据:密文数据中存在重复的密文块(如开头和结尾的两个块完全相同)。ECB 模式下,相同的明文块在相同密钥下会生成相同的密文块。单位地址等结构化数据可能存在重复字段(如固定格式的地址前缀),导致密文重复。
问题:ECB 模式无法隐藏明文的数据模式,相同明文块加密后密文一致,攻击者可通过密文重复推测明文内容,存在信息泄露风险。此外,ECB 不支持语义安全性,无法抵抗重放攻击。
判断依据:两组密文最后一组长度不固定(第一组末尾为 3 字节,第二组为完整块),表明加密时无需填充,直接按字节处理。CTR 模式将分组密码转换为流密码,支持任意长度数据加密,且以字节为最小处理单位,符合题目描述。此外,SM4-CTR 通过计数器和 Nonce 生成密钥流,与明文逐字节异或,适合动态长度的数据加密。
ECB/CBC/BC:需填充至完整分组,密文长度应为分组整数倍,与第一组末块 3 字节矛盾。
CFB/OFB/OFBNLF:虽支持流模式,但通常以分组为单位处理(如 CFB-128),与“1 字节最小处理单位”不完全匹配;而 CTR 天然支持按字节处理。
ECB 模式由于其加密特性,对明文的统计规律保留程度较高,攻击者如果掌握了足够多的密文以及对应的明文(例如部分已知明文攻击场景),就可以通过分析重复出现的密文块去推测其他密文对应的明文内容,保密性较差。比如对于一些格式相对固定的单位地址信息(如开头是省份、城市等有规律表述的内容),攻击者容易根据已有的对应关系去破解其他加密的单位地址内容,无法很好地隐藏数据的模式和统计特性,不能提供较强的机密性保护。
GB_T 17964-2021 信息安全技术 分组密码算法的工作模式
分组密码算法工作模式 block cipher operation mode
电码本工作模式 electronic codebook(ECB) operation mode
密文分组链接工作模式 cipher block chaining(CBC) operation mode
密文反馈工作模式 cipher feedback(CFB) operation mode
输出反馈工作模式 output feedback(OFB) operation mode
计数器工作模式 counter(CTR) operation mode
初始向量 initialization vector
CBC: 密文分组链接(Cipher Block Chaining)
CFB: 密文反馈(Cipher Feedback)
ECB: 电码本(Electronic Codebook)
OFB: 输出反馈(Output Feedback)
在各计算机终端之间, 或者多人共用一个计算机终端所交换的二进制数据可能会有重复或者共同使用的序列。 在 ECB 工作模式中, 相同的明文分组(使用相同的密钥) 生成相同的密文分组。
a) 对某一个分组的加密或解密可独立于其他分组进行;
c) 相同的明文分组(使用相同的密钥) 总是生成相同的密文分组, 这使得它容易遭受“字典攻击”,这种字典是由对应的明文和密文分组构成的。
对于超过一个分组长度的明文一般建议不使用 ECB 工作模式。 对于可接受重复性(例如, 输入分组绝不重复) , 必须单独访问或随机访问各个分组的特殊使用情况,ECB 的用法可以在未来的标准中规定。
只有长度为分组长度的整数倍的明文才能被加密或解密。 其他长度的明文需要被填充至分组长度的整数倍。
在 ECB 工作模式中, 如果一个密文分组中存在一个或多个比特的差错, 则只会影响该密文分组的解密; 该解密将导致得到的明文分组中每个明文比特以 50%的概率出现差错。
如果加密或解密之间的分组边界丢失了(例如由于一个比特的滑动) , 则在重新建立正确的分组边界之前, 加密与解密之间将失去同步。 如果分组边界丢失, 则所有解密操作的结果都不正确。
只要使用相同的密钥和初始向量对相同的明文进行加密,CBC 工作模式将生成相同的密文。 介意这种性质的用户需要采用相应方法来改变明文的起始分组、 密钥或初始向量。 一种可能的方法是将一个唯一的标识符(例如一个递增计数器) 加到每个 CBC 消息的起始位置。 在对长度不能增加的明文进行加密时可使用某种方法从明文中计算出一个值, 例如明文的随机访问存储方式的地址。
a) 链接操作使得密文分组依赖于当前的和以前的明文分组, 因此调换密文分组的顺序不可能使得明文分组的顺序对应调换;
b) 使用不同的 IV 以防止同一明文加密成同一密文;
计数器模式下的分组密码算法使用序列号作为算法的输入。 不是用加密算法的输出填充寄存器,而是将一个计数器输入到寄存器中。 每一个分组完成加密后, 计数器都要增加某个常数, 典型值是 1。
没有什么是专供计数器用的, 它不必根据可能的输入计数。 可以将随机序列发生器作为分组算法的输入, 而不必考虑其密码上是否安全。
a) 加密运算可并行处理, 吞吐量仅受可使用并行数量的限制;
b) 使用不同的计数器生成不同的密钥流, 可防止同一明文加密成同一密文;
c) CTR 工作模式的加密和解密过程都使用分组密码的加密运算;
d) CTR 工作模式不依赖明文生成用于对明文进行异或运算的密钥流。
计数器模式不需要填充明文, 可以处理任意长度的明文。
CTR 模式不在生成的明文输出中扩散密文差错。 密文中每一差错比特只会引起解密后的明文中出现一个差错比特。
ECB 模式:ECB 模式会将相同的明文块映射到相同的密文块,这可能导致模式泄露。
CBC 模式:CBC 模式通过 XOR 操作将当前块与前一个块的输出结合,因此相同的明文块会产生不同的密文块。
CFB 模式:CFB 模式将分组密码转换为流密码,每次加密处理的数据长度可能不同。
OFB 模式:OFB 模式也转换为流密码,但不会影响密文长度。
CTR 模式:CTR 模式将分组密码转换为流密码,每次加密处理的数据长度可能不同。
BC 模式:BC 模式是 CBC 模式的变种,用于处理非块对齐的数据。
OFBNLF 模式:OFBNLF 模式是 OFB 模式的变种,用于处理非块对齐的数据。
CFB/OFB/OFBNLF 模式:如果明文长度不满足分组长度的整数倍, 则需要填充明文。(国家标准原话)
ECB 模式中,相同的明文块在相同密钥下生成相同的密文块。
结构化数据(如地址)容易因重复字段导致密文块重复。
核心依据:密文块重复性(ECB 模式的典型特征)。
ECB 需要填充至完整分组,但题目中未直接涉及填充问题,需通过密文块长度推断。
两组密文最后一组长度不同(第一组末尾为 3 字节,第二组为完整块),说明加密时无需填充。
关键知识点:CTR 模式将分组密码转换为流密码,支持按字节加密,无需填充。
CFB/OFB 若以分组为单位仍需填充,若以字节为单位(如 CFB-8)虽支持,但 CTR 更常见且标准化程度高。
CTR 模式适用于动态长度的数据加密(如用户住址),尤其适合以字节为最小处理单位的场景。
重点阅读 ECB、CBC、CFB、OFB、CTR 等模式的定义、加密流程、填充要求及安全性分析。GB/T 17964-2021
参考 B 站视频《分组密码工作模式详解》,重点观看 ECB 和 CTR 模式的案例分析。
根据密文特征(如重复块、填充方式、长度匹配)快速判断工作模式。
使用 OpenSSL 或国产密码库(如 GMSSL)生成不同模式的密文,观察密文结构。
实战工具:给出多组不同模式的密文(如 ECB、CBC、CTR),分析重复块、填充字符、末块长度等特征。
对比填充机制:例如 PKCS#5/PKCS#7 填充与无填充(流密码模式)的区别。
设计实验:用 ECB 加密结构化数据(如 JSON 格式地址),观察密文重复性。
风险:计数器(Nonce)重复导致密钥流复用,引发安全隐患。
算法细节:SM4 的分组长度(128 位)、密钥长度(128 位)及轮函数结构。
SM4 在不同工作模式下的实现差异(如 CTR 模式的计数器生成规则)。应用场景:结合《信息安全技术 商用密码应用安全性评估规范》,掌握 SM4 在存储加密中的合规要求。
判断是否符合商用密码应用安全性要求(如是否使用 ECB 模式存储敏感数据)。
报告模板:记录密文特征、模式判断依据、安全性问题及整改建议(如建议替换 ECB 为 CBC 或 CTR)。
原文始发于微信公众号(利刃信安):【能力验证】题目03:SM4 分组密码算法的 ECB、CBC、CFB、OFB、CTR、BC 及 OFBNLF 七种工作模式
评论