Java 本机PKCS11实现与智能卡之间的通信

Java 本机PKCS11实现与智能卡之间的通信,java,smartcard,pkcs#11,Java,Smartcard,Pkcs#11,我在java平台上使用智能卡对文件进行数字签名。 在语法上,我也得到了代码流和其他东西。 但我的问题是本机PKCS11实现如何与智能卡通信,反之亦然(我不知道) 我想知道内部流程。我在谷歌上搜索了很多,但没有得到内部通信流(我只得到代码)。 有人能给我一些链接、参考或类图吗。PKCS#11是C中使用加密令牌的API定义。它没有明确指定这些加密令牌的任何实现细节。原则上,任何安全和软件模块都可以用PKCS#11接口表示。因此,如何访问智能卡完全取决于PKCS#11中间件。PKCS#11模块的日志记

我在java平台上使用智能卡对文件进行数字签名。 在语法上,我也得到了代码流和其他东西。 但我的问题是本机PKCS11实现如何与智能卡通信,反之亦然(我不知道)

我想知道内部流程。我在谷歌上搜索了很多,但没有得到内部通信流(我只得到代码)。 有人能给我一些链接、参考或类图吗。

PKCS#11是C中使用加密令牌的API定义。它没有明确指定这些加密令牌的任何实现细节。原则上,任何安全和软件模块都可以用PKCS#11接口表示。因此,如何访问智能卡完全取决于PKCS#11中间件。PKCS#11模块的日志记录也是如此——PKCS#11没有指定如何执行日志记录

现在,用于生成签名的大多数智能卡至少与ISO 7816-4兼容(ISO 7816-4定义了哪些APDU可用于读/写卡,以及如何使用某些加密APDU)。此外,他们可能会实施ISO 7816-15(PKCS#15的一个稍有不同的版本),这是在卡上查找文件和对象(如密钥)的一个非常复杂的标准。通常这些卡是通过PCSC访问的,所以最好尝试获取PCSC或智能卡读卡器驱动程序API调用的日志

使用Java,您还可以通过
javax.smartcardio
直接使用该卡,该卡通过PCSC实现ISO 7816-4兼容传输。在这种情况下,您必须实现智能卡的整个应用程序级接口


不幸的是,这是一篇长篇大论,说这一切都取决于PKCS#11库和智能卡的实现

通过阅读这个PDF,我得到了一些简单的想法


但我仍然没有了解整个流程。为此,我认为我需要在PKCS的海洋中越陷越深

你读过PKCS 15吗?这可能是使用PKCS11的另一种选择,虽然可能不是最好的方法。我没有通过PKCS 15,因为大多数智能卡都使用PKCS 11实现。但我也会尝试。谢谢回复。你能提供一些链接吗,从那里我可以获得有关它的更多信息。