选择 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 的输出,如您所见,我成功发送和接收 SELECTGET 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 和逻辑通道的主要内容,如果未能解决你的问题,请参考以下文章

SIM逻辑模型与APDU

数字电路实验 03 - | 数据选择器及其应用

智能卡中的逻辑通道

树莓派RP2040 100M 24通道逻辑分析仪开源项目

智能卡读卡器 T0 T1 APDU 级通信

BS结构RFID读写器web插件开发之六----CPU卡APDU操作