gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:22:36 27 4
gpt4 key购买 nike

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

如果阅读RFC 5.4.1 Class byte

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 标志用于指示,但具体是什么?因为,表格和描述对于初学者来说是相当困难的,据我所知,通常使用接下来的CLA字节:0x00,0x80,0x84。

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

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

  • 10 至 7F RFU

  • 为 PTS 保留

我明白,为了精细开发 - 我应该阅读 GlobalPlatform 规范、有关确切卡的规范(我的是 NXP one )和其他相关 Material ,但我想承认,它是内容难以理解。

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

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

最佳答案

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

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

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

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

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

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

关于javacard - JavaCard 中的类字节到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com