首页/安全/加密与证书速查/信封加密(KEK/DEK)

信封加密(KEK/DEK)

信封加密用数据密钥(DEK)加密数据、用主密钥(KEK,存放于 KMS/HSM)加密数据密钥:批量数据无需逐块调用 KMS,同时保持集中治理与版本化能力。

加密与证书速查安全更新于 2026-10-13

信封加密是什么

信封加密用数据密钥(DEK)加密数据、用主密钥(KEK,通常存放于 KMS 或 HSM)加密数据密钥:批量数据无需逐条调用 KMS,同时保留集中治理与版本化能力。直接收益是减少对 KMS 的调用量,降低限流风险与延迟;代价是要正确管理 DEK 密文与 KEK 版本的对应关系,否则轮换之后可能找不到解密路径。

基本信息

层次KEK 位于 KMS 或 HSM;DEK 的密文随数据一起存储
优势减少 KMS 调用量,降低限流风险与延迟
版本管理DEK 密文需记录所用 KEK 版本,轮换时可追溯解密路径
明文 DEK用完即丢弃,绝不与数据一起存储
轮换方式KEK 轮换只需重新包装 DEK 密文,不必重加密全部数据

典型使用场景

  • 对象存储中海量文件的加密与密钥治理
  • 数据库敏感字段的批量加密,按租户或表分配 DEK
  • 降低 KMS 调用成本与限流风险
  • KEK 轮换:重包装 DEK 密文而不触碰数据本体
  • 跨区域复制数据时管理密钥版本对应关系

流程说明

流程说明
生成 DEK → 用 DEK 加密数据 → 用 KEK 加密 DEK
→ 存储(数据密文 + DEK 密文 + KEK 版本号)→ 丢弃明文 DEK
# 解密为反向操作:先解 DEK 密文,再用 DEK 解数据
# KEK 轮换只需重包装 DEK 密文,数据本体不必重新加密

层次与职责

层次存放位置轮换影响
KEKKMS 或 HSM轮换时重新包装 DEK 密文
DEK明文仅在内存中短暂存在轮换需重加密对应数据
DEK 密文随数据一起存储需记录 KEK 版本便于追溯
版本号与密文一同存储缺失会导致无法定位解密路径
解密路径是反向操作:先解 DEK 密文,再用 DEK 解数据。如果团队同时维护多套 KEK,务必把版本号与密文一起存储,否则轮换之后就难以确定该用哪把主密钥去解密,历史数据的可恢复性会直接受影响。
实施建议:把「数据密文、DEK 密文、KEK 版本、算法标识」作为一条固定结构一起存储,并写进数据字典。这样即使更换服务实现或迁移存储,历史数据仍能被正确解密。

易错点

  • 把明文 DEK 与数据一起存储 → 信封加密的意义完全丧失
  • 不记录 KEK 版本 → 轮换后无法定位解密路径,历史数据可能永久无法解密
  • 用单把 DEK 加密过多数据 → 保护的密文量过大,一旦泄漏影响面成倍扩大
  • 逐个对象调用 KMS → 容易触发限流,任务失败且重试成本很高

数据来源与参考

  • AWS KMS 官方文档(信封加密)
  • NIST SP 800-57(密钥层次)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌