技术中心
 
 

动态多应用智能卡文件系统分析

   日期:2012-12-18     来源:互联网    
  引言
  
智能卡或称IC卡,英文名称为SMARTCard或IntegratedCircuitCard。它是由一个集成电路芯片嵌于塑料基片中封装而成。卡中的集成电路包括中央处理器(CPU),闪存(EEPROM)、随机存储器(RAM)、只读存储器(ROM)等[1]。动态多应用智能卡允许一张卡片上可以同时容纳多个应用,并且在不同的场合使用不同的应用,同时应用本身还可以根据需要随时下载到卡中或从卡中删除。这给供卡方、发卡方和持卡方都带来了好处。动态多应用智能卡将是智能卡未来发展的总趋势。

 1智能卡文件系统的设计模型

1.1文件的类型及组织结构
  
本系统遵守ISO/IEC781*标准所定义文件标准。根据标准,可以支持专用文件(DF)和基本文件(EF)两种文件。卡内的文件的逻辑组织结构由下列专用文件的结构化分级组成,在根处的DF称为主文件(MF)。该MF是必备的。其他DF是任选的。定义两种类型的EF:1)内部EF(KEF)。存储那些预期由卡解释的数据。如密钥。2)工作EF(WEF)。存储那些预期不由卡解释的数据。
 
EF结构有以下几种,
  
1)透明结构。指的是二进制的或杂乱无章的结构。换句话说,一个透明文件根本没有内部结构。该结构的文件可以通过使用偏移值进行读出和写入。READBINARY和UPDATEBINARY命令可用于这些方面。

2)记录结构。是基于链接固定长度的记录文件结构,这种结构的数据可以自由存储,存取的最小单位是一个记录。该操作系统支持线性定长记录结构,并且记录长度必须为4个字节的偶数倍数,并且小于一页大小,这样就防止一条记录跨页存储。

文件的逻辑组织结构如图1所示。文件系统是一个树型结构,根目录为MF。MF(主文件)是特殊的文件,是文件系统的根,在卡片中唯一存在,相当于DOS的根目录。EF(基本文件)建在DF下,存储应用的各种数据和管理信息。DF(专有文件)一般仅相当于DOS的子目录,但主文件MF的一个DF则代表了一个应用。MF下和应用的根DF下都有一KEF,用于存储密钥或PIN。MF下的DF中建立的EF和DF都只能由该应用使用,其他应用不能访问。

智能卡中的目录文件(MF和DF)仅由文件头标组成,EF文件是由文件头标和文件体两部分组成的。文件头中包含文件的标识、大小、访问权限和其他基本信息。文件头的长度是一定的。EF的文件体就是各种卡片应用所需的数据元。其大小是在文件创建时就确定的。

 1.2文件访问以及文件管理

  所有EF文件头中都含有属性字段,指明此文件的特殊信息。属性字段占两字节,字段中的每一比特位代表一种属性。它们在创建时确定,不允许更改。目前只使用了前三个比特位,分别是:

1)可删除属性。此属性位为1表示可以被删除,0表示不可被删除。

2)可写属性。此属性位为1表示可以被修改,0则表明此文件为只读文件。

3)可读属性。此属性位为1表明此文件可以被浏览,0表示不可以被浏览。

应用要对文件访问需要达到一定的安全状态。当该应用的进程现有状态满足所需要状态,并且符合和该文件的属性要求时,该进程才能访问文件。当前进程的安全状态是由其是否满足当前目录文件下的KEF中的相应密钥决定的。在MF下仅有DF(应用目录),没有EF文件,其KEF则只含有创建密钥,读密钥,删除密钥。而一般的KEF文件中含有四个密钥,分别是读密钥,写密钥,创建密钥,删除密钥。

为了方便文件管理,有一些典型变量要保存在RAM中,把这些变量封装成一个结构体CMB,放在进程的PCB中。一个CMB块包含如下变量:1)mfhead。此变量总指向最高层MF文件头地址。2)mfsecurity。此变量表明MF达到的安全状态。其初始值在进程建立时赋值。3)dfsecurity。此变量表明现行选择的DF达到的安全状态。其初值在进程建立时赋值。4)currentdf、currentwef。这两个变量分别为当前DF、当前WEF文件头地址。在进程时它们的值为NULL,在进程运行过程中由SELECT命令显式赋值。5)currentrecord_adr。此变量在当前WEF为记录结构时使用,它指向当前使用记录号,如为透明文件,无效地址。在进程建立或者重新选择WEF时,其值被赋为0。由记录结构WEF读、写命令更改。6)currentef_kef。此变量为当前DF下KEF文件头地址。当创建进程时,就会创建一个CMB块,其currentdf被赋为当时正在访问的DF,安全状态被赋为0。如果currentdf为0时,表示当前的工作目录为MF。

1.3EEPROM的划分该智能卡的EEPROM大小为256K,其中分为应用数据区(32K),应用代码去(160K),系统区(16K)以及交换区(48K)。

应用数据区存放着应用的配置数据,并且都是以文件的形式存储的。应用数据区的EEPROM是以页的形式动态分配给各个应用,每页大小为32字节。每个文件的页地址信息由文件分配表详细记录。应用代码区存放着应用的运行代码。应用代码区分为40块,每块大小为4K。块和应用是一一对应的关系,即每块对映一个应用。系统区:存放操作系统的信息以及用于管理应用及文件的一些系统表:应用使用表,文件分配表,文件打开表,数据区使用表。文件打开表是用来防止读写冲突的,当某文件正在被改写时,需要给该文件上锁,等对该文件操作完成后再对该文件解锁。

数据区使用表记录了应用数据文件在数据区的存储情况,当一个应用要访问某一个数据文件时,需要查看该表,检查该文件是否属于该应用,防止应用篡改其他应用的数据文件。操作系统的信息用超级块记录。交换区就是当内存不足时,使用交换区来扩充内存。

 2文件系统
  
2.1文件分配表该操作系统中,文件系统仅设计到应用数据区,和应用系统区以及应用代码去无关,所以文件系统占32K的EEPROM空间。数据区是以页的形式分配给文件的,每页大小是32字节,共设有1024页。存储在系统区的文件分配表占用1K空间。分配表如图2所示:该表一共有1024页(用十六进制表示),第1页代表数据区的前32个字节,以后依次类推。当表项为FFFF,表示文件结束。当记录为FFFE时,该页可用。每页的表项记录该文件下一页的页码。如图所示。该文件占用的页码分别是1,0xC,0xD,0x10,0x14。

  2.2文件管理的指令1)SELECTFILE(选择文件):建立文件成功后,才能进行文件选择,面向对象文件管理系统要求在文件被选中之后才可以进行存取处理。文件选择就是通知操作系统即将对哪个文件进行访问。新文件的成功选择将导致前面的选择无效。这就意味着在任何时候被选中的文件只有一个。该文件系统的支持根据文件的FID进行文件的选择。

2)CREATEFILE(创建文件):该命令允许在智能卡中建立EF、KEF、DF。在执行该命令之前,必须先达到特定的安全状态。在创建时,判断创建地址是否有效,即CMB块的相应地址。同时创建时会影响目录树的结构,可能需要修改其父亲节点或者其兄弟节点,因此要检测所影响的结点是否可以访问,如果需要修改的节点不可被访问,该命令则不能执行。对于EF和KEF,他们都拥有文件体,则根据其大小具体分配。在申请页面时,一次把所需要的页数全部分配给该文件,并且在文件分配表里建立好映像。然后文件系统再根据文件分配表,把文件体写入EEPROM中。

3)DELETEFILE(删除文件):是把指定的智能卡的文件从存储器中删除,其释放的存储空间由操作系统收回。文件系统的文件是存储在应用数据区,因此该命令的操作对象是数据区的文件,并不涉及其他存储区域的数据。MF为文件系统的根目录,是不可被删除的。

KEF为DF中的密钥文件,仅删除KEF会对其上层DF造成极大的安全隐患,因此不提供单纯的删除KEF操作,把该操作是嵌入在删除DF。该命令分为两类:删除DF和删除EF。删除DF函数仅删除没有子DF文件的DF文件,如果所删除的DF具有直接子DF文件(可以有EF文件),则DF不能直接删除,需要首先删除子DF文件,然后再使用本函数删除。该操作会影响其父亲节点或兄弟节点以及子EF节点,所以删除之前需要查看文件打开表,检查这些文件是否可以访问,如果有不可以访问的节点,则退出返回相应的错误信息。

当然执行该操作之前,必须达到一定的要求安全状态。删除EF时,操作对象是CMB块中的当前工作文件EF,因此要删除某EF之前需要先选择该文件。如果当前工作文件地址无效,则返回相应的错误信息。当然执行该操作之前,必须达到一定的要求安全状态并且该EF具有可删除属性。

4)VERIFY命令用来把传送给智能卡的秘密对象和所存储的基准值相比较,根据比较结果,改变CMB块中的安全状态。该操作系统的密钥存储在密钥文件KEF中,位于MF的KEF被用来作为智能卡中所有应用通用的密钥,如果是DF的KEF,则它仅可用于在DF内的有关应用,即应用的专用密钥。

该命令的操作对象默认为CMB块中指向的当前所使用密钥文件。一般的密钥文件含有四个密钥,分别是:

(1)浏览密钥:满足该密钥后,可以读该目录下的所有EF文件和子DF头标。

(2)更新密钥:满足该密钥后,可以在该目录下的所有EF文件中执行更新操作。

(3)删除密钥:满足该密钥后,可以在该目录下执行删除操作。

(4)创建操作:满足该密钥后,可以在该目录下执行删除操作。因此,verify函数就是判断其满足相应的密钥,然后改变CMB块中的安全状态,使其可以执行后需操作。

对于每一个密钥都有一个重试计数器。对于肯定的比较结果,它被赋予零,对于否定的比较结果,它增量1。如果重试计数器达到对大值,则绝对没有任何可能再进行对密钥的进一步比较。为了保证安全,先对计数器字段加一并写入到记录中。然后比较读出密钥和输入密钥是否匹配。匹配则将0写入到记录的计数器字段中,并将安全状态设置为OK结果状态。否则将安全状态设置为NOK结果状态,并返回允许尝试的剩余次数或记录被锁。

  3结论
  
本文研究并设计动态多应用智能卡文件系统。利用文件分配表为每个文件建立映像,利用CMB块进行文件管理,设置文件访问机制保证了每个应用的读写安全,最后详细设计文件操作命令,使得应用可以对文件进行建立,删除等操作。



 
标签: 智能卡 IC卡
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢