Cryptography PKCS11还是加密API?

Cryptography PKCS11还是加密API?,cryptography,pkcs#11,jce,Cryptography,Pkcs#11,Jce,HSM公司通常提供PKCS#11 API来与HSM一起工作,还是只提供自己的加密API 在每种情况下,如何集成到Linux应用程序(使用OpenSSL,可能类似于如何为第三方库调用OpenSSL引擎?)和Windows应用程序 一般首选什么?PKCS#11 API还是通用API 两者的优点和缺点是什么 一家HSM供应商告诉我们,他们可以提供PKCS#11 API和用C语言编写的加密API。我正在努力理解这些术语,因此这个问题 一个简单的概述将帮助我进一步研究:) 非常感谢 PKCS#11(维基定

HSM公司通常提供PKCS#11 API来与HSM一起工作,还是只提供自己的加密API

在每种情况下,如何集成到Linux应用程序(使用OpenSSL,可能类似于如何为第三方库调用OpenSSL引擎?)和Windows应用程序

一般首选什么?PKCS#11 API还是通用API

两者的优点和缺点是什么

一家HSM供应商告诉我们,他们可以提供PKCS#11 API和用C语言编写的加密API。我正在努力理解这些术语,因此这个问题

一个简单的概述将帮助我进一步研究:)

非常感谢

PKCS#11(维基定义)

PKCS#11标准为加密令牌(如硬件安全模块(HSM)和智能卡)定义了一个独立于平台的API,并将API本身命名为“Cryptoki”(来自“加密令牌接口”,发音为“加密密钥”——但“PKCS#11”通常用于指代API以及定义它的标准)

因此,这通常是所有HSM制造商使用的标准API

如果HSM供应商实现此API,则完全取决于他们。如果他们真的实现了它,您应该能够使用标准PKCS#11 API从任何平台(只要他们支持)或任何第三方库(可以充当您的软件和硬件之间的中间件)与他们的硬件进行通信。如果他们没有实现它,他们通常会编写自己的专有API,该API可能特定于某个平台,并且只与他们的设备通信。这迫使您使用他们的API与他们的硬件通信(在本例中为HSM)

因此,从您的角度来看,如果您使用标准的PKCS#11 API,并且将来如果您与另一个HSM供应商合作,您也可以使用相同的代码与新的HSM通信(因为PKCS#11是一个标准)。但是,如果您使用他们自己的API,并且与新的HSM供应商通信,您就不能重用您的代码,因为他们的API可能只与他们的设备一起工作。

通常提供PKCS#11库,如果只是为了与同样提供此类库的其他产品竞争的话。PKCS#11是一个可从软件使用的通用接口。下面有许多允许使用PKCS#11令牌标准的软件包,例如OpenSSL PKCS#11引擎和Java语言的PKCS#11安全提供程序

虽然PKCS#11可以扩展,但这并不意味着HSM的所有功能都必须得到支持。PKCS#11是一个相对较低级别的接口。有时,使用更适合特定用例的专有API更有意义。在安全设备上执行加密协议的部分越多越好


至于哪一个更好,这完全取决于您的用例和威胁模型以及可以提供的加密API。

这还取决于HSM的类型,大多数通用HSM支持PKCS#11,但付款等特殊用途HSM更可能不支持PKCS。