信封加密是类似数字信封技术的一种加密手段。这种技术将加密数据的数据密钥封入信封中存储、传递和使用,不再使用用户主密钥(CMK)直接加密和解密数据。

为什么使用信封加密

用户在使用数据密钥时,可能存在以下问题:

  • 安全性隐患:通过网络将敏感信息从客户手中传递到阿里云服务的过程中会存在诸多风险,例如:窃听、钓鱼。
  • 无法互相信任和提供可信证明:用户不一定信任阿里云服务,愿意上传敏感数据。阿里云服务也难以证明自己不会误用和泄露这些数据。
  • 性能差、成本高:大量数据需要通过安全信道传递到服务端,加密后再返回给用户,对阿里云服务的性能影响很大。此外,大量的移动数据会带来巨大的成本。

信封加密具有以下特点:

  • 保护数据密钥:加密数据密钥时,数据密钥将受到加密保护,您可以安全地将加密数据与加密数据密钥一起存储。
  • 信任和可信证明:KMS对密钥的所有操作都会进行访问控制及日志跟踪,提供所有密钥的使用记录,满足审计和合规性要求。
  • 性能好、成本低:KMS通过密码运算API在线生成数据密钥,用离线数据密钥在本地加密大量数据。

加密和解密本地文件

  • 加密流程加密1
    1. 创建一个用户主密钥CMK。
    2. 调用GenerateDataKey接口生成数据密钥(一个明文数据密钥和一个密文数据密钥)。
    3. 使用明文的数据密钥加密明文文件,产生密文文件。
    4. 将密文数据密钥和密文文件一同存储到持久化存储设备或服务中。
  • 解密流程解密
    1. 从持久化存储设备或服务中读取密文数据密钥和密文文件。
    2. 调用Decrypt接口解密数据密钥,取得明文数据密钥。
    3. 使用明文数据密钥解密密文文件,得到明文文件。

代码示例

您可以使用以下两种方式进行信封加密:

  • 使用KMS SDK

    您可以使用KMS的SDK,直接调用KMS的接口GenerateDataKey产生数据密钥,随后利用第三方加密库和数据密钥对数据进行加密,最后将数据密钥的密文作为“信封”和数据的密文组装在一起。

    KMS SDK的代码示例,请参见加密和解密本地文件

  • 使用加密SDK

    加密SDK帮助您封装了信封加密的最佳实践,您可以通过加密SDK更便捷地在业务中集成加密和解密操作。

    加密SDK的代码示例,请参见加密SDK快速入门(Java)