2

下图是 ubuntu 中的输出,pcsc_scan正如ATR 分析中看到的,我的 javacard 支持 3 个逻辑通道。

在此处输入图像描述

这是ISO 7816-4的一部分,它提到了 CLA 中的低半字节,表示逻辑通道号:

在此处输入图像描述

问题是:为什么当我想通过另一个逻辑通道而不是基本逻辑通道发送 INITIAL-UPDATE APDU 命令时,它会失败?

CLA = 80使用[基本逻辑通道]进行初始更新

< 80 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 611C

< 00 C0 00 00 00 1C 
> 00 11 60 01 03 8A 79 0A F9 FF 02 00 35 F3 92 EC 2B 6F F5 10 2E BD 74 41 2F 25 B4
> 90 00

CLA = 81 or 82使用[补充逻辑通道]进行初始更新

< 81 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 6881

< 82 50 00 00 08 00
< 00 00 00 00 00 00 00 00
> 6881

如您所见,我收到了SW = 6881[= 不支持逻辑通道]。为什么?


更新 :

“如果一个javacard有两个/三个逻辑通道,那意味着我们可以同时选择两个/三个applet”,这是对的吗?如果是,拥有多个频道的其他好处是什么?如果不是,这个渠道是干什么用的?

4

1 回答 1

2

这取决于如何处理 ISO 7816-4 的解释。ISO 7816-4 对智能卡的内部状态几乎没有规定。将这个具体问题留给解释肯定是足够模糊的。

现在通常您可以通过使用 MANAGE CHANNEL (INS = 70h) APDU 来拥有多个逻辑通道。您不能通过指定 CLA 字节中的位来简单地切换到另一个通道;通道需要先打开。此外,并不是说身份验证或文件系统状态由新通道接管。

您应该将逻辑通道视为同时运行多个应用程序的选项,其中逻辑通道用于在单个(半双工)通信通道上交错命令。如果您的终端 (PC) 上有不同的服务需要智能卡通信,这将非常有用。

显然逻辑信道有很大的缺点;您需要保持每个逻辑通道的状态。可能,您可能还需要混合状态(即 PIN VERIFY 可用于两个通道)。这是关于瞬态内存 (RAM) 使用的一个非常具体的问题。

通常您只能看到带有 2 个逻辑通道的卡。大多数情况下,只会使用其中一个。99% 的情况下最好只允许对单个服务的独占访问,并让智能卡服务按顺序运行。请注意,许多卡现在以 30 MHz 或更高的速度运行,但总共只有 8 KiB 的 RAM。

您可以尝试使用 MANAGE CHANNEL,但可能是您的 ATR 在欺骗您,并且并非所有应用程序都支持逻辑通道(例如 Global Platform Card Manager)。还要注意,全球平台使用专有的 APDU 命令/响应(CLA 中设置的最高位 = 80h),因此正式地,您只有全球平台规范可供参考。

于 2014-06-29T12:31:10.370 回答