我已经使用 PKCS11Interop 生成 key API 在 HSM 中生成了一个 RSA 公私 key 对。 我想导出 key 对。我使用 Findobject API 获取 key ,该 API 返回一个 ObjectHandle ,而在使用 GetAttributeValue API 读取属性时,我无法读取 key 的值。 当我将 key 的 CKA_EXTRACTABLE 属性设置为 true 时,我无法完全生成 key 。
我还需要在 HSM 中导入外部提供的 key 对。
非常感谢任何帮助。
最佳答案
您尝试做的事情在 HSM 世界中被认为是不安全
。它违背了拥有 HSM 的目的。
但是,可以吗?是的。前提是 HSM 供应商应支持它。
HSM 供应商决定在 HSM 上生成的 key 是否可以提取,或者由任何软件(在 HSM 之外)生成的任何 key 是否可以导入到硬件中。 PKCS#11 只是一个接口(interface),您可以通过它与 HSM 进行交互。如果 HSM 不支持操作,它会抛出一个异常,该异常最终由 PKCS11 api 抛出。
这就是您的提取和导入操作的情况。您尝试在其上执行这些操作的 HSM 可能不支持它。因此,您需要咨询 HSM 供应商如何在他们的产品上执行这些操作。
P.S:Thales nShield 应该/可能有一个配置文件,您可以通过它在不安全模式下运行 HSM。
注意:提取在 HSM 上生成的 key / key 对
(或)导入在 HSM 外部生成的任何 key / key 对在现实世界中不被视为不安全操作。
关于c# - 使用来自 Thales nShield HSM 的 PKCS11interop c# 包装器库导出/导入 RSA key 对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483447/