加密相关

最近更新时间:2019-01-14 10:10:59

KS3服务端加密使用指南


目录


1 概述

服务器端加密关乎静态数据加密,即 KS3 在将您的数据写入数据中心内的磁盘时会在对象级别上加密这些数据,并在您访问这些数据时为您解密这些数据。只要您验证了您的请求并且拥有访问权限,您访问加密和未加密数据元的方式就没有区别。例如,如果您使用预签名的 URL 来共享您的对象,那么对于加密和解密对象,该 URL 的工作方式是相同的。

2 使用方式

KS3目前支持两种方式管理加密密钥:

  • 使用具有 KS3 托管密钥的服务器端加密 (SSE-S3) – 利用多因素强加密来使用唯一密钥加密每个对象。作为额外的保护,它将使用定期轮换的主密钥加密密钥本身。KS3 服务器端加密使用256 位高级加密标准 (AES-256)来加密您的数据。

  • 使用具有客户提供的密钥的服务器端加密 (SSE-C) – 您管理数据的加密/解密、加密密钥和相关工具。

3 API支持

3.1 使用具有 KS3 托管密钥的服务器端加密 (SSE-S3)

PUT 操作

请求头
名称 描述
x-kss-server-side​-encryption 如果请求中包含此头,服务端将对数据进行加密处理,合法值:AES256
响应头
名称 描述
x-kss-server-side​-encryption 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
x-kss-server-side​-encryption 如果x-kss-server-side​-encryption请求头的值不是AES256

POST 操作

表单项

如果用户需要服务器使用默认加密,需要以下表单项

名称 描述
x-kss-server-side-encryption 如果存储 object 时使用了服务端加密,则需要配置该表单项,值为使用的加密算法,目前支持AES256。
类型:String
错误返回
类型 描述
加密类型无效 如果x-kss-server-side​-encryption表单项的值不是AES256

Initiate Multipart Upload 操作

请求头
名称 描述
x-kss-server-side​-encryption 如果请求中包含此头,服务端将生成加密密钥,并在分块上传时使用该密钥进行加密,合法值:AES256
响应头
名称 描述
x-kss-server-side​-encryption 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
加密类型无效 如果x-kss-server-side​-encryption请求头的值不是AES256

Upload Part 操作

响应头
名称 描述
x-kss-server-side​-encryption 如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
非法参数 如果提供x-kss-server-side​-encryption请求头,将报400错误,提示参数非法

Complete Multipart Upload 操作

响应头
名称 描述
x-kss-server-side​-encryption 如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
非法参数 果提供x-kss-server-side​-encryption请求头,将报400错误,提示参数非法

COPY 操作

请求头
名称 描述
x-kss-server-side​-encryption 合法值:AES256
x-kss-copy-source-server-side-encryption-customer-algorithm 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头
x-kss-copy-source-server-side-encryption-customer-key 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头
x-kss-copy-source-server-side-encryption-customer-key-MD5 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头

注:x-kss-copy-source-server-side-encryption-customer-algorithm 、x-kss-copy-source-server-side-encryption-customer-key 、x-kss-copy-source-server-side-encryption-customer-key-MD5此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
加密类型无效 如果x-kss-server-side​-encryption请求头的值不是AES256
MD5值错误 400错误,x-kss-copy-source-server-side-encryption-customer-key-MD5 不是 x-kss-copy-source-server-side-encryption-customer-key 的MD5值
加密算法错误 400错误,x-kss-copy-source-server-side-encryption-customer-algorithm不是合法的AES256
非法参数 400错误,x-kss-copy-source-server-side-encryption-customer-algorithm 、x-kss-copy-source-server-side-encryption-customer-key 、x-kss-copy-source-server-side-encryption-customer-key-MD5 3个请求头未同时存在

GET 操作

响应头
名称 描述
x-kss-server-side​-encryption 如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
非法参数 如果提供x-kss-server-side​-encryption请求头,将报400错误,提示参数非法

HEAD 操作

响应头
名称 描述
x-kss-server-side​-encryption 如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
非法参数 如果提供x-kss-server-side​-encryption请求头,将报400错误,提示参数非法

3.2 通过使用客户提供的加密密钥的服务器端加密 (SSE-C) 保护数据

PUT 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-side​-encryption​-customer-key-MD5 不是 x-kss-server-side​-encryption​-customer-key 的MD5值
加密算法错误 400错误,x-kss-server-side​-encryption​-customer-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在

POST 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-side​-encryption​-customer-key-MD5 不是 x-kss-server-side​-encryption​-customer-key 的MD5值 的MD5值
加密算法错误 400错误,x-kss-server-side​-encryption​-customer-algorithm 不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在

Initiate Multipart Upload 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-side​-encryption​-customer-key-MD5 不是 x-kss-server-side​-encryption​-customer-key 的MD5值
加密算法错误 400错误,x-kss-server-side​-encryption​-customer-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在

Upload Part 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-side​-encryption​-customer-key-MD5 不是 x-kss-server-side​-encryption​-customer-key 的MD5值
加密算法错误 400错误,x-kss-server-side​-encryption​-customer-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在
缺少客户密钥 400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥
MD5值不一致 400错误,获取数据时提供的密钥的MD5和存储时不一致

Complete Multipart Upload 操作

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
非法参数 400错误,不应该携带客户端提供密钥进行加密的请求头,如果携带,提示参数非法

COPY 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值
x-kss-copy-source-server-side-encryption-customer-algorithm 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头
x-kss-copy-source-server-side-encryption-customer-key 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头
x-kss-copy-source-server-side-encryption-customer-key-MD5 如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头

注: x-kss-server...三个请求头以及x-kss-copy-source...三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求头里包含该值,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求头里包含该值,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss(-copy-source)-server-...-MD5 不是 x-kss(-copy-source)-server-...-key 的MD5值
加密算法错误 400错误,x-kss(-copy-source)-server-side​-...-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在
缺少客户密钥 400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥
MD5值不一致 400错误,获取数据时提供的密钥的MD5和存储时不一致

GET 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-...-MD5 不是 x-kss-server-...-key 的MD5值
加密算法错误 400错误,x-kss-server-side​-...-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在
缺少客户密钥 400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥
MD5值不一致 400错误,获取数据时提供的密钥的MD5和存储时不一致

HEAD 操作

请求头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 客户端提供的加密算法,合法值:AES256
x-kss-server-side​-encryption​-customer-key 客户端提供的加密密钥
x-kss-server-side​-encryption​-customer-key-MD5 客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值

注:此三个请求头必须同时存在

响应头
名称 描述
x-kss-server-side​-encryption​-customer-algorithm 如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值
x-kss-server-side​-encryption​-customer-key-MD5 如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值
错误返回
类型 描述
MD5值错误 400错误,x-kss-server-...-MD5 不是 x-kss-server-...-key 的MD5值
加密算法错误 400错误,x-kss-server-side​-...-algorithm不是合法的AES256
非法参数 400错误,上述3个请求头未同时存在
缺少客户密钥 400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥
MD5值不一致 400错误,获取数据时提供的密钥的MD5和存储时不一致

金山云,开启您的云计算之旅

立即注册