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

我想将 iaik.pkcs.pkcs11.objects.GenericSecretKey(AES) 转换为 java.security 密钥。



回首忆惘然
浏览 115回答 1
1回答

慕慕森

这可能是不可能的,但让我们尽管如此探索一些可能性。请注意,是否完全支持这些可能性取决于令牌类型和软件/提供商,但您当然可以尝试。直接使用引用可能是不可能的,因为您必须能够使用 HSM 操作。因此,即使您可以将密钥嵌入到SecretKey对象中,您仍然无法使用它。您需要一个提供者特定的 API 来完成它。嘿,也许它存在。PKCS#11 对象(包括密钥)通常存储在 HSM 或其他安全令牌上。秘密密钥通常不容易提取。您有时也可以通过将属性设置CKA_EXTRACTABLE为 true(并CKA_SENSITIVE在生成期间设置为 false)来使密钥可提取。这当然也会对密钥的安全性产生负面影响。如果您可以使它起作用(取决于 PKCS# 11 令牌实现)那么你应该能够将键值复制到内存中。您也可以使用您已知的包装密钥来包装密钥,然后 HSM 以这种方式提取密钥。SecretKeySpec一旦您能够获取它以将其转换为SecretKey.通常,在本地生成密钥更容易(在需要且可用的情况下,使用 HSM 的令牌随机数生成器)。然后你可以导入它们并设置CKA_SENSITIVE为true之后。当然,如果您这样做,CKA_ALWAYS_SENSITIVE将保持设置为false(CKA_NEVER_EXTRACTABLE并将保持设置为)。true到目前为止,最简单和最安全的方法是使用提供的提供者生成密钥,在可用的情况下KeyGenerator放弃GenericSecretKey问题中的方法。但是,这回避了这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java