使用来自 Thales nShield HSM 的 PKCS11interop c# 包装库导出/导入 RSA 密钥对?

S G*_*osh 5 c# cryptography pkcs#11 hsm pkcs11interop

我使用 PKCS11Interop 生成密钥 API 在 HSM 中生成了一个 RSA 公私密钥对。我想导出密钥对。我使用 Findobject API 来获取密钥,该 API 返回一个 ObjectHandle ,而使用 GetAttributeValue API 读取属性时,我无法读取密钥的值。当我将密钥的属性设置为 CKA_EXTRACTABLE 为 true 时,我无法完全生成密钥。

我还需要在 HSM 中导入外部提供的密钥对。

任何帮助都受到高度赞赏。

alw*_*arn 2

您尝试做的事情会insecure在 HSM 世界中得到考虑。它违背了 HSM 的初衷。

但是,能做到吗?是的。前提是 HSM 供应商应该支持它。

HSM 供应商决定 HSM 上生成的密钥是否可以提取,或者由任何软件(HSM 外部)生成的任何密钥是否可以导入到硬件中。PKCS#11 只是您与 HSM 交互的接口。如果 HSM 不支持某项操作,则会引发异常,该异常最终由 PKCS11 api 引发。

这就是您的提取和导入操作中发生的情况。您尝试在其上执行这些操作的 HSM 可能不支持它。因此,您需要咨询 HSM 供应商如何在他们的产品上执行这些操作。

PS:Thales nShield 应该/可能有一个配置文件,通过它您可以在不安全模式下运行 HSM。

注意:提取Key/Key PairHSM 上生成的密钥(或导入在 HSM 外部生成的任何密钥/密钥对)在现实世界中不被视为不安全操作。