smartcard - 选择 APDU 和逻辑 channel

标签 smartcard javacard apdu globalplatform

据我所知,要打开/关闭逻辑 channel ,我们必须使用 MANAGE CHANNEL APDU 命令。

  • Open a logical channel : 00 70 00 P1 P2 LE
  • Close a logical channel : 00 70 80 P1 P2 LE
  • P1-P2 = 0000-0003
  • LE= 01(if P1-P2=0000) or Empty (if P1-P2!=0000)

。默认情况下唯一打开的逻辑 channel 是Basic channel 。

问题:

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

2-什么时候我们必须/需要使用打开/关闭逻辑 channel 命令(MANAGE CHANNEL)?

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

逻辑 channel 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                                           ..

逻辑 channel 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>

最佳答案

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

关于smartcard - 选择 APDU 和逻辑 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24487563/

相关文章:

使用 AES 的 Java 卡加密返回 6F00

android - Android Kitkat 4.4 的 Java Card Applet 和基于主机的卡模拟

smartcard - 发送扩展 APDU 到 Javacard

java - java卡中Applet的最大和最小大小是多少

javacard - 选择 PPSE 赠送 6700,( VISA Paywave)

c# - 智能卡读卡器,无法读取某些卡

android - 具有智能卡集成的 phonegap 应用程序

smartcard - 我可以在没有读卡器和实体卡的情况下使用 Javacard 吗?

java - 如何验证 Java 卡上是否已安装小程序

Javax SmartCardIO 奇怪错误 6700 长度不正确