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

时间:2013-07-25 09:08:32

标签: java smartcard pkcs#11

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

我想知道内部流程。我已经google了很多但没有得到内部通信流程(我只获得代码)。 任何人都可以给我一些链接或参考或一些类图。

2 个答案:

答案 0 :(得分:2)

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

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

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

遗憾的是,这是一篇长篇文章,说这完全取决于PKCS#11库和智能卡的实现。

答案 1 :(得分:-1)

通过阅读本PDF,我得到了一些简短的想法

ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-30/TUT-M51_Griffin_PKCS11.pdf

但我仍然没有得到全部的流量。为此,我认为我需要在PKCS#11的海洋中越走越深;)