JavaCard中的类字节究竟是什么?

时间:2016-01-21 16:30:49

标签: 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 one)和其他相关材料,但我想承认,它&# 39;难以理解的内容。

我预计会有以下(伪表):

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

1 个答案:

答案 0 :(得分:3)

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

CLA的行业间意义有三个主要功能:

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

功能2:安全信息
bit4 + 3用于表示当前命令的安全消息传递状态。这意味着APDU被认证(例如,MACed)并且数据被加密(例如,块密码)。命令头从不加密。

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

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