智能卡中的逻辑通道

时间:2014-06-29 09:19:39

标签: smartcard javacard apdu globalplatform

以下图片是 ubuntu pcsc_scan的输出,正如您在 ATR analyze 中看到的那样,我的javacard支持3个逻辑通道。

enter image description here

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

enter image description here

问题是:为什么当我想通过另一个逻辑信道而不是基本逻辑信道发送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,[=不支持逻辑频道]。为什么呢?


更新:

&#34;如果javacard有两个/三个逻辑通道,这意味着我们可以同时选择两个/三个小程序&#34;, 这是对的吗? 如果是,拥有多个频道的其他好处是什么?如果不是,这是什么渠道?

1 个答案:

答案 0 :(得分: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)。另请注意,Global Platform使用专有的APDU命令/响应(CLA中设置的最高位= 80h),因此正式地说,您只能参考全局平台规范。