2

据我所知,要打开/关闭逻辑通道,我们必须使用MANAGE CHANNELAPDU 命令。

  • 打开逻辑通道:00 70 00 P1 P2 LE
  • 关闭逻辑通道:00 70 80 P1 P2 LE
  • P1-P2 = 0000-0003
  • LE= 01(如果 P1-P2= 0000) 或 Empty (如果 P1-P2!= 0000)

. 默认情况下唯一开放的逻辑通道是基本通道。

问题:

1-为什么当我通过关闭的逻辑通道发送SELECT APDU时,它会自动打开?

2-我们何时必须/需要使用打开/关闭逻辑通道命令(MANAGE CHANNEL)?

这是Opensc-tool的输出,如您所见,我通过逻辑通道 1 和 2 成功发送和接收SELECTGET RESPONSE命令和响应,而之前没有打开它们:

逻辑通道 1:

C:\>cd E:\OpenSC\tools

E:\OpenSC\tools>opensc-tool -s 01A40400 -s 01C0000012

Using reader with a card: ACS CCID USB Reader 0
Sending: 01 A4 04 00
Received (SW1=0x90, SW2=0x00)
Sending: 01 C0 00 00 12
Received (SW1=0x90, SW2=0x00):
6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 o..............e
01 FF                                           ..

逻辑通道 2:

E:\OpenSC\tools>opensc-tool -s 02A40400 -s 02C0000012

Using reader with a card: ACS CCID USB Reader 0
Sending: 02 A4 04 00
Received (SW1=0x90, SW2=0x00)
Sending: 02 C0 00 00 12
Received (SW1=0x90, SW2=0x00):
6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 o..............e
01 FF                                           ..

E:\OpenSC\tools>
4

2 回答 2

3

自 1995 年 ISO 7816-4 版本以来,SELECT 被定义为打开逻辑通道的替代方法。除了提到的 MANAGE CHANNEL 之外,没有其他命令能够这样做。逻辑通道的管理信息通常会消耗大量资源(例如,用于获取的访问权限、会话密钥、当前安全环境的 RAM)。一旦你得到指向那个方向的错误(有点合理的是 6A 84 意味着文件中没有更多的内存,65 81 内存错误,但无论如何你的卡文档在这里优先)你应该之前关闭它。通常有充分的理由使用逻辑通道,并且它源自不再需要的用例。

于 2014-06-30T10:28:10.570 回答
2

这些 ISO 命令直接发送到 ISD,并且根据Global Platform,在所有可用的逻辑通道上默认选择 ISD。

于 2014-06-30T10:26:19.203 回答