信封加密是类似数字信封技术的一种加密手段。这种技术将加密数据的数据密钥封入信封中存储、传递、和使用,不再使用主密钥直接加解密数据。
直接的加解密服务不适合云场景
由云服务直接为用户加解密数据存在以下问题:
- 安全性隐患
- 通过因特网将敏感信息从客户手中传递到服务的过程中会存在诸多风险,例如:窃听、钓鱼。
- 信任和可信证明难做
- 用户不一定信任云服务,愿意上传如此敏感的数据。
- 云服务也难以证明自己不会误用和泄露这些数据。
- 性能差、成本高
- 大量数据需要通过安全信道传递到服务端,加密后再返回给用户。对用户服务的性能影响很大。
- 我们都知道,在分布式系统中,我们应该尽可能的移动计算而不是移动数据,大量的移动数据会带来巨大的成本。
信封加密场景:加密本地文件
图例 | 含义 |
---|---|
![]() |
用户主密钥 |
![]() |
明文数据密钥 |
![]() |
密文数据密钥 |
![]() |
明文文件 |
![]() |
密文文件 |

加密流程
- 首先用户需要创建一个主密钥。
- 调用 KMS 服务的GenerateDataKey接口,产生数据密钥。这里用户能够得到一个明文的数据密钥和一个密文的数据密钥。
- 用户使用明文的数据密钥,加密文件,产生密文文件。
- 用户将密文数据密钥和密文文件一同存储到持久化存储设备或服务中。

解密流程
- 用户从持久化存储设备或服务中读取密文数据密钥和密文文件。
- 调用 KMS 服务的Decrypt接口,解密数据密钥,取得明文数据密钥。
- 使用明文数据密钥解密文件。
在文档使用中是否遇到以下问题
更多建议
匿名提交