对 AWS CloudHSM 使用 JCE 提取密钥
Java 加密扩展 (JCE, Java Cryptography Extension) 使用的架构允许插入不同的加密实现方式。AWS CloudHSM 附带了一个这样的 JCE 提供程序,它可以将加密操作分流到 HSM。为了让大多数其他 JCE 提供程序使用存储在 AWS CloudHSM 中的密钥,他们必须将您在 HSM 中的密钥字节以明文形式提取到您的计算机内存中以供他们使用。HSM 通常只允许将密钥提取为包装对象,而不允许以明文形式提取。但是,为了支持提供程序间集成用例,AWS CloudHSM 允许选择配置选项,以启用明文提取密钥字节。
重要
无论何时 AWS CloudHSM 提供程序被指定或 AWS CloudHSM 密钥对象被使用,JCE 都会将操作分流到 AWS CloudHSM。如果您希望在 HSM 内部进行操作,则无需以明文方式提取密钥。只有当您的应用程序由于第三方库或 JCE 提供程序的限制而无法使用安全机制(例如包装和解包密钥)时,才需要以明文提取密钥。
默认情况下,AWS CloudHSM JCE 提供程序允许提取公有密钥,以便与外部 JCE 提供程序配合使用。始终允许使用以下方法:
类 | 方法 | 格式 (getEncoded) |
---|---|---|
EcPublicKey | getEncoded() | X.509 |
getW() | 不适用 | |
RSAPublicKey | getEncoded() | X.509 |
getPublicExponent() | 不适用 | |
CloudHsmRsaPrivateCrtKey | getPublicExponent() | 不适用 |
默认情况下,AWS CloudHSM JCE 提供程序不允许以明文提取私有密钥或机密密钥的密钥字节。如果您的用例需要,则可以在以下条件下启用私有密钥或机密密钥的明文密钥字节提取功能:
私有密钥和机密密钥的
EXTRACTABLE
属性设置为 true。默认情况下,私有密钥和机密密钥的
EXTRACTABLE
属性设置为 true。EXTRACTABLE
密钥是允许从 HSM 中导出的密钥。有关更多信息,请参阅《客户端软件开发工具包 5 支持的 Java 属性》。
私有密钥和机密密钥的
WRAP_WITH_TRUSTED
属性设置为 false。getEncoded
、getPrivateExponent
和getS
不能与无法以明文导出的私有密钥一起使用。WRAP_WITH_TRUSTED
不允许您的私有密钥以明文从 HSM 中导出。有关更多信息,请参阅使用可信密钥控制密钥解包。