2

我有一个应用程序,重置权限是重置后默认选择的应用程序。

我的应用程序有一个日志记录机制,可以准确地知道对卡发出的请求是什么。根据当前状态,我有几个动态响应。我还用卡片间谍检查了行为。

所有 APDU 都被正确转发到我的应用程序,包括那些不属于它并且与卡上的任何其他应用程序不匹配的 SELECT。

然而,当接收到 SELECT DF Next Occurrence (A4 04 02) 时,这不会发生。相反,卡返回以下 SW: 6A85 - 不满足条件。

现在..我了解卡可能在做什么,即检查当前是否选择了具有相同 AID 指定的应用程序,并会尝试选择具有相同 ID 的下一个应用程序。(事实并非如此。卡上没有冲突的 AID)。

我的问题是:如果没有安装匹配的应用程序,卡操作系统是否应该不转发此 APDU?这是选择已选择应用程序的假定行为。

另一个问题:有没有办法修复/规避这个问题,或者你认为这可能是一个操作系统错误?或者根本不是这种情况?

例子:

Card Reset

-> 00 A4 04 00 07 AIDx7..
<- My Applet 90 00

-> 00 A4 04 02 07 AIDx7...
<- Card 6A 85

Moves on to other selects
My applet is still selected.

我正在使用 NXP JCOP3 卡。

提前致谢。

4

1 回答 1

3

引用GlobalPlatform Card Specification Version 2.3,第 68 页:

6.4.2.1.2 基本逻辑通道上的显式选择

....跳过了一些段落....

运行时行为

以下要求适用于基本逻辑通道上显式应用程序选择(SELECT [by name])过程中的 OPEN(如果卡生命周期状态为 TERMINATED,则此行为不适用):

....跳过了几个案例....

  • 如果根本没有找到完全或部分匹配,则基本逻辑通道上当前选定的应用程序应保持为选定的应用程序,并且

    • 如果 SELECT [by name] 命令设置了 [first or only occurrence] 参数,则将 SELECT 命令分派给应用程序。

    • 如果 SELECT [按名称] 命令设置了 [下一次出现] 参数,则 OPEN 应向卡外实体返回适当的错误。

这与您描述的行为完全匹配(需要说您的 JCOP 可能受制于一些早期版本的 GlobalPlatform Card Specification)。


对于第二个问题:

  • 我敢打赌,没有半简单的方法可以使用您的特定卡修复/规避此问题。

  • 还有其他卡的工作方式不同——使用哪一种取决于您的用例。

祝你好运!

于 2018-03-01T02:00:25.370 回答