每份安全问卷都会问那个问题,每家 SaaS 的回答也都一样:“你们是否对静态数据加密?”——“是,AES-256。” 框勾上了,谁也没了解到任何东西。有趣的问题出现在两页之后,通常写作*“请描述你们的密钥管理实践”*——谁能解密、按什么策略、留下什么审计记录,以及客户想要回自己的密钥时会发生什么。AES-256 是大路货;密钥才是系统。本篇讲的就是这个系统。
它也是到目前为止一切内容底下安静的地基。第 1 篇的租户隔离有一个密码学表达。第 2 篇的身份工作决定谁可以调用 Decrypt。第 3 篇的审计日志是每一次密钥使用的落点。而第 6 篇的事故里有一个最爱用的杠杆:吊销密钥,被偷走的密文就变成一个镇纸。
只有一种架构,没有商量余地
多租户 SaaS 里唯一值得构建的静态加密设计是信封加密(envelope encryption),理由是运维上的,而不是数学上的。数据用**数据加密密钥(DEK)加密——快、本地、对称。DEK 本身由一把主密钥(KEK)**加密(“包裹”),KEK 住在 KMS 里,永不离开。你把密文和加密后的 DEK(EDEK)并排存放。DEK 在内存里存活的时间恰好等于操作所需的时间,然后被抹掉——绝不落盘、绝不进日志、绝不出现在环境变量里。
这套设计买到的是一种可以持续兑现多年的解耦。数据库被拖库,攻击者拿到的是密文和包裹过的密钥——没有一次经过授权的、有日志的 KMS 调用,两者都毫无用处,而这恰好把第 3 篇的审计记录变成了审计师指名要看的密钥使用记录。主密钥轮换变得便宜(重新包裹 EDEK,不碰数据),而 KMS 成为策略栖息的唯一咽喉点:哪个服务角色可以解包哪把密钥、从哪个网络、在什么时段。PCI DSS 4.0 要求 3 把问卷在探查的卫生要求正式化了:成文的生命周期、密钥组件的双人控制、至少每年轮换一次或在密钥管理员离职时轮换。数学从来都不是难点;保管才是。
按租户分密钥:第 1 篇,但密码学版
给每个租户自己的 DEK 层级,三件事立刻随之而来。爆炸半径:一把密钥被泄露或配错范围,暴露的是一个租户,而不是整个平台——这是第 1 篇行级纪律的密码学版本,只不过这一版可以向审计师证明,而不只是口头声明。定点吊销:在第 6 篇那种事故里,你可以冻结单个租户的数据访问,完全不碰其他任何人。还有那个深藏不露的功能,crypto shredding(加密粉碎):删除一个租户的密钥,他们的数据立刻、在所有地方变得不可恢复——包括你没法选择性编辑的备份里。GDPR 删除请求和企业客户离场,都从“数周的数据搜捕”坍缩成“一次密钥删除,外加一条日志”。
代价真实但不大:每次冷读一次 KMS 调用(DEK 短暂缓存,只在内存里),以及一份需要治理的密钥清单。你不应该做的是半途而废的版本——每个环境一把密钥,或者每个数据库一把——那恰恰把按租户分密钥想要缩小的爆炸半径又集中了回去。
BYOK、HYOK,和一碗信任字母汤
迟早会有企业客户把 BYOK 写进问卷,接下来发生什么,取决于你是否知道他们真正在买什么。这碗字母汤——BYOK、CMK、EKM、HYOK、CHEK——可以归约为一个问题:密钥住在谁的基础设施上,以及谁可能被强制、被攻破、或被传票要求沉默?
- BYOK / CMK——客户生成一把密钥,导入你的 KMS。他们得到的所有权仪式感虽然带表演成分,却依然真正有用:干净的轮换、一把以客户命名的密钥、一个吊销杠杆。但密钥现在住在你的基础设施上,所以信任模型没有根本改变——你(以及任何能强制你的人)仍然可以使用它。
- HYOK / EKM——密钥永不离开客户的 HSM 或外部密钥管理器。每一次解密都是一次向他们端点的中介调用:他们在自己的日志里看到每一次使用,一个 403 就能让数据立刻不可读。这就是“你们能不能在我不知情的情况下读我的数据?”的答案——不能,而且这是证据。 这正是 Salesforce Shield、跑在 Azure Key Vault 上的 Dynamics,以及 AWS 的 ISV 模式(data-key-broker 专题曾是 re:Invent 2025 的常客)都为受监管买家收敛到它的原因。
价格是 HYOK 属于企业版功能而不是默认项的原因:每次冷解密都有延迟、可用性耦合(客户的密钥宕机会变成你产品的宕机,挂在你的状态页上),以及一个看起来神似第 2 篇 SSO 配置的接入流程。当单子大到配得上值班 pager 时再提供它。注意那个优雅的对称:HYOK 交给客户的,正是第 3 篇教你构建的东西——一份防篡改、可自助获取的、记录每一次访问他们数据的日志。你成了别人的审计日志供应商。
不是脚注的量子脚注
有一场迁移不管你参不参与都已经在进行。NIST 在 2024 年 8 月定稿了后量子标准——密钥交换用 ML-KEM,签名用 ML-DSA 和 SLH-DSA,2025 年 3 月又选定 HQC 作为备份——此后的部署速度很快:混合 X25519MLKEM768 密钥交换在 Chrome 和 Firefox 里默认开启,Cloudflare 预计今年底其大部分流量都将获得后量子保护,Signal 和 iMessage 也已经迁移了协议。驱动力是先收割、后解密(harvest now, decrypt later):对手今天录下密文,等密码学相关的量子计算机出现时再读。NIST 的时间表——经典 RSA/ECC 到 2030 年弃用、2035 年禁用——是给合规看的;HNDL 窗口说的是:长寿命数据现在就在暴露。
给 SaaS 的务实分诊很短。你的对称密码基本没事(AES-256 保留;量子只是让有效强度减半)。你的 TLS 密钥交换基本是你边缘服务商的问题——而他们已经在解决了。你的部分是:任何用长寿命密钥签名的东西(软件更新、有效期很长的 token)、任何预期保密十年的加密归档,以及清单本身——没盘点过的东西没法迁移。要求于你的这套纪律有名字,叫 crypto-agility(密码敏捷性):算法藏在配置后面、密钥有版本、轮换经过演练。把信封加密做对了的团队已经走完大半;2019 年把 RSA 硬编码进去的团队,很快就会发现它埋在哪。
系列的下一站
下一扇门目前的想法是:安全 SDLC 与供应链——交付其他一切所保护代码的那条管道,从依赖来源到构建证明(attestation),以及为什么你的 CI 现在是你拥有的最高权限系统。数据隐私工程——保留、驻留(residency)和 DSAR 跑步机——是另一个有力候选。和之前一样:顺序到了那里再定。
练习
- 今天就盘点你的密钥:每一个 secret、它住在哪、谁能用它、你会怎么轮换它。如果诚实的答案里包含“环境变量”或“我们不确定”,那就是发现——不需要问卷来告诉你。
- 为一张表构建信封加密切片:按租户的 DEK、KMS 包裹、EDEK 放在密文旁边。然后做粉碎测试——删掉一个测试租户的密钥,向一位持怀疑态度的同事证明数据不可恢复,包括从昨天的备份里。
- 演练 BYOK 的答案:如果下周的潜在客户问“我们能自己持有密钥吗?”,写下诚实的两段话——你会支持什么(现在支持导入 CMK,以后支持中介式 HYOK)、他们要付出什么(延迟、可用性耦合)、你要付出什么(一个工程师的一个季度)。单子死在临场即兴上。