【问题标题】:Using Key object handle in PKCS#11在 PKCS#11 中使用 Key 对象句柄
【发布时间】:2013-12-05 20:59:27
【问题描述】:

我正在尝试使用供应商提供的 PKCS#11 函数与 HSM 进行交互。 我使用以下一系列函数来生成密钥,加密和解密数据。 下面的序列效果很好。

  1. C_Initialize
  2. C_OpenSession
  3. C_Login
  4. C_GenerateKey //3DES KEY
  5. C_EncryptInit
  6. C_Encrypt
  7. C_DecryptInit
  8. C_Decrypt
  9. C_Logout
  10. C_CloseSession

我的问题:

  1. 使用 C_Logout 和 C_CloseSession 后,有没有办法通过使用相同的登录凭据重新登录并再次打开会话来再次重用相同的 KEY(之前生成的)?

  2. 当我使用 C_CreateObject 时,它会创建会话对象并在使用 C_CloseSession 时将其销毁吗?

【问题讨论】:

  • 密钥一旦生成,就会存储在设备上,可以通过其属性(如ID)进行访问。当然第二次登录可以通过ID或其他属性找到对象并重复使用。
  • @EugeneMayevski'EldoSCorp 如果未设置CKA_TOKEN(默认情况下未设置),则关闭会话后您将找不到对象。
  • Harsha、PKCS#11 和 HSM 不是很好监控的标签。提及此主题时请使用cryptographyencryption
  • @owlstead 我的立场是正确的。

标签: c encryption pkcs#11 hsm


【解决方案1】:

问题:使用 C_Logout 和 C_CloseSession 后,有没有办法通过使用相同的登录凭据重新登录并再次打开会话来再次重用相同的 KEY(之前生成的)?

是的,只需将CKA_TOKEN 设置为CK_TRUE 并使用CKA_LABEL 提供一个标签以使用C_FindObjects 搜索它。


问题:当我使用 C_CreateObject 时,它会创建会话对象并在使用 C_CloseSession 时将其销毁吗?

嗯,是的,根据 PKCS#11 规范(v2.20、10.4、表 21):

CKA_TOKENCK_TRUE 如果 object 是令牌对象; CK_FALSE 如果对象是会话 目的。默认为CK_FALSE


请注意,您的令牌可能不允许设置所有可能的属性或属性组合,并且可能存在内存和其他限制。

【讨论】:

    猜你喜欢
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多