# 密钥管理
可信密钥空间是一个由受信任的硬件密码设备和授权接入点构成的逻辑安全边界，通过密钥策略确保密钥仅在该边界内生成、存储和使用。
在可信密钥空间创建的密钥，数据密钥明文仅在可信密钥空间内使用。
#### 前提条件
已[购买数据安全屋](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_5112.html)。
#### 约束限制
- 不同可信密钥空间默认相互隔离。
- 每个空间有唯一身份标识。
 
 #### 创建数据安全屋密钥
1. [登录DSC服务控制台](https://console.huaweicloud.com/dsc/)。
2. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
3. 单击"创建密钥"，进入"创建密钥"页面，配置密钥参数。 
   
   表1密钥参数说明 
   | 参数名称 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|
   | 密钥名称   | 自定义密钥名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 算法类型  | 仅支持"对称"密钥算法。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 密钥用途    | 密钥的用途，仅支持加解密。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 密钥算法  | 仅支持选择AES_256、SM4。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 企业项目 | 该参数针对企业用户使用。 如果您是企业用户，且已创建企业项目，则请从下拉列表中为密钥选择需要绑定的企业项目，默认项目为"default"。 未开通企业管理的用户页面则没有"企业项目"参数项，无需进行配置。 - 企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理。更多关于企业项目的信息，请参见[《什么是企业项目管理？》](https://support.huaweicloud.com/usermanual-em/em_eps_01_0000.html)。  - 如需开通企业项目，请参考[如何开通企业项目/企业多账号](https://support.huaweicloud.com/usermanual-em/em_am_0008.html)。   |
   | 所属密钥库 | 选择密钥归属的密钥库。选择密钥库后，将通过密钥库来存储密钥，并提供安全的密钥生成功能，确保生成的密钥是随机的、安全的，并且能够被安全地存储和备份。 如果需新建密钥库，请参见[创建密钥库](https://support.huaweicloud.com/usermanual-dew/dew_01_1001.html) 。                                                                                                                                                                                                                                                                                                                                                                                              |
   | 密钥材料来源  | - 密钥管理：由KMS生成的密钥材料。  - 外部：使用客户本地的密钥材料。创建后需要导入密钥材料。                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 高级配置  | 可配置密钥的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      
   
   
4. 单击"确定"，完成密钥创建。 
   用户可在密钥列表上查看已完成创建的密钥，密钥材料来源为"密钥管理"时默认状态为"启用"。
   密钥材料来源为"外部"时默认状态为"等待导入"，需要[导入密钥材料]。
   
   
 
 #### 导入密钥材料（可选）
[创建数据安全屋密钥]中创建的密钥的"密钥材料来源"为"外部"时，需要参考本章节把本地的密钥材料导入到控制台。
1. [登录DSC服务控制台](https://console.huaweicloud.com/dsc/)。
2. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
3. 在外部密钥所在行的"操作"列，单击"导入密钥材料"，完成"获取包装密钥和导入令牌"。
   
   - 选择"密钥包装算法"。
     表2密钥包装算法说明 
     | 密钥包装算法              | 说明                           | 设置                                                                                                                                              |
     |:---|:---|:---|
     | RSAES_OAEP_SHA_256 | 具有"SHA-256"哈希函数的OAEP的RSA加密算法。 | 请您根据自己的HSM功能选择加密算法。 如果您的HSM支持"RSAES_OAEP_SHA_256"加密算法，推荐使用"RSAES_OAEP_SHA_256"加密密钥材料。 |
     | SM2_ENCRYPT           | 国密推荐的SM2椭圆曲线公钥密码算法。           | 请在支持国密的局点使用SM2加密算法。                                                                                                                           |
        
     
   
   - 根据情境，选择"已有密钥材料"或"下载密钥材料"。
     - "已有密钥材料"：仅限使用API接口获取到包装密钥和导入令牌的场景。执行[步骤 4]。
     
     - "下载密钥材料"：引导程序已自动帮您传递导入令牌，您仅需使用下载的包装密钥，从您的密钥管理设备中导出密钥材料。中途退出引导程序，导入令牌将自动失效。执行[步骤 5]。
      
   
   
   
   
4. [步骤 3]中选择"已有密钥材料"时，执行该操作。
   
   1. [通过调用API接口下载密钥材料]。
   
   2. [使用包装密钥加密密钥材料]。
   
   3. [步骤 3]中选择"已有密钥材料"后单击"下一步"，在"导入密钥材料"配置项，填写"密钥材料"内容。
      "密钥材料"填写[4.b]中使用包装密钥加密后的密钥材料。例如：[使用包装密钥加密密钥材料]中的"EncryptedKeyMaterial.bin"文件。
      图1导入密钥材料   
      ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002624566928.png "点击放大")
      
      
   
   4. 单击"下一步"，在"密钥导入令牌"配置项，根据[表3]设置参数。
      图2导入密钥令牌
      ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002655006411.png "点击放大")
      
       表3导入密钥令牌参数说明 
      | 参数       | 操作说明                                                                                                                                                                                                                                                                                                                                                                                                          |
      |:---|:---|
      | 密钥ID     | 创建密钥时，随机生成的密钥ID。                                                                                                                                                                                                                                                                                                                                                                                              |
      | 密钥导入令牌   | 填写[4.a]获取的导入令牌。                                                                                                                                                                                                                                                                                                                                                                 |
      | 密钥材料失效模式 | - 永不失效：导入的密钥材料永久不失效。  - 失效时间：用户可指定导入的密钥材料的失效时间，默认失效时间为24小时。 密钥材料失效后，KMS会在24小时内自动删除密钥材料，删除后密钥将无法使用，且密钥状态变更为"等待导入"。    |
         
      
   
   
   
   
5. [步骤 3]中选择"下载密钥材料"时，执行该操作。
   
   1. 单击"下载密钥材料"后，密钥材料将下载到本地。下载的文件为包装密钥，如[图 下载文件]所示。
      图3下载文件   
      ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002655021189.png)
      - wrappingKey_*密钥ID*：即包装密钥，编码为二进制格式，用于加密密钥材料的包装密钥。
      
      - 导入令牌：引导程序自动传递导入令牌，无需下载，如果中途退出引导程序，导入令牌将自动失效。
      
      
      ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/notice_3.0-zh-cn.png)
      包装密钥将在24小时后失效，失效后将不能使用。如果包装密钥失效，请重新下载包装密钥。
      控制台将自动传递导入令牌。因此，下载密钥材料后，请勿关闭或中途退出"导入密钥材料"对话框，否则将导致导入的令牌自动失效。
      
   
   2. [使用包装密钥加密密钥材料]。
   
   3. 单击"下一步"，在"导入密钥材料"页面，单击"添加文件"，上传[5.b]中加密后密钥材料。
      图4导入密钥材料   
      ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002655105939.png "点击放大")
      
      
   
   4. 单击"下一步"，进入"密钥导入令牌"页面。根据[表4]设置参数。
      图5导入密钥令牌   
      ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002624907344.png "点击放大")
      
       表4导入密钥令牌参数说明 
      | 参数       | 操作说明                                                                                                                                                                                                                                                                                         |
      |:---|:---|
      | 密钥ID       | 创建密钥时，随机生成的密钥ID。                                                                                                                                                                                                                                                                              |
      | 密钥材料失效模式 | - 永不失效：导入的密钥材料永久不失效。  - 失效时间：用户可指定导入的密钥材料的失效时间，默认失效时间为24小时。 密钥材料失效后，KMS会在24小时内自动删除密钥材料，删除后密钥将无法使用，且密钥状态变更为"等待导入"。    |
         
      
   
   
   
   
6. 单击"确定"，页面右上角弹出"密钥导入成功"，则说明导入密钥成功。 
   ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/notice_3.0-zh-cn.png)
   密钥ID、导入的密钥材料和导入的令牌需要全部匹配，密钥材料才能导入成功，否则会导入失败。
   用户可在密钥列表中查看到导入的密钥信息，导入密钥的默认状态为"启用"。
   
   
 
#### 管理密钥
为您提供如下相关操作。
#### 将密钥迁入企业项目
企业项目为用户提供企业组织架构以及和业务管理模型匹配的云治理平台，帮助企业以公司、部门、项目等组织架构分级管理和项目业务结构来实现企业在云上的管理，提供企业项目管理、资源管理、人员管理、财务管理、应用管理能力。
如果您开通了企业项目管理，可以通过密钥管理界面对指定的自定义密钥迁移至其他企业项目。如需开通企业项目，请参考[如何开通企业项目/企业多账号](https://support.huaweicloud.com/usermanual-em/em_am_0008.html)。
1. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
2. 在目标密钥所在行，选择"更多 \> 分配至项目"，弹出对话框。 
   如果用户为非企业用户，操作列不显示"分配至项目"按钮。
   
   
3. 在弹出的对话框中，选择迁入项目。单击"确定"，完成操作。
 
 #### 启用自定义密钥
该任务指导用户通过密钥管理界面对单个或多个自定义密钥进行启用操作，使被禁用的密钥恢复到数据加解密能力。新建的自定义密钥默认为"启用"状态。
1. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
2. 在密钥列表中，在需要启用的密钥所在行的"操作"列，单击"启用"。
3. 在弹出窗口中，单击"确定"，完成启用单个密钥操作。 
   如果您想批量启用密钥，可以勾选所有需要启用的密钥，然后在列表左上角，单击"启用"。
   
   
 
#### 禁用自定义密钥
该任务指导用户通过密钥管理界面对指定的自定义密钥进行禁用，以紧急保护数据，自定义密钥被禁用后，用户将不能使用该密钥进行加解密任何数据。
- 默认密钥不支持禁用操作。
- 密钥被禁用后，仍然会计费。只有删除密钥，才会停止计费。
 
1. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
2. 在密钥列表中，在需要启用的密钥所在行的"操作"列，单击"禁用"。
3. 在弹出窗口中，勾选"我已知晓禁用以上密钥产生的影响"，单击"确定"，完成禁用单个密钥操作。 
   如果您想批量禁用密钥，可以勾选所有需要禁用的密钥，然后在列表左上角，单击"禁用"。
   
   
 
#### 计划删除密钥
不支持直接删除密钥，仅支持计划删除密钥，即通过设置预删除周期（推迟时间范围为7天～1096天），在到期后删除密钥。
处于"启用"、"禁用"或"等待导入"状态的自定义密钥才支持删除，默认密钥不支持删除。
除了确认密钥使用情况以外，也可以开启验证操作，确保删除密钥操作进行多次验证，降低密钥误删导致的磁盘等加密不可用情况。开启验证的操作请参见[敏感操作保护](https://support.huaweicloud.com/usermanual-dew/dew_01_0327.html)。
![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/notice_3.0-zh-cn.png)
系统会在推迟删除周期后删除密钥，使用该密钥加密的内容及产生的数据密钥也将无法解密。删除密钥前，请确认该密钥已不再使用，否则会导致您的业务不可用。
如果您想批量计划删除密钥，可以勾选所有需要计划删除的密钥，然后在列表左上角，单击"删除"。以下为您介绍如何单个删除密钥。
1. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
2. 在需要删除的密钥所在行的"操作"列，单击"删除"，进入"删除密钥"界面。
3. 在"删除密钥"界面，填写"推迟删除"的时间。 
   图6推迟删除时间
   ![](https://support.huaweicloud.com/highsecurity-dsc/zh-cn_image_0000002655050903.png "点击放大")
   
   
   
4. 如果未开启删除验证，在确认删除提示框中输入"DELETE"后，单击"确定"，完成删除操作。 
   如果开启删除验证，选择验证方式后，单击"获取验证码"，在验证码对话框中输入获取的验证码，单击"确定"，完成删除操作。
   如果需要关闭操作保护，可以在账号的"安全设置 \> 敏感操作"中关闭。
   
   
 
#### 取消计划删除密钥
该任务指导用户在未超出删除密钥的推迟时间，通过密钥管理界面对自定义密钥进行取消删除操作，取消删除后密钥处于"禁用"状态。
如果您想批量取消删除密钥，可以勾选所有需要取消删除的密钥，然后在列表左上角，单击"取消删除"。以下为您介绍如何取消单个密钥的计划删除。
1. 在左侧导航栏中，选择"加密与密钥管理"，进入"密钥管理"页面。
2. 在需要取消删除的密钥所在行的"操作"列，单击"取消删除"。
3. 在弹出的窗口中，单击"确定"，完成取消删除单个密钥操作。 
   取消删除后密钥状态为"禁用"，如需启用密钥，请参见[启用自定义密钥]操作。
   
   
 
#### 附录：
 #### 通过调用API接口下载密钥材料
1. 调用"get-parameters-for-import"接口，获取包装密钥和导入令牌。 
   - public_key：调用API接口返回的base64编码的包装密钥内容。
   
   - import_token：调用API接口返回的base64编码的导入令牌内容。
   
   
   以获取密钥ID为"43f1ffd7-18fb-4568-9575-602e009b7ee8"，加密算法为"RSAES_OAEP_SHA_256"的包装密钥和导入令牌为例。
   - 请求样例
     ```
     {      
         "key_id": "43f1ffd7-18fb-4568-9575-602e009b7ee8",
         "wrapping_algorithm":"RSAES_OAEP_SHA_256"
     }
     ```
     
   
   - 响应样例
     ```
     {
         "key_id": "43f1ffd7-18fb-4568-9575-602e009b7ee8",    
         "public_key":"public key base64 encoded data",
         "import_token":"import token base64 encoded data",
         "expiration_time":1501578672
     }
     ```
     
    
   
   
2. 保存包装密钥，包装密钥需要按照以下步骤转换格式。使用转换格式后的包装密钥加密的密钥材料才能成功导入管理控制台。 
   1. 复制包装密钥"public_key"的内容，粘贴到".txt"文件中，并保存为"PublicKey.b64"。
   
   2. 使用OpenSSL，执行以下命令，对"PublicKey.b64"文件内容进行base64转码，生成二进制数据，并将转码后的文件保存为"PublicKey.bin"。 **openssl** **enc** **-d** **-base64** **-A** **-in** **PublicKey.b64** **-out** **PublicKey.bin**
      
   
   
   
   
3. 保存导入令牌，复制导入令牌"import_token"的内容，粘贴到".txt"文件中，并保存为"ImportToken.b64"。
 
 #### 使用包装密钥加密密钥材料
可信密钥空间，仅支持对称密钥，密钥材料为"EncryptedKeyMaterial.bin"。
- **方法一**：使用下载的包装密钥在自己的HSM中加密密钥材料，详细信息请参考您的HSM操作指南。
- **方法二** ：使用OpenSSL生成密钥材料，并用下载的"包装密钥"对密钥材料进行加密。
  ![](https://support.huaweicloud.com/highsecurity-dsc/public_sys-resources/note_3.0-zh-cn.png)
  如果用户需要使用**openssl** **pkeyutl**命令，OpenSSL需要是1.0.2及以上版本。
  如果用户使用SM2公钥包装，需要支持gmssl命令。
  1. 在已安装OpenSSL工具的客户端上，执行以下命令，生成密钥材料（256位对称密钥），并将生成的密钥材料以"PlaintextKeyMaterial.bin"命名保存。
     - AES256对称密钥 **openssl** **rand** **-out** ***PlaintextKeyMaterial.bin*** **32**
       
     
     - SM4国密 **openssl rand -out *PlaintextKeyMaterial.bin*16**
       
      
  
  2. 使用下载的"包装密钥"加密密钥材料，并将加密后的密钥材料按"EncryptedKeyMaterial.bin"命名保存。 如果"包装密钥"由控制台下载，以下命令中的***PublicKey.bin*** 参数请以下载的包装密钥名称*wrappingKey_密钥ID*进行替换。
     表5使用下载的包装密钥加密生成的密钥材料 
     | 包装密钥算法            | 加密生成的密钥材料                                                                                                                                                                                                          |
     |:---|:---|
     | RSAES_OAEP_SHA_256 | **openssl pkeyutl -in *PlaintextKeyMaterial.bin* -inkey *PublicKey.bin* -out *EncryptedKeyMaterial.bin* -keyform der -pubin -encrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256**                |
     | SM2_ENCRYPT         | **gmssl pkeyutl** **-encrypt -pkeyopt ec_scheme:sm2** **-pkeyopt ec_encrypt_param:sm3** **-in *PlaintextKeyMaterial.bin*** **-pubin -inkey *PublicKey.bin*** **-keyform der** **-out *EncryptedKeyMaterial.bin*** |
        
     
   
 
#### 相关文档
- [接入点管理](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_5106.html)：接入点是云服务器、CCE集群或本地服务器等应用运行环境，只有符合密钥策略的接入点才能解封[密钥胶囊](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_5104.html#dsc_01_5104__section167213431815)。
- [密钥策略](https://support.huaweicloud.com/highsecurity-dsc/dsc_01_3107.html)：密钥策略定义哪些接入点或安全屋在什么条件下能够解密数据密钥密文，确保密钥不会被乱用。
 
