【问题标题】:How to use Pkcs11Interop with an NitroKey HSM to derive an shared secret with an EC如何将 Pkcs11Interop 与 NitroKey HSM 一起使用以派生与 EC 的共享密钥
【发布时间】:2017-02-10 13:58:47
【问题描述】:

我购买了 NitroKey HSM,并设法在其上创建了一个 EC。

现在我想导出一个共享密钥。
我找到了Pkcs11Interop,这似乎是适合这项工作的工具,但处理方式尚不清楚。

非常感谢您提供代码片段或指向工作项目的链接。

【问题讨论】:

    标签: c# pkcs#11 hsm pkcs11interop


    【解决方案1】:

    您可以查看Pkcs11Admin 应用程序以获取使用 Pkcs11Interop 库的真实示例。

    据我所知,NitroKey HSM 应该与 OpenSC middleware 一起使用,因此实现 PKCS#11 API 的非托管库将是 opensc-pkcs11.dll

    我相信这些资源可能对您有所帮助:

    1. Getting started with Pkcs11Interop
    2. Pkcs11Interop code samples 还包含密钥派生示例
    3. PKCS#11 specification

    【讨论】:

    • 感谢您对 Pkcs11Interop 的贡献!我从 Pkcs11Interop 示例和 Pkcs11Admin 中学到了很多东西,但停留在我拥有私有 EC-Key 的 ObjectHandle 和公共 EC-Key 的字节数组的地方。我找到了这个实现cryptsoft.com/pkcs11doc/v220/…,但我无法采用它。例如,我如何为我的大脑池 EC 获得主要和基础。
    • @dh_cgn 我可以看看你的代码和那个带有公钥的字节数组吗?
    • @dh_cgn 我对示例有点困惑,但总的来说,您首先需要为您的用例选择合适的机制/算法。我猜您选择了CKM_DH_PKCS_DERIVE,但我不确定您为什么选择这个特定的,或者它是否适合您的用例。无论如何,作为第二步,您通常需要阅读 PKCS#11 规范中选定机制的参数。在这种情况下,它是第 12.4.10 章。如果需要,还请阅读 PKCS#11 规范中提到的算法规范。在这种情况下是 PKCS#3。
    • 作为理解算法及其参数的第三步,你只需要使用Mechanism类的正确构造函数和正确的参数,一切都应该没问题。顺便说一句,你是故意选择CKM_DH_PKCS_DERIVE 吗?
    • 我确实选择了 CKM_DH_PKCS_DERIVE,因为文档说:PKCS #3 Diffie-Hellman 密钥派生机制,表示为 CKM_DH_PKCS_DERIVE,是一种基于 Diffie-Hellman 密钥协议的密钥派生机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多