信封加密
最近更新时间: 2025-01-15 17:01:00
简介
信封加密(Envelope Encryption)是一种应对海量数据的高性能加解密方案。对于较大的文件或者对性能敏感的数据加密,使用 GenerateDataKey 接口生成数据加密密钥 DEK,只需要传输数据加密密钥 DEK 到 KMS 服务端(通过CMK 进行加解密),所有的业务数据都是采用高效的本地对称加密处理,对业务的访问体验影响很小。 在实际业务场景中,对数据加密性能要求较高,数据加密量大的场景下,可通过生成 DEK 来对本地数据进行加解密,保证了业务加密性能的要求,同时也由 KMS 确保了数据密钥的随机性和安全性。
示意图
本场景中,KMS 生成的 CMK 作为重要资源,通过 CMK 生成和获取 DEK 的明文和密文。用户根据实际业务场景,首先在内存中通过 DEK 明文来对本地数据进行加密,然后将 DEK 密文和密文数据落盘,其次在业务解密场景中需通过 KMS 来解密 DEK 密文,最后通过解密出来的 DEK 明文在内存中解密。
操作步骤
创建明文 DEK
- API 调用 KMS GenerateDataKey 接口生成数据密钥,
- 用户通过第三方工具或者开发库创建(比如 OpenSSL)。
创建和保存密文 DEK
- 密文 DEK 可以通过 KMS 云 API 对明文加密生成,也可以通过在线工具来处理。
- 密文 DEK 由用户自行保存,常见的实现方案中,密文 DEK 会和密文业务数据保存在一起,比如存储场景下保存在一个或类似访问途径的存储容器,通信场景下与密文 DEK 和密文业务数据共同组成一个报文。
优势
高效
所有的业务数据都是采用高效的本地对称加密处理,对业务的访问体验影响很小。而对于 DEK 的创建和加解密开销,除了非常极端的情况下,您需要采用"一次一钥"的方案,大部分场景下可以在一段时间内复用一个 DEK 的明文和密文,所以大多数情况下这部分开销非常小。
安全易用
信封加密的安全性类似于常见公钥体系,DEK 保护业务数据,而KMS 则保护 DEK 并提供更好的可用性,您的主密钥无论如何都不会被泄露,只有有用密钥访问权限的对象才有能力操作 CMK。
何时在云上使用信封加密?
- 较大体积:目前 KMS API 支持4KB以下数据加解密。
- 海量数据,低延迟:想对业务数据加解密,但是又比较在乎访问延迟。KMS 后台虽然拥有非常高的性能,但是是远程调用且采用非对称加密,而信封加密方案大多数操作使用高性能的本地对称加密。
常见方案对比
敏感信息加密 | 信封加密 | |
---|---|---|
相关密钥 | CMK | CMK、DEK |
性能 | 非对称加密,远程调用 | 少量远程非对称加密,海量本地对称加密 |
主要场景 | 密钥、证书、小型数据 | 海量大型数据 |