ISO 27001:2022 密码控制措施全解析:从”123456″到密码学的治理之路
2022版 ISO 27001 对附录A做了大幅重组,控制项从114项精简为93项,但密码学相关的控制措施不降反增——从旧版的单一控制项(A.10)扩展为五项独立控制(5.33-5.37)。这个变化释放了一个明确信号:密码学不再是”IT部门的事”,而是需要系统性治理的安全域。
本文逐条拆解这五个控制项,并给出审计检查要点和落地建议。
一、五个控制项速览
| 控制项 | 标题 | 类型 | 核心关注点 |
|---|---|---|---|
| 5.33 | 密码控制策略 | 预防性 | 有没有成文的密码策略? |
| 5.34 | 密钥管理 | 预防性 | 密钥的生成、分发、存储、销毁全生命周期 |
| 5.35 | 加密实施 | 预防性 | 策略落地了吗?用的什么算法? |
| 5.36 | 开发中的密码控制 | 预防性 | 自研系统有没有正确使用密码学? |
| 5.37 | 密码产品与服务 | 检测性 | 供应商的密码产品合规吗? |
二、5.33 密码控制策略——一切的原点
标准要求
组织应制定并实施密码控制策略,明确密码控制的使用规则,包括业务需求、法律法规要求和合同义务。
翻译成人话:你得有一份书面文件,说清楚什么场景用什么加密、为什么这么选。
策略应包含的内容
一份合格的密码控制策略至少应涵盖:
- 适用范围:哪些系统、数据、通信链路需要加密
- 算法选择标准:推荐/禁止的算法清单(如推荐 AES-256,禁止 DES/RC4)
- 密钥长度要求:对称 ≥128bit,非对称 ≥2048bit(RSA)/256bit(ECC)
- TLS 版本要求:最低 TLS 1.2,推荐 TLS 1.3
- 证书管理规范:谁来签发、有效期多久、如何续期
- 合规映射:是否满足《密码法》、GDPR、PCI-DSS 等
审计常见发现
| 问题 | 频次 |
|---|---|
| 没有书面密码策略 | ⭐⭐⭐⭐⭐ |
| 策略写了但从未评审更新 | ⭐⭐⭐⭐ |
| 策略与实操脱节(如写了禁用 MD5,实际还在用) | ⭐⭐⭐⭐ |
| 未覆盖云环境的加密要求 | ⭐⭐⭐ |
三、5.34 密钥管理——最容易翻车的环节
标准要求
组织应制定和实施密钥管理策略,覆盖密钥的生成、分发、存储、使用、归档和销毁的全生命周期。
密码学圈有一句老话:“密钥管理比算法本身更难。” 再强的加密算法,密钥泄露了就是裸奔。
密钥生命周期管理
生成 → 分发 → 存储 → 使用 → 轮换 → 归档 → 销毁
每个阶段的控制要点:
| 阶段 | 控制要点 | 常见问题 |
|---|---|---|
| 生成 | 使用 CSPRNG,禁止人工编密钥 | 用 rand() 而非 SecureRandom |
| 分发 | 非对称加密传输或密钥协商协议(DH/ECDH) | 邮件/微信传密钥 |
| 存储 | HSM/KMS,禁止硬编码在代码中 | 密钥写死在配置文件里 |
| 使用 | 最小权限、审计日志、禁止复用 | 多个系统共用同一密钥 |
| 轮换 | 定义轮换周期(推荐≤1年) | 三年不换密钥 |
| 归档 | 加密归档,保留至合规期限 | 归档密钥与生产密钥混放 |
| 销毁 | 密码学擦除(多次覆写),记录销毁日志 | “删了就完了” |
硬编码密钥——最常见的低级错误
# ❌ 审计不合格
ENCRYPTION_KEY = "mySecretKey123!"
# ✅ 使用 KMS 或环境变量 + 密钥管理服务
import os
from cryptography.fernet import Fernet
key = os.environ.get("ENCRYPTION_KEY") # 来自 KMS
cipher = Fernet(key.encode())
推荐工具
| 场景 | 工具 |
|---|---|
| 云原生 KMS | AWS KMS / Azure Key Vault / 阿里云 KMS |
| 自建 HSM | Thales / Utimaco |
| 开源方案 | HashiCorp Vault / OpenBao |
| 证书管理 | cert-manager (K8s) / Let’s Encrypt |
四、5.35 加密实施——策略落地
标准要求
组织应根据密码控制策略实施加密控制,包括使用经批准的加密算法和协议。
这条是对 5.33 策略的落地检验。审计时会问:“你的策略写了要用 AES-256,那你现在所有系统真的都用 AES-256 了吗?”
实施检查清单
- [ ] 数据传输加密:内网是否全量 TLS?还是只有外网?
- [ ] 数据存储加密:数据库是否开启了 TDE(透明数据加密)?
- [ ] 备份加密:离线备份是否加密存储?
- [ ] 移动介质:U盘/移动硬盘是否强制加密?
- [ ] 邮件加密:敏感邮件是否使用 S/MIME 或 PGP?
- [ ] 即时通讯:是否使用端到端加密的通讯工具?
算法红绿灯
| 状态 | 算法 | 替代方案 |
|---|---|---|
| 🔴 禁止 | DES, RC4, MD5, SHA-1, SSLv3, TLS 1.0/1.1 | — |
| 🟡 谨慎 | RSA-1024, 3DES, CBC 模式 | 尽快迁移 |
| 🟢 推荐 | AES-256-GCM, ChaCha20-Poly1305, ECDHE, Ed25519, TLS 1.3 | — |
五、5.36 开发中的密码控制——从源头防漏洞
标准要求
组织应确保在系统开发生命周期中适当使用密码控制。
这是 2022 版新增的控制项,专门针对自研系统。很多企业采购的 SaaS 产品合规,但自研的内部系统一塌糊涂。
SDLC 各阶段的密码学检查点
| SDLC 阶段 | 检查点 |
|---|---|
| 需求 | 是否需要加密?合规要求是什么? |
| 设计 | 算法选型、密钥架构、证书方案 |
| 开发 | 代码审查重点:是否用了禁用算法?密钥是否硬编码? |
| 测试 | TLS 配置扫描(SSL Labs)、静态密钥检测(truffleHog/gitleaks) |
| 部署 | 证书有效期检查、HSTS 配置 |
| 运维 | 证书到期告警、密钥轮换自动化 |
代码审查要点
# 审查时重点检查这些模式
import re
# 1. 硬编码密钥
# 搜索模式: key = "..." / secret = "..." / password = "..."
# 工具: gitleaks, truffleHog
# 2. 弱随机数
# ❌ random.randint() / Math.random()
# ✅ secrets.token_bytes() / crypto.randomBytes()
# 3. 弱哈希
# ❌ hashlib.md5() / hashlib.sha1()
# ✅ hashlib.sha256() / bcrypt / argon2
六、5.37 密码产品与服务——管好供应商
标准要求
组织应确保密码产品和服务的合规性,包括密码产品的采购、使用和退役。
这条关注的是你买的密码产品是否合规。比如采购了某 VPN 网关,它用的加密算法是否符合策略要求?
供应商评估要点
| 维度 | 检查内容 |
|---|---|
| 算法合规 | 产品支持的算法是否在策略白名单内? |
| 认证资质 | 是否通过 FIPS 140-2/3、CC EAL、国密认证? |
| 密钥控制权 | 密钥由你还是供应商管理?(BYOK/HYOK) |
| 审计能力 | 是否提供密码操作审计日志? |
| 生命周期 | 产品停更后密钥如何迁移或销毁? |
| 国密合规 | 涉及等保/密评的系统是否支持 SM2/SM3/SM4? |
七、审核员视角:如何审密码控制
如果你正在准备 ISO 27001 审核,以下是最常被抽样的证据:
| 审核线索 | 抽样方法 | 合格标准 |
|---|---|---|
| 密码策略文件 | 抽查文件版本号、审批记录 | 有审批、版本≤1年 |
| 密钥清单 | 抽查5个密钥的全生命周期记录 | 生成→归档可追溯 |
| 代码仓库扫描 | 用 gitleaks 扫描最近提交 | 0个高危发现 |
| TLS 配置 | 用 SSL Labs 或 testssl.sh 扫描对外服务 | 评级≥B |
| 供应商清单 | 抽查3个密码产品供应商 | 有评估记录、算法合规 |
testssl.sh 快速扫描示例
# 一键检查 TLS 配置
testssl.sh https://example.com
# 关注输出中的:
# - 是否支持 TLS 1.0/1.1(应禁用)
# - 证书是否过期
# - 是否支持不安全的密码套件
# - HSTS 是否配置
八、总结
ISO 27001:2022 把密码控制拆成五项,本质上是在说:
密码学不是技术选型问题,是治理问题。
五个控制项形成一条完整的治理链:
策略(5.33) → 密钥管理(5.34) → 实施(5.35) → 开发嵌入(5.36) → 供应链管控(5.37)
如果只做其中一两项,密码安全就是空中楼阁。审计时最常见的卡点不是”没加密”,而是“有加密但密钥管理一塌糊涂”。
参考资源
- ISO/IEC 27001:2022 附录A 5.33-5.37
- NIST SP 800-57 Part 1: Key Management Recommendations
- OWASP Cryptographic Failures: https://owasp.org/Top10/A02_2021-Cryptographic_Failures/
- 《密码法》(2020年1月1日施行)
- SSL Labs: https://www.ssllabs.com/ssltest/