如何与同一物理智能卡上的多个 javacard 应用程序交互(如 yubikey)
Posted
技术标签:
【中文标题】如何与同一物理智能卡上的多个 javacard 应用程序交互(如 yubikey)【英文标题】:How to interact with multiple javacard applications on the same physical smartcard (like yubikey) 【发布时间】:2020-04-02 23:45:50 【问题描述】:我已经在我的 2.2.2 javacard 上安装了流行的 IsoApplet (https://github.com/philipWendland/IsoApplet),并且能够使用 OpenSC 项目中的 pkcs11-tool
和 pkcs15-tool
在卡上生成私钥并使用它们进行身份验证通过 SSH 连接到服务器。
另外,我能够成功地使用我的 Yubikey 5 (https://www.yubico.com/products/services-software/personalization-tools/challenge-response/) 的质询-响应来增加解密 KeepassXC 数据库的安全性。
现在,我想将https://github.com/arekinath/YkOtpApplet 添加到具有 IsoApplet 的同一个 javacard 中。外部应用程序如何与 javacard 上的单独应用程序交互?我可以将这两个应用程序放在同一个 javacard 上吗?限制只是卡上的存储空间吗?
我有两张卡可用:
恩智浦 JCOP3 J3H145 Java 卡 3.0.4 JavaCOS A22 155K Java 卡 2.2.2【问题讨论】:
据我所知,JavaCard 上的每个应用程序都通过Application Id
标识。您的应用程序已经有 tis Id。
【参考方案1】:
是的,您可以将这两个应用程序放在同一张卡上,唯一的限制是卡上的永久存储空间(除非其中一个应用程序与您的卡不兼容,例如,如果它需要一些由卡操作系统)。
每个应用程序都有一个标识符,想象地命名为 AID,“应用程序 ID”,当应用程序安装在卡上时分配。当外部系统想要与卡交互时,第一个命令(称为SELECT
)使用 AID 作为参数选择它想要与之交谈的应用程序。然后任何后续命令都会路由到该应用程序,直到卡被重置或接收到另一个应用程序的 SELECT
。
【讨论】:
以上是关于如何与同一物理智能卡上的多个 javacard 应用程序交互(如 yubikey)的主要内容,如果未能解决你的问题,请参考以下文章