
# 服务端加密
OBS支持SSE-KMS、SSE-OBS、SSE-C三种加密方式，了解更多服务端加密相关内容请参考[服务端加密](https://support.huaweicloud.com/usermanual-obs/obs_03_0088.html)。
#### 服务端加密相关接口概览
OBS支持对已有桶直接设置、获取和删除加密配置，详细API和参数说明参见：[设置桶的加密配置](https://support.huaweicloud.com/api-obs/obs_04_0062.html)、[获取桶的加密配置](https://support.huaweicloud.com/api-obs/obs_04_0063.html)、[删除桶的加密配置](https://support.huaweicloud.com/api-obs/obs_04_0064.html)。
同时，OBS还是支持在创桶、上传对象、下载对象、分段上传相关接口、复制对象接口中进行加密设置，下表是相关接口涉及参数的概览：
表1服务端加密相关接口和参数说明 
| 参数类型 | 头域                                                          | 头域说明                                      | 头域取值                                                                                                                                                                                                                                                                                          |||
| 参数类型 | 头域                                                          | 头域说明                                      | [创建桶](https://support.huaweicloud.com/api-obs/obs_04_0021.html)                                                                                      | [PUT上传对象](https://support.huaweicloud.com/api-obs/obs_04_0080.html) | [POST上传](https://support.huaweicloud.com/api-obs/obs_04_0081.html) |
|:---|:---|:---|:---|:---|:---|
| 请求头  | x-obs-server-side-encryption                                | 指定加密方式                                    | kms：使用SSE-KMS加密方式 obs：使用SSE-OBS加密方式                                      | kms：使用SSE-KMS加密方式 AES256：使用SSE-OBS加密方式，且使用AES256算法            ||
| 请求头  | x-obs-server-side-data-encryption                           | 指定服务端加密配置的加密算法                            | AES256：使用AES256算法，SSE-KMS和SSE-OBS都可以配置AES256 SM4：使用SM4算法，仅SSE-KMS方式可配置SM4 | 不携带：使用AES256算法 SM4：使用SM4算法                                   ||
| 请求头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID          | 密钥ID                                                                                                                                                 | 密钥ID                                                                | 密钥ID                                                               |
| 请求头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID               | 项目ID                                                                                                                                                 | -                                                                   | -                                                                  |
| 请求头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                         | -                                                                                                                                                    | AES256：表示使用SSE-C加密方式且使用AES256算法                                                                                                         ||
| 请求头  | x-obs-server-side-encryption-customer-key                   | 使用**SSE-C**时密钥明文的base64编码。                | -                                                                                                                                                    | 加密使用的密钥明文的base64编码                                                                                                                      ||
| 请求头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值。                      | -                                                                                                                                                    | 密钥MD5值的base64值                                                                                                                          ||
| 请求头  | x-obs-copy-source-server-side-encryption-customer-algorithm | 复制对象时，如果使用**SSE-C**方式，目标对象副本的加密算法         | -                                                                                                                                                    | -                                                                   | -                                                                  |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key       | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的base64编码。 | -                                                                                                                                                    | -                                                                   | -                                                                  |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key-MD5   | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的MD5值。     | -                                                                                                                                                    | -                                                                   | -                                                                  |
| 响应头  | x-obs-server-side-encryption                                | 服务端加密方式                                   | kms：使用SSE-KMS加密方式 obs：使用SSE-OBS加密方式                                         | kms：使用SSE-KMS加密方式 AES256：使用SSE-OBS加密方式，且使用AES256算法        ||
| 响应头  | x-obs-server-side-data-encryption                           | 服务端加密配置的加密算法                              | AES256：使用AES256算法，SSE-KMS和SSE-OBS都可以配置AES256 SM4：使用SM4算法，仅SSE-KMS方式可配置SM4 | 不携带：使用AES256算法 SM4：使用SM4算法                                  ||
| 响应头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID          | 密钥ID，仅自定义密钥会返回。                                                                                                                                      | 密钥ID，默认密钥和自定义密钥都会返回。                                                                                                                    ||
| 响应头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID               | KMS主密钥所属的项目ID，仅自定义密钥会返回。                                                                                                                                                                                                                                                                      |||
| 响应头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                         | -                                                                                                                                                    | AES256：表示使用SSE-C加密方式且使用AES256算法                                                                                                         ||
| 响应头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值的base64值               | -                                                                                                                                                    | 密钥MD5值的base64值                                                                                                                          ||
   
表2服务端加密相关接口和参数说明 
| 参数类型 | 头域                                                          | 头域说明                                          | 头域取值                                                                                                                                                                                                                                                                                                                                      |||||
| 参数类型 | 头域                                                          | 头域说明                                          | [复制对象](https://support.huaweicloud.com/api-obs/obs_04_0082.html) | [初始化上传段任务](https://support.huaweicloud.com/api-obs/obs_04_0098.html) | [上传段](https://support.huaweicloud.com/api-obs/obs_04_0099.html) | [拷贝段](https://support.huaweicloud.com/api-obs/obs_04_0100.html) | [合并段](https://support.huaweicloud.com/api-obs/obs_04_0102.html) |
|:---|:---|:---|:---|:---|:---|:---|:---|
| 请求头  | x-obs-server-side-encryption                                | 指定加密方式                                        | kms：使用SSE-KMS加密方式 AES256：使用SSE-OBS加密方式，且使用AES256算法         || -                                                               | -                                                               | -                                                               |
| 请求头  | x-obs-server-side-data-encryption                           | 指定服务端加密配置的加密算法                                | AES256：使用AES256算法 SM4：使用SM4算法                               || -                                                               | -                                                               | -                                                               |
| 请求头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID              | 密钥ID                                                                                                                                   || -                                                               | -                                                               | -                                                               |
| 请求头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID                   | -                                                                | -                                                                    | -                                                               | -                                                               | -                                                               |
| 请求头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                             | AES256：表示使用SSE-C加密方式且使用AES256算法                                                                                                                                                                                                                                          |||| -                                                               |
| 请求头  | x-obs-server-side-encryption-customer-key                   | 使用**SSE-C**时密钥明文的base64编码。                    | 加密使用的密钥明文的base64编码                                                                                                                                                                                                                                                       |||| -                                                               |
| 请求头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值。                          | 密钥的MD5值的base64值                                                                                                                                                                                                                                                          |||| -                                                               |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-algorithm | 复制对象时，如果使用**SSE-C**方式，目标对象副本的加密算法             | AES256：表示目标对象副本使用SSE-C加密方式且使用AES256算法                            | -                                                                    | -                                                               | AES256：表示目标对象副本使用SSE-C加密方式且使用AES256算法                           | -                                                               |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key       | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的base64编码。     | 加密使用的密钥明文的base64编码                                               | -                                                                    | -                                                               | 加密使用的密钥明文的base64编码                                              | -                                                               |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key-MD5   | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的MD5值的base64值。 | 密钥的MD5值的base64值                                                  | -                                                                    | -                                                               | 密钥的MD5值的base64值                                                 | -                                                               |
| 响应头  | x-obs-server-side-encryption                                | 指定加密方式                                        | kms：使用SSE-KMS加密方式 AES256：使用SSE-OBS加密方式，且使用AES256算法                                                                                                                                                                                                            |||||
| 响应头  | x-obs-server-side-data-encryption                           | 指定服务端加密配置的加密算法                                | 不携带：使用AES256算法 SM4：使用SM4算法                                                                                                                                                                                                                                     |||||
| 响应头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID              | 密钥ID                                                                                                                                                                                                                                                                                                                                      |||||
| 响应头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID                   | KMS主密钥所属的项目ID，仅自定义密钥会返回。                                                                                                                                                                                                                                                                                                                  |||||
| 响应头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                             | AES256：表示使用SSE-C加密方式且使用AES256算法                                                                                                                                                                                                                                                                                                           |||||
| 响应头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值的base64值                   | 密钥MD5值的base64值                                                                                                                                                                                                                                                                                                                            |||||
   
表3服务端加密相关接口和参数说明 
| 参数类型 | 头域                                                          | 头域说明                                          | 头域取值                                                                                                                                  ||
| 参数类型 | 头域                                                          | 头域说明                                          | [下载对象](https://support.huaweicloud.com/api-obs/obs_04_0083.html) | [获取对象元数据](https://support.huaweicloud.com/api-obs/obs_04_0084.html) |
|:---|:---|:---|:---|:---|
| 请求头  | x-obs-server-side-encryption                                | 指定加密方式                                        | -                                                                | -                                                                   |
| 请求头  | x-obs-server-side-data-encryption                           | 指定服务端加密配置的加密算法                                | -                                                                | -                                                                   |
| 请求头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID              | -                                                                | -                                                                   |
| 请求头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID                   | -                                                                | -                                                                   |
| 请求头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                             | AES256：表示使用SSE-C加密方式且使用AES256算法                     ||
| 请求头  | x-obs-server-side-encryption-customer-key                   | 使用**SSE-C**时密钥明文的base64编码。                    | 加密使用的密钥明文的base64编码                                  ||
| 请求头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值。                          | 密钥的MD5值的base64值                                     ||
| 请求头  | x-obs-copy-source-server-side-encryption-customer-algorithm | 复制对象时，如果使用**SSE-C**方式，目标对象副本的加密算法             | -                                                                | -                                                                   |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key       | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的base64编码。     | -                                                                | -                                                                   |
| 请求头  | x-obs-copy-source-server-side-encryption-customer-key-MD5   | 复制对象时，如果使用**SSE-C**方式，目标对象副本的密钥的MD5值的base64值。 | -                                                                | -                                                                   |
| 响应头  | x-obs-server-side-encryption                                | 指定加密方式                                        | kms：使用SSE-KMS加密方式 AES256：使用SSE-OBS加密方式，且使用AES256算法       ||
| 响应头  | x-obs-server-side-data-encryption                           | 指定服务端加密配置的加密算法                                | 不携带：使用AES256算法 SM4：使用SM4算法                                 ||
| 响应头  | x-obs-server-side-encryption-kms-key-id                     | 使用**SSE-KMS**时指定加密方式下使用的KMS主密钥ID              | 密钥ID                                                                                                                                  ||
| 响应头  | x-obs-sse-kms-key-project-id                                | 使用**SSE-KMS**时KMS主密钥所属的项目ID                   | -                                                                | -                                                                   |
| 响应头  | x-obs-server-side-encryption-customer-algorithm             | 使用**SSE-C**时使用的算法                             | AES256：表示使用SSE-C加密方式且使用AES256算法                                                                                                       ||
| 响应头  | x-obs-server-side-encryption-customer-key-MD5               | 使用**SSE-C**时密钥的MD5值的base64值                   | 密钥MD5值的base64值                                                                                                                        ||
   
#### 服务端加密相关接口的传输协议要求
表4与SSE-C相关的接口对传输协议的使用要求 
| 接口       | 传输协议          |
|:---|:---|
| PUT上传对象  | HTTPS         |
| POST上传对象 | HTTPS         |
| 初始化上传段任务 | HTTPS         |
| 获取对象元数据  | HTTPS         |
| 获取对象内容   | HTTPS         |
| 上传段      | HTTPS         |
| 合并段      | HTTP or HTTPS |
   
表5与SSE-KMS相关的接口对传输协议的使用要求 
| 接口       | 传输协议          |
|:---|:---|
| PUT上传对象  | HTTPS         |
| POST上传对象 | HTTPS         |
| 初始化上传段任务 | HTTPS         |
| 获取对象元数据  | HTTP or HTTPS |
| 获取对象内容   | HTTPS         |
| 上传段      | HTTPS         |
| 合并段      | HTTP or HTTPS |
   
表6复制对象接口对传输协议的使用要求 
| 源对象         | 目标对象        | 传输协议          |
|:---|:---|:---|
| 非加密对象       | SSE-KMS加密对象 | HTTPS         |
| SSE-KMS加密对象 | SSE-KMS加密对象 | HTTPS         |
| SSE-OBS加密对象 | SSE-KMS加密对象 | HTTPS         |
| SSE-C加密对象   | SSE-KMS加密对象 | HTTPS         |
| 非加密对象       | SSE-C加密对象   | HTTPS         |
| SSE-KMS加密对象 | SSE-C加密对象   | HTTPS         |
| SSE-OBS加密对象 | SSE-C加密对象   | HTTPS         |
| SSE-C加密对象   | SSE-C加密对象   | HTTPS         |
| 非加密对象       | 非加密对象       | HTTP or HTTPS |
| SSE-KMS加密对象 | 非加密对象       | HTTP or HTTPS |
| SSE-OBS加密对象 | 非加密对象       | HTTP or HTTPS |
| SSE-C加密对象   | 非加密对象       | HTTP or HTTPS |
| 非加密对象       | SSE-OBS加密对象 | HTTPS         |
| SSE-KMS加密对象 | SSE-OBS加密对象 | HTTPS         |
| SSE-OBS加密对象 | SSE-OBS加密对象 | HTTPS         |
| SSE-C加密对象   | SSE-OBS加密对象 | HTTPS         |
   
表7拷贝段接口对传输协议的使用要求 
| 源对象         | 目标段        | 传输协议          |
|:---|:---|:---|
| 非加密对象       | SSE-KMS加密段 | HTTP or HTTPS |
| SSE-KMS加密对象 | SSE-KMS加密段 | HTTP or HTTPS |
| SSE-OBS加密对象 | SSE-KMS加密段 | HTTP or HTTPS |
| SSE-C加密对象   | SSE-KMS加密段 | HTTP or HTTPS |
| 非加密对象       | SSE-C加密段   | HTTPS         |
| SSE-KMS加密对象 | SSE-C加密段   | HTTPS         |
| SSE-OBS加密对象 | SSE-C加密段   | HTTPS         |
| SSE-C加密对象   | SSE-C加密段   | HTTPS         |
| 非加密对象       | 非加密段       | HTTP or HTTPS |
| SSE-KMS加密对象 | 非加密段       | HTTP or HTTPS |
| SSE-OBS加密对象 | 非加密段       | HTTP or HTTPS |
| SSE-C加密对象   | 非加密段       | HTTP or HTTPS |
| 非加密对象       | SSE-OBS加密段 | HTTP or HTTPS |
| SSE-KMS加密对象 | SSE-OBS加密段 | HTTP or HTTPS |
| SSE-OBS加密对象 | SSE-OBS加密段 | HTTP or HTTPS |
| SSE-C加密对象   | SSE-OBS加密段 | HTTP or HTTPS |
   
