密钥保护怎么做
密钥保护的工程解法是信封加密:为每条数据生成独立的数据密钥,用主密钥加密数据密钥,主密钥存放在密钥管理系统或密码机中。这样加解密都经过受控接口,轮换时只需重新加密数据密钥,不必触碰海量业务数据。
基本信息
| 核心思路 | 主密钥保护数据密钥,数据密钥保护业务数据 |
|---|---|
| 主密钥存放 | 密钥管理系统(KMS)或密码机等受控密码模块 |
| 密钥分层 | 主密钥(KEK)与数据密钥(DEK)分层管理 |
| 轮换方式 | 轮换主密钥时只重加密数据密钥 |
| 访问控制 | 调用接口需鉴权、限流、审计与告警 |
| 记录要求 | 密钥生成、分发、轮换、销毁全过程留痕 |
典型使用场景
- 数据库敏感字段加密,用独立数据密钥隔离不同租户数据
- 对象存储文件加密,密钥由 KMS 统一托管并按策略轮换
- 备份与归档数据加密,密钥与副本分开保管避免一并泄露
- 密钥轮换演练,验证在不停机的前提下完成主密钥切换
- 审计要求下提供密钥操作日志与授权记录
信封加密流程
信封加密流程
1 每条数据生成独立 DEK(数据密钥)
2 用 KEK(主密钥,存放 KMS/密码机)加密 DEK,得到密文 DEK
3 数据用 DEK 加密,密文与密文 DEK 一起存储
4 解密时先调 KMS 解出 DEK,再解数据
5 轮换时只重加密 DEK,不触碰业务数据常见问题与做法
| 问题 | 风险 | 做法 |
|---|---|---|
| 密钥明文写进配置 | 代码库或镜像泄露即等同未加密 | 改由 KMS 或密码机托管,应用只拿句柄 |
| 全系统复用同一密钥 | 一处泄露影响全部数据 | 按数据域或租户分密钥 |
| 密钥长期不轮换 | 泄露窗口无限延长 | 制定轮换周期与演练计划 |
| 解密接口无审计 | 批量导出难以发现 | 限流、告警并记录调用方 |
密钥与密文分离存放;KMS 调用应审计、限流并配置告警,防止被用于批量解密。
备份加密密钥要单独保护:密钥与备份放在同一份介质里,介质丢失即等于数据明文泄露。