用户主密钥包含密钥元数据(密钥ID、密钥别名、描述、密钥状态与创建日期)和用于加解密数据的密钥材料。
- 当用户使用KMS管理控制台创建用户主密钥时,KMS系统会自动为该用户主密钥生成密钥材料。
- 当用户希望使用自己的密钥材料时,可通过KMS管理控制台的导入密钥功能创建密钥材料为空的用户主密钥,并将自己的密钥材料导入该用户主密钥中。
注意事项
当您选择密钥材料来源为外部,使用您自己导入的密钥材料时,需要注意以下几点:
- 请确保您使用了符合安全要求的随机源生成密钥材料。
- 在使用导入密钥时,需要对自己密钥材料的可靠性负责。
- 请保存密钥材料的原始备份,以便在意外删除密钥材料时,能及时将备份的密钥材料重新导入KMS。
导入密钥材料的功能特性
- 可用性与持久性
在将密钥材料导入KMS之前,用户需要确保密钥材料的可用性和持久性。
导入的密钥材料与通过KMS创建密钥时自动生成的密钥材料的区别,如下表所示。
密钥材料来源 | 说明 |
---|---|
外部导入 | 支持手动删除密钥材料,但该主密钥及其元数据仍然保留。 导入密钥材料时,可以设置密钥材料过期时间,密钥材料过期后,KMS将自动删除密钥材料,但该主密钥及其元数据仍然保留。 导入的密钥材料被删除后,可以再次导入相同的密钥材料使得CMK再次可用。用户需自行备份密钥材料,以便密钥材料失效或误删除时重新导入该密钥材料。 |
KMS创建 | 不能手动删除密钥材料,不能设置密钥材料过期时间。 密钥材料只能通过设置CMK计划删除时间后,到期后随CMK一并删除。 |
- 关联性
当您将密钥材料导入CMK时,该CMK与该密钥材料永久关联,不能将其他密钥材料导入该CMK中,即便密钥材料已经过期或者被删除。
- 独立性
CMK具有唯一性,即您使用CMK加密的数据,无法使用其他CMK进行解密,即便这些CMK都使用相同的密钥材料。
限制条件
- AES_256类型的CMK需导入256位对称密钥作为密钥材料。
- 从KMS获取到的导入令牌与加密密钥材料的公钥具有绑定关系,一个令牌只能为其生成时指定的主密钥导入密钥材料。导入令牌的有效期为24小时,在有效期内可以重复使用,失效以后需要获取新的导入令牌和加密公钥。
操作步骤-导入密钥材料
- 创建用户主密钥,其中密钥材料来源选择“外部”并勾选“ 我了解使用外部密钥材料的方法和意义 “。
- 获取导入密钥材料参数。
1)在密钥列表,单击“密钥ID”,进入“密钥详情”,在密钥材料区域,单击获取导入密钥材料参数。
2)在获取导入密钥材料参数对话框,选择“公钥类型”、“加密算法”,单击“确定”。
配置项说明
配置项 | 说明 |
---|---|
公钥类型 | 取值:RSA_2048(默认) |
加密算法 | 取值: RSAES_PKCS1_V1_5 RSAES_OAEP_SHA_1 RSAES_OAEP_SHA_256 |
3)在获取导入密钥材料参数对话框,下载“加密公钥”和“导入令牌”,然后单击“确定”。
注意导入令牌存在过期时间,请关注过期时间,及时进行导入。
- 使用OPENSSL加密密钥材料。
加密公钥是一个2048比特的RSA公钥,使用的加密算法需要与获取导入密钥材料参数时指定的一致。由于加密公钥经过Base64编码,因此在使用时需要先进行Base64解码。您可以通过OPENSSL加密公钥,您可通过以下步骤获取加密的密钥材料。
1)创建一个密钥材料,使用OPENSSL产生一个32字节的随机数。
2)将加密公钥进行Base64解码。
3)根据指定的加密算法(以RSAES_OAEP_SHA_1为例)加密密钥材料。
4)将加密后的密钥材料进行Base64编码,保存为文本文件。
代码示例
openssl rand -out KeyMaterial.bin 32
openssl enc -d -base64 -A -in PublicKey_base64.txt -out PublicKey.bin
openssl rsautl -encrypt -in KeyMaterial.bin -oaep -inkey PublicKey.bin -keyform DER -pubin -out EncryptedKeyMaterial.bin
openssl enc -e -base64 -A -in EncryptedKeyMaterial.bin -out EncryptedKeyMaterial_base64.txt
采用OpenSSL加密密钥材料,支持RSAES_OAEP_SH A_256,RSAES_PKCS1_V1 _5 和RSAES_OAEP_SH A_1 三种密钥算法。命令代码示例如下表所示:
密钥算法 | OpenSSL加密生成密钥材料命令代码示例 |
---|---|
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 |
RSAES_PKCS1_V1_5 | openssl rsautl –encrypt -in PlaintextKeyMaterial.bin –pkcs -inkey PublicKey.bin -keyform der –pubin -out EncryptedKeyMaterial.bin |
RSAES_OAEP_SHA_1 | openssl rsautl -encrypt -in KeyMaterial.bin -oaep -inkey PublicKey.bin -keyform DER -pubin -out EncryptedKeyMaterial.bin |
- 导入密钥材料。
1)在密钥列表,在密钥列表,单击“密钥ID” ,进入“密钥详情”,在“密钥管理材料区域”,单击导入密钥材料。
2)在导入密钥材料对话框,上传加密密钥材料和 导入令牌, 单击 确定 。
3)设置密钥材料过期时间,单击“确定”。导入密钥材料成功后,密钥状态从待导入更新为“启用中”。
操作步骤-删除密钥材料
- 登录密钥管理服务控制台。
- 在页面左上角的地域下拉列表,选择密钥所在的地域。
- 在密钥列表,点击 密钥ID ,进入 密钥详情 ,在密钥材料区域,单击 删除密钥材料 。
- 在删除密钥材料对话框,单击“确定”。密钥材料删除成功后,密钥状态从启用中更新为“待导入”。