选择 APDU 和逻辑通道
Posted
技术标签:
【中文标题】选择 APDU 和逻辑通道【英文标题】:SELECT APDU and logical channels 【发布时间】:2014-06-30 10:02:07 【问题描述】:据我所知,要打开/关闭逻辑通道,我们必须使用MANAGE CHANNEL
APDU 命令。
打开一个逻辑通道:00 70 00 P1 P2 LE
关闭逻辑通道:00 70 80 P1 P2 LE
P1-P2 =0000
-0003
LE=01
(如果 P1-P2=0000
)或空(如果 P1-P2!=0000
)
。默认情况下唯一开放的逻辑通道是基本通道。
问题:
1-为什么当我通过关闭的逻辑通道发送SELECT APDU时,它会自动打开?
2-我们何时必须/需要使用打开/关闭逻辑通道命令(MANAGE CHANNEL)?
这是 Opensc-tool 的输出,如您所见,我成功发送和接收 SELECT 和 GET RESPONSE 命令和响应,通过逻辑通道 1 和 2,之前没有打开它们:
逻辑通道 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>
【问题讨论】:
【参考方案1】:自 1995 年的 ISO 7816-4 版本以来,SELECT 被定义为打开逻辑通道的替代方法。除了提到的 MANAGE CHANNEL 之外,没有其他命令能够这样做。逻辑通道的管理信息通常会消耗大量资源(例如,用于获得的访问权限、会话密钥、当前安全环境的 RAM)。一旦你得到指向那个方向的错误(有点合理的是 6A 84 意味着文件中没有更多的内存,65 81 内存错误,但无论如何你的卡文档在这里优先)你应该之前关闭它。通常,使用逻辑通道是有充分理由的,它源自不再需要的用例。
【讨论】:
【参考方案2】:这些 ISO 命令直接进入 ISD,根据Global Platform,所有可用逻辑通道默认选择 ISD。
【讨论】:
以上是关于选择 APDU 和逻辑通道的主要内容,如果未能解决你的问题,请参考以下文章