我在java平台上使用智能卡对数据进行数字签名。 从语法上讲,我也得到了代码和其他东西。 但我的问题是本机PKCS11实现如何与智能卡通信,反之亦然(我不知道的事情)。
我想知道内部流程。我已经google了很多但没有得到内部通信流程(我只获得代码)。 任何人都可以给我一些链接或参考或一些类图。
答案 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的海洋中越走越深;)