【问题标题】:What exactly is the class byte in JavaCard?JavaCard 中的类字节到底是什么?
【发布时间】:2018-06-19 20:22:35
【问题描述】:

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

如果阅读RFC 5.4.1 Class byte

5.4.1 类字节

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

所以... CLA 标志用于指示,但具体是什么?因为,对于初学者来说表格和描述比较难,我理解通常使用下一个 CLA 字节:0x00, 0x80, 0x84.

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

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

  • 10 至 7F RFU

  • 为 PTS 保留

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

我预计会出现以下情况(伪表):

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

【问题讨论】:

    标签: javacard


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2014-04-11
      • 2012-02-15
      • 2018-01-19
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多