【问题标题】:Java SunPKCS11 access USB crypto-token through networkJava SunPKCS11 通过网络访问 USB 加密令牌
【发布时间】:2013-11-08 10:39:23
【问题描述】:

我通过提供的 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 加密令牌以这种方式进行通信。

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

【问题讨论】:

    标签: java linux windows cryptography pkcs#11


    【解决方案1】:

    基于网络的 HSM 常用的方法是让 PKCS#11 库为方法调用执行Marshalling,并使用传输协议通过网络发送此数据。此应用程序传输协议通常是为 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(成本问题),并且刀片服务器上没有任何 USB 端口可用于在本地连接 CryptoMate64 令牌。我对 CryptoMate64 的唯一接口是 PKCS#11 库。我无法使用自己的 Java 安全提供程序来调用服务器上的代码。我正在尝试通过 SunPKCS#11 找到解决方案。你有pkcs11-proxy的经验吗?
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2018-11-19
    • 2012-09-21
    • 2017-08-01
    • 2011-12-31
    • 2013-01-12
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多