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

标签 c# cryptography pkcs#11 hsm pkcs11interop

我已经使用 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/

相关文章:

java - 使用 Java PKCS#11 读取 DoD 通用访问卡

带有 opensc pkcs#11 提供程序的 java keytool 仅适用于启用调试选项

c# - Telerik Ajax UpdatePanel radgrid 等待页面加载

c# - 混淆引用第 3 方程序集的程序集

c# - 新打开的窗口打开但立即关闭

c++ - 在 Crypto++ 中使用 RSA 加密对称 AES key

c# - 为什么单击 ZedGraph 时我的图表上会出现垂直线?

python - InvalidToken 与 python 加密模块

java - 错误的 AES 加密

Java PKCS#11 配置 - 'slot' 和 'slotListIndex'