Java SunPKCS11通过网络访问USB加密令牌

Java SunPKCS11通过网络访问USB加密令牌,java,linux,windows,cryptography,pkcs#11,Java,Linux,Windows,Cryptography,Pkcs#11,我通过提供的acos-pkcs11.dll库(Java 32位,以便在Windows上提供SunPKCS11),在Windows上使用Java SunPKCS11实现了ACS CryptoMate64令牌 ACS CryptoMate64是一种USB令牌,可由Windows计算机上的SunPKCS11本地访问。 Linux没有PKCS11库(没有.so文件或任何类似文件) 因为我使用Linux机器是为了获得一些功能,所以我想问一下,是否有办法通过USB连接到不同计算机上的网络访问PCKS11设备

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

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

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

想法如下: Linux:希望使用USB CryptoMate64但没有库的应用程序。 Windows:已将USB CryptoMate64与acos-pkcs11.dll连接。 应用程序正在使用连接到Windows计算机上的CryptoMate64

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

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


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

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

现在,联网的HSM或包含HSM的系统应该包含一个服务,该服务对数据执行解编组,执行预处理并将其发送给HSM。尽管不是必需的,但这可以通过使用安全的未编组数据调用非网络化PKCS#11库来实现

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


正如您所理解的,通过网络使用HSM不应掉以轻心,这应该是HSM安全性的一部分。你可以自己尝试创建这样一个系统,但你不应该愚弄自己;很可能联网的HSM不如本地使用的HSM安全。一般来说,如果HSM供应商不提供该服务,您最好购买另一个USB令牌。当然,你也可以买一台联网的HSM。

我还没有看过你的特定硬件供应商。通常很难通过internet了解所提供的安全性和功能是什么,这也可能会随着时间的推移而改变。感谢您的回复。当然,在本地使用HSM更容易、更安全。在我的情况下,我没有HSM(成本问题),刀片服务器上也没有任何可用于本地连接CryptoMate64令牌的USB端口。我与CryptoMate64的唯一接口是PKCS#11库。我无法使用自己的Java安全提供程序来调用服务器上的代码。我正试图通过SunPKCS#11找到解决方案。你在这方面有经验吗?