3. 加密基础

讲 BYOK 安全导入之前,你总得先搞清楚底层的加密逻辑是什么。我在项目里遇到过不少同学,上来就问我「KMS 到底怎么护住我的密钥」,结果聊两句发现他对对称和非对称的区别都模糊。嗯,咱们今天就把它掰开揉碎了讲清楚。

3.1 对称加密:一把钥匙开一把锁

对称加密,说白了就是加密和解密用同一把密钥。你拿它锁上数据,别人拿它打开数据。听起来简单吧?实际场景里最常见的就是 AES(Advanced Encryption Standard)。

我举个例子:你往云上存个配置文件,用 AES-256 加密。密钥就是那串 256 位的随机数。存的时候用密钥加密,读的时候用同一个密钥解密。速度快,适合加密大量数据——比如数据库、对象存储里的文件。

但对称加密有个天生短板:密钥怎么安全地分给接收方?你要是直接把密钥写在邮件里发过去,那跟没加密有啥区别?所以对称加密一般只用在「我自己存自己用」的场景,或者跟非对称加密配合着用。

我的习惯:做 BYOK 导入时,云厂商的 KMS 底层加密数据用的几乎全是 AES-256。你带来的是自己的密钥材料,KMS 拿它加密你的业务数据。这个过程中,密钥本身的安全性才是核心。

3.2 非对称加密:公钥加密,私钥解密

非对称加密就聪明得多。它有两个密钥:一个公钥(公开),一个私钥(保密)。你用公钥加密,只有对应的私钥能解开。反过来,你用私钥签名,别人用公钥验签。

讲个实际场景:你在本地生成一对 RSA 密钥,把公钥上传到云 KMS,私钥锁在本地 HSM 里。云上用公钥加密一个临时密钥,传回来给你。你用私钥解开,得到那个临时密钥,再用它去加密真正的业务数据。

我不太建议直接用非对称加密去加密大块数据——太慢了。RSA-2048 加密 1KB 数据都要几十毫秒,你要是加密一个几 MB 的文件,那性能根本扛不住。

对称 vs 非对称:关键对比
维度 对称加密 (AES) 非对称加密 (RSA/ECC)
密钥数量 1 个密钥 2 个密钥(公钥+私钥)
加解密速度 极快(硬件加速可达 10+ Gbps) 慢(适合小数据)
典型用途 数据加密、文件加密 密钥交换、数字签名
密钥分发 难(需要安全通道) 易(公钥可公开)
常见算法 AES-256, SM4 RSA-2048, ECC P-256

3.3 混合加密:取长补短

实际系统中,这两者往往结合用。我参与过一个企业级 BYOK 项目,流程是这样的:

  1. 业务端生成一个对称密钥(AES-256),这叫数据密钥(DEK)。
  2. 用这个 DEK 加密真正的业务数据。
  3. 再用云 KMS 的公钥(非对称)加密这个 DEK,得到信封加密后的密文。
  4. 把密文和加密后的数据一起存到云上。
  5. 需要时,先用私钥解密信封得到 DEK,再用 DEK 解密数据。

这就是传说中的「信封加密」。你想想看,这样既享受了对称加密的速度,又解决了密钥分发难题。云 KMS 在你导入密钥时,底层也是类似的逻辑。

3.4 密钥生命周期:从出生到消亡

搞清加密类型只是第一步。更难的是密钥怎么管理。我记得有一次做安全审计,发现某团队用了同一个密钥加密了两年的数据——后来那个密钥被泄露了,所有历史数据都得重新加密。这就是生命周期管理没做好。

一个完整的密钥生命周期包括这几个阶段:

  • 生成:随机数质量很关键。千万别用伪随机数生成器。我用 OpenSSL 命令行或者 HSM 硬件生成,确保真随机。
  • 存储:密钥必须加密存储。云 KMS 用硬件安全模块(HSM)保护根密钥,根密钥加密其他密钥。
  • 使用:只在内存中解密,用完立即销毁。不要写日志里。
  • 轮换:定期更换密钥。我一般建议最久 1 年轮换一次,敏感业务 90 天。
  • 销毁:彻底删除。云 KMS 里的密钥销毁有延时机制,防止误操作。但一旦确认销毁,就真没了。

我曾经踩过的坑: 在一次密钥轮换时,没有更新依赖该密钥的加密数据的元信息。结果旧密钥销毁后,所有历史数据都读不出来了。教训:轮换前先确保所有依赖都已迁移到新密钥。

密钥生命周期流程图 密钥生命周期 生成 存储 使用 轮换 销毁 关键说明 生成:使用硬件随机数,避免伪随机 轮换:定期更换,最久1年;销毁前确认所有依赖已迁移 密钥一旦销毁,所有由它加密的数据将永久无法解密

3.5 BYOK 场景下的密钥生命周期特例

BYOK(Bring Your Own Key)和普通密钥管理有个关键区别:密钥材料由你生成,你保留对密钥的最终控制权。云 KMS 只负责使用,不能导出。

我个人在项目中总结过 BYOK 密钥生命周期必须注意的三个要点:

  • 导入前的校验:云厂商通常会要求你提供密钥的校验值(比如 SHA-256 哈希)。导入时云 KMS 会比对,确保传输没被篡改。
  • 导入后的状态:你的密钥进入云 KMS 后,通常处于「等待启用」状态。你需要手动激活。别拖太久——有些厂商有超时自动删除机制。
  • 销毁策略:云 KMS 支持计划删除(比如设定 7 天后删)。但你得知道,一旦你真的删了,云上所有用这个密钥加密的数据就再也解不开了。我在项目里一般建议保留一份本地备份的密钥材料,再执行云上删除。

避坑指南: 导入密钥时,别用网线直传。用云厂商提供的加密 API(如 AWS KMS ImportKeyMaterial),走 TLS 通道。我在早期一个项目里图省事把密钥贴到控制台输入框里——后来发现控制台页面日志可能会记录表单内容。从那以后我再也不敢那么干了。

3.6 你应该记住的

加密类型的选择取决于场景。对称加密快但密钥分发难,非对称加密安全但慢。混合加密才是工业级方案。而密钥生命周期,就是确保你的密钥从生到死都在受控状态。

下一层我们会具体讲云 KMS 的架构和高可用设计。不过那是后话了。先把今天的脉络理清楚:你懂了对称和非对称的区别,知道了密钥有生成、存储、使用、轮换、销毁这五步,面对 BYOK 导入时就有了底气。