java - native PKCS11 实现与智能卡之间的通信

标签 java smartcard pkcs#11

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

我想了解内部流程。我已经用谷歌搜索了很多,但没有得到内部通信流程(我只得到代码)。 任何人都可以给我一些链接或引用或一些类图。

最佳答案

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

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

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

不幸的是,这是一个很长的文本,说明这一切都取决于 PKCS#11 库和智能卡的实现。

关于java - native PKCS11 实现与智能卡之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853649/

相关文章:

java - 如何在 jlayeredpane Java 中画线

java - 运行由 shade 插件构建的独立应用程序时找不到 Log4j2 配置

javascript - RFID阅读器与网页集成

smartcard - Java 卡 : Send long response with T=0

java - 用合格证书签署文件-智能卡

java - 如何让LoadingCache以非阻塞方式调用load()?

java - Jacoco 插件不报告重命名的集成测试类的覆盖率

android - 通过 Android USB 主机与智能卡读卡器通信

pkcs#11 - PKCS11 将 RSA 私钥解包到 eToken HSM

java - 使用 PKCS11 keystore 类型在 Spring Boot 上的 Web 应用程序中建立 TLS 连接