一个供应商的 pkcs#11 库可以与另一个供应商的 HSM 一起使用吗?

Can pkcs#11 library of one vendor be used with an HSM of another vendor?

试图了解创建一个能够使用任何供应商的 HSM 签署对象的多平台 Python 包是否可行?

由于不同供应商的 pkcs#11 库必须实现单一接口,如果不使用特定供应商似乎是可能的 API。但是,OpenSC 有一个支持的 HSM 列表和一个不支持的列表,所以我认为它比我想象的要复杂。

请让我知道是否可行或解释为什么不可行。谢谢

PKCS#11 是一个 API 标准。它为想要使用智能卡或其他加密 'device' 的软件描述了一个 API。它 而不是 描述供应商应该如何做 API 下的任何事情。而且,它并不期望您(作为软件程序员)知道如何访问那里的所有硬件。

您的应用显示“C_Login”,因为那是 PKCS#11。 P11 说明了 C_Login 所期望的,以及在进行该调用之后环境的状态应该是什么——它没有告诉供应商如何到达该状态,只告诉供应商期望的最终状态是什么,而不是路径怎么去。

现在:...多平台Python包...绝对有可能,假设您可以访问每个设备二进制协议、通信协议和编程方法, 对于所有提供加密卡接口的东西

每个提供 P11 库的智能卡、HSM、软 HSM 等都知道您的应用程序将要求什么,但是如何使该对象或状态可用完全取决于实际 device/pseudo-device.这就是为什么需要特定于供应商的库的原因——因为 供应商 知道 供应商的 设备和协议。

或者您可以提供一个 API 标准来定义软件访问硬件的标准化方式,使二进制协议、通信协议和编程方法抽象化...即,您将重新创建 PKCS# 11,但特定于 Python.

使用与 PKCS#11 对话并连接到任何 P11 供应商提供的库的 Py 库与该供应商的设备对话的速度更快。