【发布时间】:2017-07-21 21:38:41
【问题描述】:
我想在 Linux 机器上生成证书,将其传输到卡上并在那里加密。然后将其存储并稍后取回。我想知道如何在卡上获得类似 4k RSA 数据的东西。它可以与 APDU 一起使用吗?
【问题讨论】:
标签: java cryptography storage javacard apdu
我想在 Linux 机器上生成证书,将其传输到卡上并在那里加密。然后将其存储并稍后取回。我想知道如何在卡上获得类似 4k RSA 数据的东西。它可以与 APDU 一起使用吗?
【问题讨论】:
标签: java cryptography storage javacard apdu
证书一般不需要加密;它通常包含公共信息。您可以使用多个 APDU 命令向卡发送数据。为此,您可以使用命令链接:一个重复多次以发送数据的命令。您也可以使用带有偏移量的 UPDATE BINARY。
命令链或 UPDATE BINARY 都没有在 Java Card 上实现开箱即用,因此您必须自己实现这些功能。规格在ISO/IEC 7816-4: "Identification cards -- Integrated circuit cards -- Part 4: Organization, security and commands for interchange"。
Java Card 本身支持最大为 2^15 - 1 个字节的字节数组。这大约是 32K,远远超过通用 X509v3 证书。您可以在其中存储明文或密文。
所以是的,这种功能是可能的“使用 APDU”。由于 APDU 是大多数卡的唯一通用接口,因此应该有很多实现。至少我已经设计/实现的那些。
Java Card可能还支持扩展长度的 APDU(通过 Applet 实现 ExtendedLength 接口)。但是,对于大多数(如果不是全部)卡来说,最大 APDU 缓冲区远低于 4K。因此,尽管您当然可以为此使用扩展长度的 APDU,但您无法用它解决完整的问题。
【讨论】: