QingStor 对象存储支持数据加密服务

QingStor 对象存储已支持由用户提供密钥的数据加密方式。用户在上传对象时提供密钥,对象存储服务端用该密钥对上传的对象进行加密处理。相应地,在下载加密过的对象时,用户也须提供密钥,对象存储服务端用该密钥对下载的对象进行解密处理后返回。

NOTE: QingStor 对象存储服务端不保存用户的密钥,只会保存加密算法和密钥的 MD5 值。用户需要自己妥善保管上传时指定的密钥。

支持加密的 APIs 有:PUT ObjectMultipart Upload。支持解密的 APIs 有:GET ObjectHEAD ObjectPUT Object – Copy 。更详细的信息请参考QingStor 对象存储官方文档中数据加密一节。

1.加密过程

1. 客户端提供密钥及密钥的 MD5 值,在上传对象的请求的请求头中指定加密算法、密钥、和密钥 MD5 值。目前支持的加密算法是 AES256 。

2. 服务端根据密钥生成 MD5 值,与用户上传的密钥 MD5 值比对,以确认密钥在传输过程中的完整性。

3. 服务端对上传的对象进行加密。

4. 服务端丢弃用户上传的密钥,只保存加密算法和密钥 MD5 值。

5. 用户需要自己保存给该对象加密的密钥。

2.解密过程

1. 客户端在获取对象的请求的请求头中指定加密算法、密钥、密钥 MD5 值。密钥须为上传时所指定的加密密钥。

2. 服务端根据密钥生成 MD5 值,与用户上传的密钥 MD5 值比对,以确认密钥在传输过程中的完整性。

3. 服务端比对上传对象时保存的 MD5 值和请求中的密钥的 MD5 值,以验证密钥是否正确。

4. 服务端将对象用请求头中指定的密钥解密并返回。

3.示例

下面通过 PUT Object 和 GET Object 接口,演示数据加密服务流程。

1.上传对象时指定加密算法,密钥和密钥 MD5。

PUT /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Sun, 16 Aug 2016 10:15:00 GMT
Content-Length: 7987
Authorization: authorization string
X-QS-Encryption-Customer-Algorithm: AES256
X-QS-Encryption-Customer-Key: M9Thi2bO7tsdbsuMo679ojaq0G6L5laHbxwjo0JVBeI=
X-QS-Encryption-Customer-Key-MD5: OTIxZjI3YzNhYjA4MTAyMzI3ZmViOGIxNWYzMjRhODA=
[7987 bytes of object data]

2.获取对象时提供密钥,由对象存储服务端解密

GET /myphoto.jpg HTTP/1.1
Host: mybucket.pek3a.qingstor.com
Date: Sun, 16 Aug 2016 10:15:02 GMT
Authorization: authorization string
X-QS-Encryption-Algorithm: AES256
X-QS-Encryption-Customer-Key: M9Thi2bO7tsdbsuMo679ojaq0G6L5laHbxwjo0JVBeI=
X-QS-Encryption-Customer-Key-MD5: OTIxZjI3YzNhYjA4MTAyMzI3ZmViOGIxNWYzMjRhODA=