Java SunPKCS11 通过网络访问 USB 加密 token

标签 java linux windows cryptography pkcs#11

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

ACS CryptoMate64 是一个 USB token ,由 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 加密 token 进行通信。

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

最佳答案

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

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

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

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

关于Java SunPKCS11 通过网络访问 USB 加密 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856984/

相关文章:

java - 如何使用 Spring Boot 查询和检索约 100 个客户数据库的结果?

php - 无法在 Windows 8 上使用 php 邮件功能发送电子邮件

Java(开关盒+扫描仪输入问题)

linux - BEGIN 和 END 在 gawk 中导致语法错误

mysql - 自动执行 MySQL 转储

Linux - 在 awk 中读取数组

java - 使用单独的 Java 进程在映射驱动器上写入和读取文件

windows - 由于空间问题,WSL 无法找到文件或目录

java - Google App Engine Query Execute 只接受 3 个参数

java - 将彩色 png 布局图像中的图案读取到数组中?