为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 iaik.pkcs.pkcs11.objects.GenericSecretKey

如何将 iaik.pkcs.pkcs11.objects.GenericSecretKey

回首忆惘然 2022-11-30 16:12:02
我想将 iaik.pkcs.pkcs11.objects.GenericSecretKey(AES) 转换为 java.security 密钥。
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

这可能是不可能的,但让我们尽管如此探索一些可能性。

请注意,是否完全支持这些可能性取决于令牌类型和软件/提供商,但您当然可以尝试。


直接使用引用可能是不可能的,因为您必须能够使用 HSM 操作。因此,即使您可以将密钥嵌入到SecretKey对象中,您仍然无法使用它。您需要一个提供者特定的 API 来完成它。嘿,也许它存在。


PKCS#11 对象(包括密钥)通常存储在 HSM 或其他安全令牌上。秘密密钥通常不容易提取。

您有时也可以通过将属性设置CKA_EXTRACTABLE为 true(并CKA_SENSITIVE在生成期间设置为 false)来使密钥可提取。这当然也会对密钥的安全性产生负面影响。如果您可以使它起作用(取决于 PKCS# 11 令牌实现)那么你应该能够将键值复制到内存中。

您也可以使用您已知的包装密钥来包装密钥,然后 HSM 以这种方式提取密钥

SecretKeySpec一旦您能够获取它以将其转换为SecretKey.


通常,在本地生成密钥更容易(在需要且可用的情况下,使用 HSM 的令牌随机数生成器)。然后你可以导入它们并设置CKA_SENSITIVEtrue之后。当然,如果您这样做,CKA_ALWAYS_SENSITIVE将保持设置为falseCKA_NEVER_EXTRACTABLE并将保持设置为)。true


到目前为止,最简单和最安全的方法是使用提供的提供者生成密钥,在可用的情况下KeyGenerator放弃GenericSecretKey问题中的方法。但是,这回避了这个问题。


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号