客户端加密客户端加密是指将文件(Object)发送到对象存储OSS之前在本地进行加密。使用客户端加密功能时,您需要对主密钥的完整性和正确性负责。在对加密数据进行复制或者迁移时,您需要对加密元数据的完整性和正确性负责。

使用客户端加密时,会为每个Object生成一个随机数据加密密钥,用该随机数据加密密钥明文对Object的数据进行对称加密。主密钥用于生成随机的数据加密密钥,加密后的内容会当作Object的元数据保存在服务端。解密时先用主密钥将加密后的随机密钥解密出来,再用解密出来的随机数据加密密钥明文解密Object的数据。主密钥只参与客户端本地计算,不会在网络上进行传输或保存在服务端,以保证主密钥的数据安全。

对于主密钥的使用,目前支持以下两种方式:

使用KMS托管用户主密钥

当使用KMS托管用户主密钥用于客户端数据加密时,无需向OSS加密客户端提供任何加密密钥,只需要在上传对象时指定KMS用户主密钥ID(也就是CMK ID)。具体工作原理如下图所示。

使用用户自主管理密钥

使用用户自主管理密钥时,需要您自主生成并保管加密密钥。当本地客户端加密Object时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下图所示。

更多信息请参见OSS开发指南中的客户端加密。