【问题标题】:ISO/IEC 7816 Data object and Structure Selection and EF StructuresISO/IEC 7816 数据对象和结构选择以及 EF 结构
【发布时间】:2016-02-19 10:22:07
【问题描述】:

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

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

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

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

模糊的一点是,据我所知,我可以在卡上选择的唯一内容是小程序,没有别的。对于小程序,我可以选择默认设置(这可以是上述选项的第一种方式,即隐式选择)或通过向带有 Applet AID 的卡发送 SELECT APDU 命令来选择它(上述任何方式均未提及)。

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

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

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

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

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

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

【问题讨论】:

    标签: smartcard javacard


    【解决方案1】:

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

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


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


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

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


    ISO/IEC 7816 是目前最差的标准之一。它确实没有说任何关于可选的东西,这可能会让你相信卡片确实应该实现任何东西。一些声称合规的卡,但只保留一开始就定义的 APDU 结构。许多卡片并没有实现所有功能,而且经常出错的卡片。

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

    这只是我的想法。

    基本上,标准更多的是一套通用做法。您可以将其用作创建自己的协议或标准的起点,但仅此而已。

    【讨论】:

    • 我能在任何地方收到的最佳答案,谢谢。
    • 那么,我可以使用小程序来实现 ISO7816-4 文件结构,对吧?反过来说,有没有办法在 ISO7816 文件结构智能卡上安装 Java 卡小程序?
    • 是的,您可以使用 Java Card 实现 ISO 7816-4 文件结构。如果您的最终目标只是基于文件的卡,您可能希望使用基于文件的操作系统而不是 Java Card。您不能在文件卡操作系统上安装 Java Card 小程序,但有混合 Java Card/基于文件的卡解决方案。显然,您需要 Java Card 运行时来安装 Java Card 小程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2015-09-03
    相关资源
    最近更新 更多