S G*_*osh 5 c# cryptography pkcs#11 hsm pkcs11interop
我使用 PKCS11Interop 生成密钥 API 在 HSM 中生成了一个 RSA 公私密钥对。我想导出密钥对。我使用 Findobject API 来获取密钥,该 API 返回一个 ObjectHandle ,而使用 GetAttributeValue API 读取属性时,我无法读取密钥的值。当我将密钥的属性设置为 CKA_EXTRACTABLE 为 true 时,我无法完全生成密钥。
我还需要在 HSM 中导入外部提供的密钥对。
任何帮助都受到高度赞赏。
您尝试做的事情会insecure在 HSM 世界中得到考虑。它违背了 HSM 的初衷。
但是,能做到吗?是的。前提是 HSM 供应商应该支持它。
HSM 供应商决定 HSM 上生成的密钥是否可以提取,或者由任何软件(HSM 外部)生成的任何密钥是否可以导入到硬件中。PKCS#11 只是您与 HSM 交互的接口。如果 HSM 不支持某项操作,则会引发异常,该异常最终由 PKCS11 api 引发。
这就是您的提取和导入操作中发生的情况。您尝试在其上执行这些操作的 HSM 可能不支持它。因此,您需要咨询 HSM 供应商如何在他们的产品上执行这些操作。
PS:Thales nShield 应该/可能有一个配置文件,通过它您可以在不安全模式下运行 HSM。
注意:提取Key/Key PairHSM 上生成的密钥(或导入在 HSM 外部生成的任何密钥/密钥对)在现实世界中不被视为不安全操作。