首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据库加密做了,密钥为什么还是最脆弱的一环

数据库加密做了,密钥为什么还是最脆弱的一环

原创
作者头像
安当加密 3
发布于 2026-10-25 13:23:26
发布于 2026-10-25 13:23:26
390
举报

数据库加密落地之后,很多团队会松一口气:敏感字段都加密了,合规检查也过了。但真正决定这套方案强度的,往往不是加密算法,而是密钥怎么管。

一个很现实的判断标准:如果拿到数据库的 root 权限就能顺藤摸瓜找到密钥,那这层加密对内部人几乎是透明的。攻击链上也是一样——攻击者不需要破解算法,只要把密钥删掉,你的备份就永久失效。

一、先理解密钥是分层的

工程上很少直接用一把密钥加密所有数据,常见做法是三层结构:

  • 根密钥(Root Key):整个体系的信任起点,通常存放在硬件密码模块(HSM)里,永不出设备;
  • 主密钥(Master Key / KEK):由根密钥保护,用于加密数据密钥;
  • 数据密钥(DEK):真正用于加密业务字段或文件,一次一密或按表/按租户派生。

这个结构叫信封加密(Envelope Encryption)。它的价值在于:数据密钥可以频繁轮换,而根密钥不需要动;数据密钥被泄露的爆炸半径被限制在一个很小的范围里。

如果你们的实现是"一个密钥全库通用、写死在配置中心",那从密钥管理角度看还停留在最原始的阶段,轮换一次就要全量重加密,实际操作中基本不会做。

二、密钥存在哪里:三种选择的真实差异

软件 KMS:密钥以加密形式落盘,由主密码保护。部署简单,成本低。缺点是主密码本身成为新的单点,且无法防御拥有宿主机权限的攻击者。

硬件密码模块(HSM):密钥在硬件内生成、使用,明文不出设备边界。金融、政务场景通常强制要求。代价是成本与运维复杂度,以及性能上限——加解密走硬件,QPS 受设备能力约束。

云托管 KMS:由云厂商托管密钥,通过 API 调用。优势是免运维、天然支持多可用区,劣势是跨云场景下密钥分散在多个云上,权限模型和审计口径不统一。

选型不必追求最强,但必须满足两个硬条件:密钥与数据物理或逻辑分离、密钥的使用有可审计的调用记录。

以安当 CKMS 为代表的云密钥管理产品,核心机制是把密钥的生成、存储、分发、轮换、归档、销毁做成统一生命周期,并对接业务侧的加解密调用接口,让"密钥"从配置文件里的一个字符串变成受管控的服务。

三、轮换:最容易出事的一步

密钥轮换听起来是个规范动作,实际落地时踩坑最多的就是它。三个必须提前设计好的点:

第一,双密钥期。 轮换不是"停旧的、起新的",而是新旧密钥并存一段时间:新数据用新密钥加密,旧数据仍能用旧密钥解密,等全量重加密完成后再停用旧密钥。没有双密钥期,轮换当天业务必然出故障。

第二,密钥版本标识。 每份密文都要能标识自己是用哪个版本的密钥加密的。常见做法是在密文头部附加密钥版本号,或者在数据库里单独记录字段与版本的映射。缺了这层标识,历史数据就解不开了。

第三,重加密策略。 全量重加密对高性能库是不可接受的,通常选择增量策略:热数据在线重加密,冷数据懒加载(读取时解密再用新密钥加密回写)。这条策略要写进运维手册,而不是等出事再想。

四、权限:谁能取密钥,比密钥放哪更关键

密钥管理的安全边界最终落在权限上。几个容易被忽略的点:

  • 密钥管理员与数据管理员分离。 能管密钥的人不该同时有业务库的读取权限,否则他一个人就能拿到明文。
  • 应用侧不使用长期凭证。 应用取密钥应通过短期令牌或实例身份认证,而不是在配置文件里放一对永不过期的 AK/SK。
  • 每次取密钥都留痕。 谁、什么时间、从哪个实例、取了哪把密钥、用于什么用途。这份日志在事后追责和合规审计时都是关键证据。
  • 定期复核授权。 离职、转岗、项目下线之后的权限残留,是密钥体系里最常见的隐患。

五、一个可直接执行的验证方法

想快速判断现状,可以在测试环境做一次"密钥断供"演练:

  1. 停掉密钥服务(或撤销应用取密钥的权限);
  2. 观察业务是否立刻报错,报错信息是否暴露密钥内容;
  3. 恢复密钥服务,确认业务自动恢复;
  4. 检查这一段时间的密钥调用日志是否完整。

这个演练能暴露三个问题:应用是否真的在依赖 KMS(还是本地有缓存明文密钥)、故障时的降级行为是否安全、审计链路是否闭环。

六、检查清单

  • 根密钥是否存放在硬件模块或受管 KMS 中,明文是否可能出现在配置文件里?
  • 每份密文是否带密钥版本标识,历史数据能否正确解密?
  • 轮换是否有双密钥期与重加密策略,最近一次轮换是什么时候?
  • 密钥管理员与数据管理员是否分离,取密钥是否走短期凭证?
  • 密钥调用日志是否完整,能否追溯到具体实例与用途?
  • 密钥是否有独立的备份与应急恢复通道,且演练过?

这六个问题里,答不上三个以上,就说明加密的强度实际上由"密钥有多容易拿到"决定,而不是由算法决定。

参考资料

  • GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》
  • GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》
  • NIST SP 800-57 Part 1 Rev.5:Recommendation for Key Management

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、先理解密钥是分层的
  • 二、密钥存在哪里:三种选择的真实差异
  • 三、轮换:最容易出事的一步
  • 四、权限:谁能取密钥,比密钥放哪更关键
  • 五、一个可直接执行的验证方法
  • 六、检查清单
  • 参考资料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档