欢迎访问ic37.com |
会员登录 免费注册
发布采购

智能卡EF的结构

日期:2008-11-18 (来源:互联网)

与DOS系统里的文件相反,在智能卡里BF具有其内部结构。每一个FF的结构可根据预定的用途来选择。这对 外部世界来说是一个很大的优点,因为这些内部结构使得所构造的数据元可访问得迅速而直接。BF结构的分 类如图1所示。

图1 智能卡操作系统BF文件结构的分类

在智能卡里这些数据结构的管理需要非常大量的程序代码。这就是数据结构相互都不对称,而宁可以其经 常实际需要的形式出现的原因。 ̄

1.透明文件结构

透明数据结构经常指的是二进制的或杂乱无章的结构;换句话说,一个透明文件根本就没有内部结构。包 括在文件里的数据可以字节或字组的方式通过使用区距值来读出或写入。READ BINARY,WRITE BINARY,和 UPDATE BINARY等命令可用于这些方面。

最小的具有透明结构的文件是一字节。在任何标准中都没有明确地规定最大的文件空间。然而,把以短格 式(256)或长格式(65 536)的最大可读字节量与最大的区距值结合起来,得到最大的容量分别是65 791 字节或98 303字节。这些数字很容易产生对目前智能卡可用的存储器大小的错觉。实际上,透明文件极少大 过几百个字节。图2说明了透明文件结构的构造。例如,从一个10字节长的文件中使用3个字节的区距值来读 出5字节,其存取的处理,如图3所示。

图2 透明文件结构

图3 用3字节的区距从透明文件中读取5字节

这种文件结构主要用于那些没有内部结构的数据。或者是非常少量的数据。比较典型的例子就是存储一张 可以由终端从智能卡读出的数字化的护照照片。然而,如果需要的话。这种直线的、一维的数据结构可以用 来模拟其他数据结构。当然,这种情况下,终端的存取操作将以更复杂的形式进行,因为在文件本身里必须 存储一些有关文件结构的参数值。

2,线性固定文件结构

线性固定文件结构是基于链接固定长度的记录的文件结构。一个记录由一串单独的字节组成。这种数据结 构里的单独记录可以自由存取。存取的最小单位是一个记录,也就是说不可能只存取记录的一部分。READ RECORD,WRITE RECORD和UPDATE RECORD命令就可以用于这种数据结构的文件的读出和写入。

第1个记录永远编号为记录1,最大允许的记录编号为“FE”,或用十进制表示为254,因为“FF”被保留做 未来扩充之用。单个记录的长度由访问命令确定,其范围可由1~254字节。然而,在文件内的所有记录必须 具有相同的长度。图4说明了线性固定文件结构的构造。

图4 线性固定文件结构

这种数据结构的一个典型应用是电话号码簿,其中首先是名字,接着是在固定位置的相关的电话号码。

3,线性可变文件结构

在线性固定文件结构中所有记录的长度都必须一致的事实,意味着使用此种结构时存储空间经常被浪费, 因为很多面向记录的数据的长度是可变的。例如,在电话号码簿中的名字就不是等长的。减小存储空间占用 量的挑战被线性可变结构满足了,其中每个记录可以有单独规定的长度,无可回避的结果是,在每个记录中 必须有一个含有其长度信息的补充字段。从图5就可以看出其结构不同于线性固定结构。

图5 线性可变文件结构

第1个记录的编号为1,文件的最大长度为254个记录,各个记录的长度由访问命令决定,其范围可由1~254 字节。对此结构的访问命令和线性固定结构是一样的,即READ RECORD,WRITE RECORD和UPDATE RECORD。

这种文件结构更适合用于记录长度变化较大的存储以及要节省智能卡存储器的记录。例如,前述电话簿就可优化得使每一记录的长度准确地和它所包含的条目一致,这就是说记录的长度都不是一样的。然而,管理这样的文件结构需要智能卡操作系统中的程序代码以及额外的存储器以存储记录长度数据。因此之故,对于只有小量存储器的微控制器的操作系统常常不提供这种文件结构。为了相容性,ISO/IEC 7816-4标准在一些协议子集里明确地允许这种局限性。

4.循环文件结构

循环文件结构立足于线性固定文件结构的基础之上。因而,它是由一些具有相同长度的记录所组成。另外,EF里含有一个指针,它总是指向最后一个写入的记录。这个记录总是编号为记录1。如果指针达到EF中最后一个记录。当下一个写访问发生时,将由操作系统自动把指针设置到指向第1个记录。它运行起来就类似时钟的时针一样。

图6 循环文件结构

如果循环文件包含n个记录,最后一个被写入的记录就是1号,在这个之前刚写人的记录为2号,而最早的记录为n号。这种文件结构也可像其他两种面向记录的文件结构那样按第1个,最后1个,下1个或前1个记录来寻址访问

记录的编号和大小完全与线性固定的结构相似。由于写命令和读命令的限制,可以创建的最大记录数为254个,每个记录的最大长度为254字节,这种结构最典型的使用是智能卡里的记录文件。在这种文件里,最老的记录项总是被一个新的记录项重新写入。

5.执行文件结构

“执行”结构原则上不是一种单独的结构,因为它建立于透明文件结构之上,在EN 7826-3标准中对它有所描述并提供了在操作系统里大量扩展的可能性。执行结构并不打算用来存储数据,而只是用于存储可执行的程序代码。具有执行结构的文件可以用与透明文件相同的命令来进行存取处理。当然,这种结构建立了一种“后门”,因为编写这样的文件的任何一个人都可以把自己的程序代码下载到卡里,包括可能的特洛伊木马(Trojan horses)。

使用UPDATE BINARY命令的最大程序空间与最大的透明文件的空间一样大,即不用区距的寻址是65 791字节,用区距的寻址是98 303字节。虽然,没有规定内部数据结构,但文件里的程序代码确实可以引进内部数据结构,所以可执行程序能在执行文件内部定义它自己的数据区并在内部访问这些数据。

6,数据库文件结构

ISO/IEC 7816-7标准为智能卡定义了一个SQL的子集称之为结构化卡查询问语言SCQL(Structured card Query language),以便在智能卡文件系统中存储的数据可由SCQL命令读出,这就必须提供一种适当的文件结构。这种结构格式不是标准化的,相反,把它的设计留给了各个操作系统的制作者。数据库文件存储真正有用的数据,数据库的不同的‘景象’(view),访问杈限和用户协议子集。

7,数据对象文件结构

ISO/IEC 7816-7中命令PUT DATA和GET DATA是用来把TLV编码的数据对象存入智能卡里并把以这种方式存储的对象读出来。这些命令的实现既可以完全独立于文件管理系统,也可以在文件管理系统之内用一个特殊的结构来存储数据对象。如果是在文件管理系统之内实现,稍做修改的透明的或线性定长的文件可以被用作数据对象的存储位置。在这种情况下,PUT DATA和GET DATA命令可经文件管理系统来访问这些修改了的文件结构。

8.进程控制文件结构

如果一个智能卡操作系统对命令序列有一进程控制器,那么可以被接受命令的相关信息必须存在存储器里。通常采用特别适用于这种任务的文件结构来完成。然而,这种文件结构不是标准化的,毫无例外,每一个具有进程控制的操作系统都具有各自的格式,它与其他操作系统的格式并不兼容。

欢迎转载,信息来源ic37网(www.ic37.com)