JavaCard 获取卡上的数据

JavaCard get Data on Card

我想在 Linux 机器上生成证书,将其传输到卡上并在那里加密。然后存储它并稍后取回。我想知道如何在卡上获得 4k RSA 数据之类的东西。它与 APDU 一起工作吗?

证书一般不需要加密;它通常包含 public 信息。您可以使用多个 APDU 命令向卡发送数据。为此,您可以使用命令链:一个命令重复多次以发送数据。您还可以使用带偏移量的 UPDATE BINARY。

开箱即用的 Java 卡上未实施命令链接或更新二进制文件,因此您必须自己实施该功能。规格在 ISO/IEC 7816-4: "Identification cards -- Integrated circuit cards -- Part 4: Organization, security and commands for interchange" .

Java 卡本身包含对大小为 2^15 - 1 字节的字节数组的支持。那大约是 32K,比通用的 X509v3 证书多得多。您可以在其中存储明文或密文。

所以是的,这种功能是可能的 "with APDU"。由于 APDU 是大多数卡的唯一通用接口,因此应该有很多实现可以做到这一点。至少我已经设计/实现的那些。


Java 卡 可能 也支持扩展长度的 APDU(通过 Applet 实现 ExtendedLength 接口)。然而,对于大多数(如果不是全部)卡来说,最大 APDU 缓冲区远低于 4K。因此,尽管您当然可以为此使用扩展长度的 APDU,但您无法用它解决完整的问题。