如何与同一物理智能卡上的多个 javacard 应用程序交互(如 yubikey)

How to interact with multiple javacard applications on the same physical smartcard (like yubikey)

我已经在我的 2.2.2 javacard 上安装了流行的 IsoApplet (https://github.com/philipWendland/IsoApplet),并且能够使用来自 OpenSC 项目的 pkcs11-toolpkcs15-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 上安装这两个应用程序吗?限制只是卡上的存储空间吗?

我有两张卡可用:

是的,您可以在同一张卡中安装这两个应用程序,唯一的限制是卡上的永久存储(除非其中一个应用程序与您的卡不兼容,例如,如果它需要一些未提供的加密功能通过卡片 OS).

每个应用程序都有一个名为 AID 的标识符,"Application ID",是在将应用程序安装到卡上时分配的。当外部系统想要与卡片交互时,第一个命令(称为 SELECT)使用 AID 作为参数选择它想要与之对话的应用程序。然后,任何后续命令都会被路由到该应用程序,直到卡被重置或收到到另一个应用程序的 SELECT