如何在pkcs#11中使用CKO_VENDOR_DEFINED

时间:2016-03-01 15:43:30

标签: pkcs#11

是否有人使用CKO_VENDOR_DEFINED创建密钥或数据对象?

几乎没有任何文件(包括来自Oasis的母亲负载)如何做,或哪些属性适用/不适用。

不幸的是,但希望可以理解,我无法准确描述我想要做的事情。

但它的要点是我需要能够使用我们的密钥以及修改令牌上的密钥的能力具有更多的属性< =>机制灵活性。

我非常感谢任何指示或帮助。

2 个答案:

答案 0 :(得分:0)

您可以查看CKC_OPENPGP定义为OpenPGP extension to PKCS #11的地方:

#define CKC_OPENPGP  (CKC_VENDOR_DEFINED|0x00504750)

我也看到了以这种方式引入CK * _VENDOR_DEFINED扩展的商业实现。

答案 1 :(得分:0)

(AFAIK)供应商定义的对象类型必须在HSM单元固件内部实现(理论上,主机端cryptoki库可能会引入一些额外的"虚拟"对象类型,但这可能不会产生任何感觉整体安全模型将保持不变 - 因为主机端cryptoki代码在不受信任的执行环境中运行。)

如果你需要比香草PKCS#11提供的更多控制,你有一些选择:

  1. 使用现有的供应商扩展程序 - 某些供应商添加了自己的扩展程序,旨在解决常见的用例。阅读您的文档或直接与您的供应商联系。

  2. 实施自定义固件 - 某些产品允许最终用户在 HSM设备中运行自定义代码。您可以通过这种方式实现您的模型。

  3. SafeNet ProtectServer:

      

    SafeNet ProtectServer HSM为其提供了独特的灵活性   应用程序开发人员创建自己的固件并执行它   在HSM的安全范围内。称为功能模块,   工具包提供了一个全面的开发和部署工具   自定义固件。

    Thales nShield:

      

    大多数nShield HSM还支持托管关键的独特能力   在硬化的安全边界内的应用程序,所以你可以   除此之外还建立防篡改业务流程   保护加密操作。

    Utimaco CryptoServer:

      

    CryptoServer软件开发工具包(SDK)是专业人士   所有Utimaco硬件安全模块的开发环境。它   使集成商和最终用户能够创建特定的应用程序,   例如专有算法,自定义密钥派生程序或   在防篡改环境中运行的复杂协议   CryptoServer硬件安全模块。由于SDK提供完全访问权限   对于Utimaco基础固件,可以开发定制固件模块   在很短的时间内。

    1. 使用其他技术 - 根本不使用HSM并利用其他一些安全设备。特别是智能卡可能是一种可行的替代方案,因为其中一些可以编程(至少Java CardMULTOS个。另一方面,支持的算法的性能和范围在这里非常有限(取决于您的用例)。