对称加密算法(AES、DES、SM4)

对称加密是密码工程师面试的核心考点,尤其关注算法原理对比、工作模式选择与国密合规。国内企业普遍要求掌握 SM4 替代 AES 的落地能力。面试时需遵循 「算法 → 模式 → 应用场景」 的三段式回答框架,先定性算法特性,再结合安全约束选择模式,最后关联业务场景体现工程思维。

确定算法 对比原理 选择模式 安全考量 场景+合规 分组/密钥长度/轮数 ECB/CBC/GCM/CCM 数据存储/传输/国密合规
📌 面试加分点:回答时主动提及 SM4 的 S 盒设计、密钥扩展算法,以及 GCM 模式对 AEAD 的支持,能体现深度。国内企业尤其关注国密算法与 OpenSSL 的兼容性。

📖 面试问答卡片(3 题)

Q1:请对比 AES、DES、SM4 的算法原理和安全性

🎯 考察点:是否掌握对称加密的核心参数(分组大小、密钥长度、轮数),能否从密码分析角度判断安全性。

🧭 回答框架:先定算法类型 → 分组与密钥长度 → 轮数/结构(Feistel/SPN)→ 安全性对比 → 国密优势。

✏️ 示例回答:AES 分组 128 位,密钥 128/192/256,SPN 结构 10/12/14 轮;DES 分组 64 位,密钥 56 位,已不安全;SM4 分组 128 位,密钥 128 位,32 轮 Feistel 结构,安全性等效 AES-128。国内合规要求优先选 SM4。

❓ 可能追问:SM4 的 S 盒如何构造?与 AES 的 S 盒区别?
⚠️ 避坑提醒:不要只说“DES 已淘汰”,需说明 3DES 在当前场景仍可接受但性能差;避免混淆分组大小与密钥长度。

Q2:对称加密有哪些工作模式?如何选择?

🎯 考察点:是否理解 ECB/CBC/CTR/GCM 等模式的安全缺陷与适用场景,是否了解 AEAD。

🧭 回答框架:列出常见模式 → 分类(电子代码本/分组/流/认证加密)→ 缺点(ECB 明文模式)→ 推荐选择逻辑(传输用 GCM,存储用 CBC+HMAC)。

✏️ 示例回答:ECB 不安全,相同明文输出相同密文;CBC 需随机 IV 且不支持并行;CTR 可并行但无认证;GCM 提供加密+认证,推荐用于网络传输。存储场景可选 CBC+HMAC。国密推荐 SM4-GCM。

❓ 可能追问:GCM 的 nonce 大小为何是 12 字节?IV 重用有什么后果?
⚠️ 避坑提醒:不能为了简单选 ECB;注意区分“工作模式”与“填充模式”(PKCS7/ISO10126)。

Q3:在项目中如何选择对称加密算法?国内企业应关注什么?

🎯 考察点:工程决策能力、国密合规意识、性能与安全权衡。

🧭 回答框架:需求分析(合规/性能/兼容性)→ 算法候选(AES/SM4)→ 模式选择 → 密钥管理方案 → 性能测试验证。

✏️ 示例回答:国内金融项目首选 SM4-GCM,满足 GM/T 标准;海外业务可用 AES-256-GCM。需评估软硬件加速,SM4 在 ARMv8 有指令集优化。密钥管理用 KMS 或 HSM 存储,避免硬编码。

❓ 可能追问:SM4 的加解密性能与 AES 差距?如何迁移存量 AES 加密数据?
⚠️ 避坑提醒:不能只考虑算法忽略密钥生命周期;注意国密算法需要商密认证,避免自行实现。

🏗️ 项目案例模板:国密合规数据加密平台

项目名称国密合规数据加密平台(SM4-GCM 数据保护)
业务背景某银行核心交易系统需满足 GM/T 0054 等商密标准,将原有 AES-256 加密全面替换为 SM4,同时保证零停机迁移。
规模指标每日加密记录 200 万+,平均响应 <50ms,支持 10 个业务域并发接入。
技术栈SM4-GCM(国密标准)、Java 11、Spring Boot、Redis 缓存、HSM (三未信安)、KMS(自研)。
核心难点① 存量 AES 数据在线迁移时需解密后重加密,双写一致性保证;② SM4 软实现性能瓶颈,利用 Intel IPP 或 ARM NEON 优化;③ 密钥轮转策略不能影响业务连续性。
面试高频追问为什么选 GCM 而不选 CBC?SM4 的 S 盒与 AES 有何不同?如何保证加密字段的可搜索性(保留格式加密/密文索引)?
可迁移回答话术“在国密合规项目中,我主导了 SM4-GCM 的算法选型,通过 HSM 实现密钥安全存储,并设计了双缓冲迁移机制,将停机窗口控制在 2 小时内。核心思路是优先满足合规,再通过硬件加速和缓存优化性能。”
💡 面试建议:在描述项目时,主动引出“密钥管理”和“合规审计”两个额外维度,能体现架构思维。SM4 的高频考点还包括 S 盒代数构造、密钥扩展与 AES 对比,建议提前准备 1-2 个技术细节。