gpt4 book ai didi

smartcard - ISO/IEC 7816 数据对象和结构选择以及 EF 结构

转载 作者:行者123 更新时间:2023-12-03 02:06:34 25 4
gpt4 key购买 nike

我刚刚正在阅读 ISO/IEC 7816 第 4 部分标准。不幸的是,其中对我来说有一些模糊的地方,我希望我能在这里得到答案。

第一个模糊点是关于数据对象的。数据对象被定义为Simple-TLVBer-TLV类别,并对这些类别有一些描述。但是数据对象本身是什么?是我们存储在卡上的数据吗?如果是这样,据我所知,我们将数据存储在小程序的不同字段中,并且我们不考虑它们的任何 BER-TLVSimple-TLV 类别!它们只是一系列十六进制数字。

第二个模糊点是关于结构选择部分。我们定义了以下五种不同的方式:

  1. 重置后隐式执行。
  2. 通过 DF 名称显式选择
  3. 通过文件标识符显式选择
  4. 通过路径显式选择
  5. 通过短 EF 标识符显式选择

模糊的一点是,据我所知,我在卡上唯一可以选择的就是小程序,没有其他任何东西。对于小程序,我可以选择默认值(这可以是上述选项的第一种方式,即隐式选择),或者通过使用小程序 AID 向卡发送 SELECT APDU 命令来选择它(上面没有提到任何一种方式)。

那么这些结构选择方法是什么?

第三个模糊点是EF 结构。定义EF-s可以有以下五种结构:

  1. 透明结构
  2. 具有固定大小记录的线性结构
  3. 具有可变大小记录的线性结构
  4. 具有固定大小记录的循环结构(箭头引用最近写入的记录)
  5. TLV 结构

问题又来了,这些结构是用来做什么的?这是数据在内存中存储的方式吗?如果是这样,为什么它们是在标准中定义的,而它们是关于卡的内部行为的?程序员需要了解它们吗?他/她可以检测/更改他/她的卡所使用的EF结构吗?

最后,所有符合 ISO 7816-4 标准的卡是否都支持上述所有项目(因为我在 ISO 7816-4 中找不到任何提及它们是可选的或其他内容)?

所有符合 ISO 7816-4 标准的卡都需要支持本部分标准中定义的 APDU 命令吗?

最佳答案

首先,ISO/IEC 7816-4 描述了基于文件的卡。基于文件的卡可以有不同的应用程序(使用“按名称选择”进行选择)。然而,最好将这些应用程序视为基于文件的操作系统中的不同数据结构和对象。这些应用程序不提供与 Java Card 小程序不同的功能

7816-3 尤其是 4 还描述了通用半双工命令/响应 APDU 格式,这是卡兼容 7816-4 的最低要求。 Java Card 使用 APDU 格式,但它不包括模拟基于文件的卡的功能。您必须自己实现它(当然,或者从某个地方复制它)。

<小时/>

数据对象是具有类型(由标签描述)、大小(或长度)和值:TLV 的对象。在 7816-4 中,卡中和传输中的对象都可以存在。最终你只对输入输出感兴趣;您如何解释、存储或生成它们并不重要。

<小时/>

支持哪些文件选择和结构取决于卡的制造商。一般来说,基于文件的卡需要支持所有选择方法,但这对于 Java Card 实现来说还不是很清楚。许多 Java Card 小程序不支持 SELECT by PATH。一般来说,在 Java Card 上按 PATH 进行 SELECT 很麻烦,因为它不由操作系统处理,也不能由 Applet 处理(因为 Applet 实例不能只选择另一个 Applet 实例)。

是的,文件结构对外部用户是可见的。实现什么取决于。同样,基于文件的卡可能支持所有内容。例如。当您需要在卡上存储记录时,循环结构非常有用。不过,有限的内存可能会提示您删除最旧的记录。例如,您可以想象它用于数字行车记录仪卡。记录可以使用 7816 兼容的 SQL 类命令进行搜索。

<小时/>

ISO/IEC 7816 是最糟糕的标准之一。它确实没有提及任何关于可选的内容,这可能会让您相信卡片确实应该实现一切。然而,一些声称合规的卡只保留在开始时定义的 APDU 结构。许多卡并没有实现所有功能,而那些实现了功能的卡常常会出错。

  • 该标准不是模块化的,因此无法检查哪些功能受支持;
  • 状态词已定义,但它们仅包含错误的内存和语法原因;
  • 不清楚命令可以返回哪些错误,也不清楚需要按什么顺序处理错误;
  • 该标准不符合 ISO/OSI 层结构,应用程序层和(安全)传输层混合在一起;
  • Ne 有两种定义,一种是通用的最大响应大小,另一种是 READ BINARY;
  • 未明确指定文件结尾检测;
  • 即使是标准制定者,仍然对扩展长度 APDU 存在误解;
  • 许多命令尚未完全指定,包括例如创建文件;
  • 有许多已弃用的命令,例如 WRITE FILE。

这就是我的想法。

基本上,该标准更多的是一组通用实践。您可以使用它作为创建自己的协议(protocol)或标准的起点,仅此而已。

关于smartcard - ISO/IEC 7816 数据对象和结构选择以及 EF 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486764/

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