信封加密(Envelope Encryption)是一种应对海量数据的高性能加解密方案。这种技术不再使用用户主密钥(CMK)直接加密和解密数据,而是通过生成加密数据的数据密钥(DEK),将其封入信封中(即通过CMK加密)存储、传递和使用,由KMS确保数据密钥的随机性和安全性。
实际使用时,用户无需将大量业务数据上传至KMS服务端,直接通过离线的数据密钥在本地实现加解密,有效避免安全隐患,保证了业务加密性能的要求。
场景示意图
加解密流程
信封加密过程
- 通过KMS控制台或者调用CreateKey接口,创建一个用户主密钥(CMK)。
- 调用GenerateDataKey接口创建一个数据密钥。KMS会返回一个明文的数据密钥和一个经用户出密钥(CMK)加密的密文数据密钥。
- 使用明文的数据密钥加密本地文件,产生密文文件,然后销毁内存中的明文数据密钥。
- 用户将密文数据密钥和密文文件一同存储到持久化存储设备或服务中。
信封解密过程
- 从本地文件中读取密文数据密钥。
- 调用KMS服务的Decrypt接口,将密文数据解密为明文数据密钥。
- 用明文数据密钥为本地密文文件解密,再销毁内存中的明文密钥。
相关API
您可以调用以下KMS API,实现对本地数据的加密或解密操作。
API名称 | 说明 |
---|---|
createKey | 创建用户主密钥(CMK)。 |
generateDataKey | 生成信封加密的数据密钥,返回数据密钥的明文和经过指定用户主密钥加密的密文。 |
decrypt | 解密由generateDataKey接口生成的数据密钥密文,不需要指定CMK。 |