JavaCard 中的类字节到底是什么?

5 javacard

我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义。

如果读取RFC 5.4.1 Class byte

5.4.1 类字节

根据与表 9 结合使用的表 8,命令的类字节 CLA 用于指示命令和响应在多大程度上符合 ISO/IEC 7816 的本部分以及在适用时(参见表 9),其格式安全消息传递和逻辑通道号。

那么... CLA 标志用于指示,但具体是什么?因为,表格和描述对于初学者来说相当困难,我知道通常使用下一个 CLA 字节:0x00, 0x80, 0x84.

例如,如果要从表中读取内容:

  • 0X' 根据 ISO/IEC 7816 本部分的命令和响应的结构和编码('X' 的编码见表 9)

  • 10 至 7F RFU

  • 保留给PTS

我明白,为了精细开发,我应该阅读GlobalPlatform规范,有关确切卡的规范(我的是NXP的)和其他相关材料,但我想承认,理解这些内容很困难。

我期望以下内容(伪表):

  • 0x00 -> 用于从文件系统读取流
  • 0x01 -> 用于将字节缓冲区写入内存块
  • 0x02 -> 调用 AES/RSA 方法

Pau*_*ian 4

CLASS 字节在 ISO 7816-4 中定义。第一位表示行业间类别。Java Card 小程序应按照该行业间标准运行。Global Platform 是管理和维护卡的另一个规范,所有命令都将具有类字节 0x80 - 0x8F。类字节 0xFF 在某些情况下用于与读卡器通信,否则对卡无效。

CLA 的行业间含义有 3 个主要功能:

功能 1:链接
bit5 = 1 表示当前命令不是链中的最后一个命令,这意味着多个 APDU 都属于在一起,因此卡可以执行其他操作

功能 2:安全消息传送
bit4+3 用于指示当前命令的安全消息传送状态。这意味着APDU 已被验证(例如MACed)并且数据已被加密(例如分组密码)。命令头从未加密。

功能3:逻辑通道
bit2+1用于标识逻辑通道号。逻辑通道是通过卡的并行通信接口,因此可以在通道 0 上选择小程序 A,在通道 1 上选择小程序 B,同时两个小程序都保持其内部状态(没有 RAM 重置)。大多数卡不支持逻辑通道,或者您必须显式启用它们。

CLA 字节是 Java 卡初学者的典型陷阱,通常最好从 0x00 开始。