2

我通过提供的 acos-pkcs11.dll 库(Java 32 位以便在 Windows 上提供 SunPKCS11)在 Windows 上使用 Java SunPKCS11 实现了 ACS CryptoMate64 令牌的工作实现。

ACS CryptoMate64 是一个 USB 令牌,可由 SunPKCS11 在 Windows 计算机上本地访问。Linux 没有 PKCS11 库(没有 .so 文件或任何类似文件)。

因为我正在使用 Linux 机器以获得一些功能,所以我想问一下是否有任何方法可以通过通过 USB 连接到不同计算机上的网络访问 PCKS11 设备。

这个想法如下: Linux:想要使用 USB CryptoMate64 但没有库的应用程序。Windows:使用 acos-pkcs11.dll 连接 USB CryptoMate64。应用程序正在使用连接在 Windows 计算机上的 CryptoMate64。

是否可以在 Linux 机器上配置 Java SunPKCS11 以通过网络远程使用它?或者它是制造商提供的PKCS11模块的一部分?

我知道 HSM 能够通过 PKCS11 通过网络进行通信,所以我的问题是问是否也可以通过这种方式与 USB 加密令牌进行通信。

欢迎提出任何建议或想法。

4

1 回答 1

0

基于网络的 HSM 常用的方法是让 PKCS#11 库为方法调用执行 编组,并使用传输协议通过网络发送此数据。此应用程序传输协议通常是为 TCP 套接字定义的。由于数据的性质,这个传输连接应该是安全的。它至少应该提供客户端和服务器身份验证,并保持机密性、真实性和完整性。可以使用带有客户端身份验证的 TLS,尽管该协议不能依赖 DNS 命名系统来确保其安全性。

现在联网的 HSM 或包含 HSM 的系统应该包含一个服务,该服务对数据执行 un-marshalling,执行预处理并将其发送到 HSM。虽然不是必需的,但这可以通过简单地调用具有安全未编组数据的非联网 PKCS#11 库来实现。

另一种选择是创建您自己的 Java 安全提供程序。该提供程序可以调用服务器上的代码并调用那里的 PCKS#11 库。实现 Java 安全提供程序也不是一件容易的事,并且需要您使用 Oracle 为您的私钥提供的证书对提供程序进行签名(对于正常的 Java SE 安装)。

正如您可能理解的那样,在网络上使用 HSM 不应掉以轻心,而应成为 HSM 安全性的一部分。您可以尝试自己创建这样的系统,但您不应该自欺欺人;联网的 HSM 很可能不如本地使用的 HSM 安全。一般来说,如果 HSM 供应商不提供该服务,您最好购买另一个 USB 令牌。或者您当然可以购买联网的 HSM。

于 2013-11-09T14:01:48.020 回答