如何从Thales ProtectToolKit 7导出密钥并导入至AWS CloudHSM?
从Thales ProtectToolKit 7迁移密钥至AWS CloudHSM的解决方案
核心限制说明
AWS CloudHSM仅支持单组件的AES/RSA包装密钥,不兼容Thales默认的多组件(split)包装密钥,因此需要调整导出流程,使用兼容的单组件包装密钥完成迁移。
步骤1:在Thales HSM中创建单组件AES包装密钥
使用PTK7的ctkmu工具生成符合AWS要求的单组件AES-256包装密钥:
ctkmu create -k aes -s 256 -l "AWS_Wrapping_Key" -m wrap -u -w
参数说明:
-k aes:指定密钥类型为AES-s 256:密钥长度设为256位(AWS CloudHSM支持AES-128/256)-l "AWS_Wrapping_Key":自定义密钥标签,便于后续识别-m wrap:标记密钥用途为包装/解包-u:允许该密钥导出为明文(需在安全环境下操作)-w:授权该密钥包装其他密钥
步骤2:用单组件包装密钥导出目标密钥
执行ctkmu export命令,将待迁移密钥用新创建的AES包装密钥加密后导出到本地文件:
ctkmu export -t <目标密钥标签> -w <AWS_Wrapping_Key标签> -f exported_key.wrapped
替换<目标密钥标签>为实际待迁移密钥的标签,<AWS_Wrapping_Key标签>为步骤1中创建的密钥标签。
步骤3:导出单组件包装密钥的明文版本
由于AWS CloudHSM需要用该密钥解包导入的目标密钥,需将其导出为明文(注意:此操作必须在物理隔离、权限严格管控的安全环境中执行):
ctkmu export -t <AWS_Wrapping_Key标签> -o aws_wrapping_key_plain.bin
步骤4:将包装密钥导入AWS CloudHSM
通过AWS CloudHSM的cloudhsm_mgmt_util工具完成导入:
- 连接到CloudHSM集群:
cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg - 使用具备密钥导入权限的管理员账号登录:
loginHSM <管理员用户名> <管理员密码> - 导入明文AES包装密钥:
参数说明:importKey -f aws_wrapping_key_plain.bin -t 3 -l "AWS_Wrapping_Key_CloudHSM" -m 2-t 3:指定密钥类型为AES-m 2:设置密钥用途为包装/解包
步骤5:导入已包装的目标密钥到AWS CloudHSM
先通过findKey命令获取CloudHSM中包装密钥的句柄:
findKey -l "AWS_Wrapping_Key_CloudHSM"
再执行importWrappedKey命令导入目标密钥:
importWrappedKey -f exported_key.wrapped -w <包装密钥句柄> -t <目标密钥类型> -l <CloudHSM中目标密钥标签> -m <目标密钥用途>
参数替换说明:
<目标密钥类型>:RSA密钥填0,AES密钥填3<目标密钥用途>:加密解密填1,签名验签填2
替代方案(合规限制场景)
若因合规要求禁止导出包装密钥明文,可改用RSA非对称包装方案:
- 在AWS CloudHSM中创建RSA密钥对,导出公钥到本地
- 在Thales HSM中导入该RSA公钥
- 用RSA公钥包装目标密钥后导出,再到AWS CloudHSM中用对应私钥解包导入
内容的提问来源于stack exchange,提问作者Duong LV
相关产品推荐
相关产品推荐

