标签: nitrokey

与 pkcs11interop 一起使用的热门机制 CKM_ECDH1_DERIVE

我买了一个 NitroKey HSM,想用 EC 推导出一个秘密。 以前的问题

为此,我想使用这些CKM_ECDH1_DERIVE机制。此 HSM 支持哪个,请参阅:

参考PKCS#11 规范,必须考虑:

  1. 该机制CKM_ECDH1_DERIVE必须与功能一起使用Derive(页 188)
  2. 该机制CKM_ECDH1_DERIVE需要CK_ECDH1_DERIVE_PARAMS带有以下参数的参数(页 222):
    1. kdf:用于共享秘密值 (CKD) 的密钥派生函数
    2. sharedData : 双方共享的一些数据
    3. publicData : 对方的EC公钥值
  3. 该函数DeriveKey需要以下参数:
    1. 机制 CKM.CKM_ECDH1_DERIVE
    2. 对象句柄私钥
    3. 对象属性 (页 338)
      1. CKA.CKA_CLASS -> CKO.CKO_SECRET_KEY
      2. CKA.CKA_KEY_TYPE -> CKK.CKK_GENERIC_SECRET
      3. 但是“但是,由于这些事实都隐含在机制中,因此无需指定任何一个”,所以这些可以为空?

问题

因此,根据这些信息,我尝试实现一种方法。

但我收到此错误:

Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_DeriveKey 返回 CKR_TEMPLATE_INCOMPLETE

Session.DeriveKey

说明CKR_TEMPLATE_INCOMPLETE(第 64 页):

如果提供的模板中的属性值,连同任何默认属性值和对象创建函数本身贡献给对象的任何属性值,都不足以完全指定要创建的对象,则尝试应该失败并显示错误代码CKR_TEMPLATE_INCOMPLETE。

和这里(第 98 页)

CKR_TEMPLATE_INCOMPLETE:为创建对象指定的模板不完整,缺少一些必要的属性。有关更多信息,请参阅第 10.1 节。

但我使用了必要的属性:

  1. CKA.CKA_CLASS -> CKO.CKO_SECRET_KEY
  2. CKA.CKA_KEY_TYPE …

elliptic-curve pkcs#11 opensc nitrokey pkcs11interop

5
推荐指数
1
解决办法
1594
查看次数

如何从 DER 编码的 EC_POINT 中获取 Qx 和 Qy

我在 nitro key hsm 上创建了一个 Brainpool EC,并希望将其用于 .NET Framework 的加密操作,例如System.Security.Cryptography.ECDiffieHellman.

我用pkcs11-tool --list-objects公钥提取但只得到一个值,即 EC_POINT。

那么,如何得到这个点的坐标呢?

DER 编码的 EC_POINT

Public Key Object; EC  EC_POINT 320 bits
  EC_POINT:   0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
  EC_PARAMS:  06092b2403030208010109
  label:      Brainpool #1
  ID:         10
  Usage:      verify
Run Code Online (Sandbox Code Playgroud)

解码的 EC_POINT

这个 EC_POINT 是 DER 编码的,我用来提取EC_POINT的真实值

040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
Run Code Online (Sandbox Code Playgroud)

(还是这个JS脚本https://lapo.it/asn1js/#0451040DEFED7988B095679E5ACA422382D949C2E7FD937646DEF25CF7EB5140D41F12D077AC615773952DA53EFAD266C8642C6877B8B215D091BA687ACAFD3C33F35FFB5CA6AADAF248EF1A126CD55E0D0598

elliptic-curve pkcs#11 der pkcs#15 nitrokey

0
推荐指数
1
解决办法
1024
查看次数