COS 支持多种服务端加密方式:SSE-COS、SSE-KMS、SSE-C。用户可以自行选择合适的加密方式对存放到 COS 中的数据进行加密。
SSE-COS 加密
SSE-COS 加密即 COS 托管密钥的服务端加密。由腾讯云 COS 托管主密钥和管理数据。用户通过 COS 直接对数据进行管理和加密。SSE-COS 采用了多因素强加密,确保使用唯一的密钥加密每个对象,同时采用 256 位高级加密标准(即 AES-256)来加密数据,并且会通过定期轮换的主密钥来对密钥本身进行加密。
注意
当使用 POST 操作上传对象时,需在表单字段中提供相同的信息,而不是提供 x-cos-server-side-encryption 头部。详情请参见 POST Object。
对于使用预签名 URL 上传的对象,则无法使用 SSE-COS 加密。只能使用 COS 控制台或 HTTP 请求头部指定服务端加密。
COS 不存储用户提供的加密密钥,而是存储加密密钥添加了随机数据的 HMAC 值,该值用于验证用户访问对象的请求。COS 无法使用随机数据的 HMAC 值来推导出加密密钥的值或解密加密对象的内容。因此,如果用户丢失了加密密钥,则无法再次获取到该对象。
当使用 POST 操作上传对象时,需在表单字段中提供相同的信息,而不是提供 x-cos-server-side-encryption-* 头部。详情请参见 POST Object。
SSE-C 仅能通过 API 进行使用,不支持控制台操作。
使用 REST API
当用户请求以下接口时,对于 PUT 和 POST 请求可以通过提供 x-cos-server-side-encryption-* 头部来应用服务端加密,对于 GET 和 HEAD 请求使用 SSE-C 加密的对象时,需要提供 x-cos-server-side-encryption-* 头部来解密指定对象,详情请参见 公共请求头部 - SSE-C。以下操作支持此头部: