更新时间:2022-11-30 GMT+08:00
分享

导入密钥材料

当用户希望使用自己的密钥材料,而不是KMS生成的密钥材料时,可通过密钥管理界面将自己的密钥材料导入到KMS,由KMS统一管理。

该任务指导用户通过密钥管理界面导入密钥材料。

前提条件

已准备好待导入的密钥材料。

操作步骤

  1. 登录管理控制台
  2. 单击管理控制台左上角,选择区域或项目。
  3. 单击页面左侧,选择安全与合规 > 数据加密服务,默认进入“密钥管理”界面。
  4. 单击“导入密钥”,弹出“导入密钥”对话框。
  5. 在弹出的对话框中填写密钥参数。

    图1 创建空密钥
    • 别名:待创建密钥的别名。
      • 输入字符支持数字、字母、“_”、“-”、“:”和“/”。
      • 支持长度为1 ~ 255个字符。
    • 密钥算法:选择密钥算法。KMS支持的密钥算法说明如表1所示。
      表1 KMS支持的密钥算法类型

      密钥类型

      算法类型

      密钥规格

      说明

      用途

      对称密钥

      AES

      AES_256

      AES对称密钥

      小量数据的加解密或用于加解密数据密钥。

      对称密钥

      SM4

      SM4

      国密SM4对称密钥

      小量数据的加解密或用于加解密数据密钥。

      非对称密钥

      RSA

      • RSA_2048
      • RSA_3072
      • RSA_4096

      RSA非对称密钥

      小量数据的加解密或数字签名。

      ECC

      • EC_P256
      • EC_P384

      椭圆曲线密码,使用NIST推荐的椭圆曲线

      数字签名

      非对称密钥

      SM2

      SM2

      国密SM2非对称密钥

      小量数据的加解密或数字签名。

    • 密钥用途:可选择“SIGN_VERIFY”“ENCRYPT_DECRYPT”
      • 对于对称密钥,默认值“ENCRYPT_DECRYPT”
      • 对于RSA非对称密钥,可选择“ENCRYPT_DECRYPT”“SIGN_VERIFY”,省略参数为默认值“SIGN_VERIFY”
      • 对于ECC非对称密钥,默认值“SIGN_VERIFY”
      • 对于SM2非对称密钥,可选择“ENCRYPT_DECRYPT”“SIGN_VERIFY”,省略参数为默认值“SIGN_VERIFY”

      创建密钥时请选择“密钥用途”,密钥创建后不可修改。

    • (可选)描述:可根据自己的需要为用户主密钥添加描述。
    • 企业项目:该参数针对企业用户使用。

      如果您是企业用户,且已创建企业项目,则请从下拉列表中为密钥选择需要绑定的企业项目,默认项目为“default”

      未开通企业管理的用户页面则没有“企业项目”参数项,无需进行配置。

      https://support.huaweicloud.com/usermanual-em/em_eps_01_0000.html

  6. (可选)用户可根据自己的需要为用户主密钥添加标签,输入“标签键”“标签值”

    • 当用户在创建密钥时,没有为该用户主密钥添加标签。若用户需要为该用户主密钥添加标签,可单击该用户主密钥的别名,进入密钥详情页面,单击“标签”,为该用户主密钥添加标签。
    • 同一个用户主密钥下,一个标签键只能对应一个标签值;不同的用户主密钥下可以使用相同的标签键。
    • 用户最多可以给单个用户主密钥添加20个标签。
    • 当同时添加多个标签,需要删除其中一个待添加的标签时,可单击该标签所在行的“删除”,删除标签。

  7. 单击“安全性与持久性”阅读并了解导入密钥的安全性和持久性。
  8. 勾选“我已经了解导入密钥的安全性和持久性”,创建密钥材料为空的用户主密钥。
  9. 单击“下一步”,进入“获取包装密钥和导入令牌”页面。根据表2选择密钥包装算法。

    图2 获取包装密钥和导入令牌
    表2 密钥包装算法说明

    密钥包装算法

    说明

    设置

    RSAES_OAEP_SHA_256

    具有“SHA-256”哈希函数的OAEP的RSA加密算法。

    请用户根据自己的HSM功能选择加密算法。

    如果您的HSM支持“RSAES_OAEP_SHA_256”加密算法,推荐使用“RSAES_OAEP_SHA_256”加密密钥材料。

    SM2_ENCRYPT

    国密推荐的SM2椭圆曲线公钥密码算法。

    请在支持国密的局点使用SM2加密算法。

    当用户执行“导入密钥”操作,但未成功导入密钥材料便退出操作过程时,可在待导入密钥材料的用户主密钥所在行单击“导入密钥材料”,页面会弹出“导入密钥材料”对话框,用户可继续执行导入密钥材料的操作。

  10. 单击“下载”,下载的文件包含包装密钥、导入令牌和说明文件,如图3所示。

    图3 下载文件
    • wrappingKey_密钥ID_下载时间:即包装密钥,用于加密密钥材料的包装密钥。
    • importToken_密钥ID_下载时间:即导入令牌,KMS导入密钥材料时需要使用。
    • README_密钥ID_下载时间:即说明文件,记录包装密钥序列号、密钥包装算法、包装密钥文件名称、令牌文件名称以及包装密钥和令牌的过期时间。
    • “wrappingKey_密钥ID_下载时间”的编码为二进制格式。
    • 包装密钥和导入令牌将在24小时后失效,失效后将不能使用。如果包装密钥和导入令牌失效,请重新下载包装密钥和导入令牌。
    同时,用户也可以通过调用API接口的方式获取包装密钥和导入令牌。
    1. 调用“get-parameters-for-import”接口,获取包装密钥和导入令牌。

      如下以获取密钥ID为“43f1ffd7-18fb-4568-9575-602e009b7ee8”,加密算法为“RSAES_OAEP_SHA_256”的包装密钥和导入令牌为例。

      “public_key”:调用API接口返回的base64编码的包装密钥内容。

      “import_token”:调用API接口返回的base64编码的导入令牌内容。

      • 请求样例
        {      
            "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”

  11. 使用下载的“包装密钥”对待导入的密钥材料进行加密。

    • 方法一:使用下载的包装密钥在自己的HSM中加密密钥材料,详细信息请参考您的HSM操作指南。
    • 方法二:采用OpenSSL加密密钥材料。

      若用户需要使用openssl pkeyutl命令,OpenSSL需要是1.0.2及以上版本。

      若用户使用SM2公钥包装,需要支持gmssl命令。

      以使用下载的包装密钥,加密生成的密钥材料(256位对称密钥)为例说明,操作步骤如下所示:
      1. 在已安装OpenSSL工具的客户端上,执行以下命令(以配套算法为“AES256算法”为例),生成密钥材料(256位对称密钥),并将生成的密钥材料以“PlaintextKeyMaterial.bin”命名保存。

        openssl rand -out PlaintextKeyMaterial.bin 32

        对于需要导入RSA,ECC非对称密钥,执行如下命令生成对称密钥:

        1. 生成16进制AES256密钥:

          openssl rand -out 0xPlaintextKeyMaterial.bin -hex 32

        2. 将16进制AES256密钥转换成二进制格式

          cat 0xPlaintextKeyMaterial.bin | xxd -r -ps > PlaintextKeyMaterial.bin

          若导入密钥时选择的配套算法为““商密SM4算法””,请执行以下命令:

          openssl rand -out PlaintextKeyMaterial.bin 16

          对于需要导入SM2非对称密钥,执行如下命令生成对称密钥:

          1. 生成16进制SM4密钥:

            openssl rand -out 0xPlaintextKeyMaterial.bin -hex 16

          2. 将16进制SM4密钥转换成二进制格式

            cat 0xPlaintextKeyMaterial.bin | xxd -r -ps > PlaintextKeyMaterial.bin

      2. 使用下载的包装密钥加密密钥材料,并将加密后的密钥材料按“EncryptedKeyMaterial.bin”命名保存。

        以下命令中的PublicKey.bin参数请以10下载的包装密钥名称wrappingKey_密钥ID_下载时间进行替换。

        表3 使用下载的包装密钥加密生成的密钥材料

        包装密钥算法

        加密生成的密钥材料

        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

      3. 对于需要导入非对称密钥的,需要生成非对称私钥,并使用临时密钥材料对私钥进行加密。
        • 执行以下命令(以配套算法为“RSA4096算法”为例):
          1. 生成私钥

            openssl genrsa -out rsa_private_key.pem 4096

          2. 转换成der格式

            openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_private_key.pem -out rsa_private_key.der -nocrypt

          3. 使用临时密钥材料对私钥进行加密

            openssl enc -id-aes256-wrap-pad -K $(cat 0xPlaintextKeyMaterial.bin) -iv A65959A6 -in rsa_private_key.der -out out_rsa_private_key.der

            默认情况下,OpenSSL命令行工具中未启用包装密码算法-id-aes256-wrap-pad。您可以下载并安装最新版本的OpenSSL,然后对其进行修补,以完成导入非对称密钥所需的信封包装。修补方式可以参考常见问题。

        • 特别的,对于使用SM4临时密钥材料加密SM2私钥(以sm2p256v1为例)的。参考如下步骤:
          1. 生成私钥

            gmssl ecparam -genkey -name sm2p256v1 -text -out sm2_private_key.pem

          2. 转换成der格式

            gmssl pkcs8 -topk8 -inform PEM -outform DER -in sm2_private_key.pem -out sm2_private_key.der -nocrypt

          3. 使用临时密钥材料对私钥进行加密

            gmssl enc -sms4-wrap-pad -K $(cat 0xPlaintextKeyMaterial.bin) -iv A65959A6 -in sm2_private_key.der -out out_sm2_private_key.der

            默认情况下,GmSSL命令行工具中未启用包装密码算法-sms4-wrap-pad。您可以下载并安装最新版本的GmSSL,然后对其进行修补,以完成导入非对称密钥所需的信封包装。修补方式可以参考常见问题。

  12. 单击“下一步”,进入“导入密钥材料”页面。

    表4 导入密钥材料参数说明(对称密钥场景)

    参数

    说明

    密钥ID

    创建密钥时,随机生成的密钥ID。

    密钥材料

    选择导入密钥材料。

    表5 导入密钥材料参数说明(非对称密钥场景)

    参数

    说明

    密钥ID

    创建密钥时,随机生成的密钥ID。

    临时密钥材料

    选择导入临时密钥材料。

    私钥密文

    选择导入私钥密文。

    图4 导入密钥材料

  13. 单击“下一步”,进入“导入密钥令牌”页面。根据表6设置参数。

    图5 导入密钥令牌
    表6 导入密钥令牌参数说明

    参数

    操作说明

    密钥ID

    创建密钥时,随机生成的密钥ID。

    密钥导入令牌

    选择10“下载”的导入令牌。

    密钥材料失效模式

    • 永不失效:导入的密钥材料永久不失效。
    • 失效时间:用户可指定导入的密钥材料的失效时间,默认失效时间为24小时。

      密钥材料失效后,KMS会在24小时内自动删除密钥材料,删除后密钥将无法使用,且密钥状态变更为“等待导入”

  14. 单击“确定”,页面右上角弹出“密钥导入成功”,则说明导入密钥成功。

    密钥ID、导入的密钥材料和导入的令牌需要全部匹配,密钥材料才能导入成功,否则会导入失败。

    用户可在密钥列表中查看到导入的密钥信息,导入密钥的默认状态为“启用”

分享:

    相关文档

    相关产品