JavaCard 中的 class 字节到底是什么?
What exactly is the class byte in JavaCard?
我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义。
5.4.1 Class byte
According to table 8 used in conjunction with table 9, the class byte
CLA of a command is used to indicate to what extent the command and the response comply with this part of ISO/IEC 7816 and when applicable (see table 9), the format of secure messaging and the logical channel number.
所以... CLA 标志用于指示,但具体是什么?因为,table 和初学者的描述比较难,我理解通常使用下一个 CLA 字节:0x00, 0x80, 0x84.
例如如果要从 table:
读取内容
0X' 命令和响应的结构和编码根据 ISO/IEC 7816 的这一部分('X' 的编码见 table 9)
10 至 7F RFU
- 为 PTS 预留
我明白为了更好的开发 - 我应该阅读 GlobalPlatform
规范,关于确切卡的规范(我的是 NXP one)和其他相关材料,但我想承认,看不懂内容。
我预期如下(伪table):
- 0x00 -> 用于从文件系统读取流
- 0x01 -> 用于将字节缓冲区写入内存块
- 0x02 -> 调用 AES/RSA 方法
CLASS 字节在 ISO 7816-4 中定义。第一位表示行业间class。 Java 卡片小程序应在该行业标准中运行。 Global Platform 是另一个管理和维护卡的规范,所有命令都将有 class 字节 0x80 - 0x8F。 Class 字节 0xFF 在某些情况下用于与卡 reader 通信,否则对卡无效。
CLA 的跨行业意义有 3 个主要功能:
函数 1:链接
bit5 = 1 表示当前命令不是链的最后一个命令,这意味着多个 APDU 都属于一起,因此卡可能会做额外的事情
功能 2:安全消息传送
bit4+3 用于指示当前命令的安全消息状态。这意味着 APDU 已通过身份验证(例如 MACed)并且数据已加密(例如块密码)。命令 header 从不加密。
函数 3:逻辑通道
bit2+1 用来标识逻辑频道号。逻辑通道是通过卡的并行通信接口,因此小程序 A 可以在通道 0 上选择,小程序 B 可以在通道 1 上选择,同时两个小程序都保持其内部状态(没有重置 RAM)。大多数卡片不支持逻辑通道,或者您必须明确启用它们。
CLA 字节是 Java 卡片初学者的典型陷阱,通常最好从 0x00 开始。
我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义。
5.4.1 Class byte
According to table 8 used in conjunction with table 9, the class byte CLA of a command is used to indicate to what extent the command and the response comply with this part of ISO/IEC 7816 and when applicable (see table 9), the format of secure messaging and the logical channel number.
所以... CLA 标志用于指示,但具体是什么?因为,table 和初学者的描述比较难,我理解通常使用下一个 CLA 字节:0x00, 0x80, 0x84.
例如如果要从 table:
读取内容0X' 命令和响应的结构和编码根据 ISO/IEC 7816 的这一部分('X' 的编码见 table 9)
10 至 7F RFU
- 为 PTS 预留
我明白为了更好的开发 - 我应该阅读 GlobalPlatform
规范,关于确切卡的规范(我的是 NXP one)和其他相关材料,但我想承认,看不懂内容。
我预期如下(伪table):
- 0x00 -> 用于从文件系统读取流
- 0x01 -> 用于将字节缓冲区写入内存块
- 0x02 -> 调用 AES/RSA 方法
CLASS 字节在 ISO 7816-4 中定义。第一位表示行业间class。 Java 卡片小程序应在该行业标准中运行。 Global Platform 是另一个管理和维护卡的规范,所有命令都将有 class 字节 0x80 - 0x8F。 Class 字节 0xFF 在某些情况下用于与卡 reader 通信,否则对卡无效。
CLA 的跨行业意义有 3 个主要功能:
函数 1:链接
bit5 = 1 表示当前命令不是链的最后一个命令,这意味着多个 APDU 都属于一起,因此卡可能会做额外的事情
功能 2:安全消息传送
bit4+3 用于指示当前命令的安全消息状态。这意味着 APDU 已通过身份验证(例如 MACed)并且数据已加密(例如块密码)。命令 header 从不加密。
函数 3:逻辑通道
bit2+1 用来标识逻辑频道号。逻辑通道是通过卡的并行通信接口,因此小程序 A 可以在通道 0 上选择,小程序 B 可以在通道 1 上选择,同时两个小程序都保持其内部状态(没有重置 RAM)。大多数卡片不支持逻辑通道,或者您必须明确启用它们。
CLA 字节是 Java 卡片初学者的典型陷阱,通常最好从 0x00 开始。