智能卡文件系统的设计模型及未来发展的总趋势分析

智能卡或称 ic 卡,英文名称为smart card 或 integrated circuitcard。它是由一个集成电路芯片嵌 于塑料基片中封装而成。卡中的集成电路包括中央处理器(cpu) ,闪存(eeprom)、随机存储器 (ram)、只读存储器(rom) 等[1]。动态多应用智能卡允许一张卡片上可以同时容纳多个应用,并且在 不同的场合使用不同的应用,同时应用本身还可以根据需要随时下载到卡中或从卡中删除。这给供卡 方、发卡方和持卡方都带来了好处。动态多应用智能卡将是智能卡未来发展的总趋势。
1 智能卡文件系统的设计模型 1.1 文件的类型及组织结构
本系统遵守iso/iec 781* 标准所定义文件标准。根据标准,可以支持专用文件(df)和基本 文件(ef)两种文件。卡内的文件的逻辑组织结构由下列专用文件的结构化分级组成,在根处的df 称为主文件(mf)。该mf 是必备的。其他df 是任选的。定义两种类型的ef:1)内部 ef(kef)。 存储那些预期由卡解释的数据。如密钥。2)工作ef(wef)。存储那些预期不由卡解释的数据。
ef 结构有以下几种,
1)透明结构。指的是二进制的或杂乱无章的结构。换句话说,一个透明文 件根本没有内部结构。该结构的文件可以通过使用偏移值进行读出和写入。read binary 和 update binary 命令可用于这些方面。
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.3 eeprom 的划分该智能卡的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)select file(选择文件):建立文件成功后,才能进行文件选择,面向对象文件管理系统要 求在文件被选中之后才可以进行存取处理。文件选择就是通知操作系统即将对哪个文件进行访问。新 文件的成功选择将导致前面的选择无效。这就意味着在任何时候被选中的文件只有一个。该文件系统 的支持根据文件的fid 进行文件的选择。
2)create file(创建文件):该命令允许在智能卡中建立ef、kef、df。在执行该命令之前, 必须先达到特定的安全状态。在创建时,判断创建地址是否有效,即cmb 块的相应地址。同时创建 时会影响目录树的结构,可能需要修改其父亲节点或者其兄弟节点,因此要检测所影响的结点是否可 以访问,如果需要修改的节点不可被访问,该命令则不能执行。对于ef 和kef,他们都拥有文件体, 则根据其大小具体分配。在申请页面时,一次把所需要的页数全部分配给该文件,并且在文件分配表 里建立好映像。然后文件系统再根据文件分配表,把文件体写入eeprom 中。
3)delete file(删除文件):是把指定的智能卡的文件从存储器中删除,其释放的存储空间由 操作系统收回。文件系统的文件是存储在应用数据区,因此该命令的操作对象是数据区的文件,并不 涉及其他存储区域的数据。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 块进行文件管理,设置文件访问机制保证了每个应用的读写安全,最后详细设计文件操作命令,使得 应用可以对文件进行建立,删除等操作

中国将加大数字加密货币跨境交易打击力度
风机类型中贯流风机五大特征
全自动鼻咽拭子采样机器人亮相服贸会
六角架构学的三个原则和技术2
外媒爆部分M1 MacBook用户经常遇见蓝牙断开问题
智能卡文件系统的设计模型及未来发展的总趋势分析
稳压二极管方面的基础知识
传感器原理及基础知识
酷冷至尊CK320新旗舰108 V2机械键盘评测 十分简约时尚的键盘新作
理想汽车累计交付量已经突破56万辆
联发科官网上线Helio P95页面 加入新一代AI处理器单元
使用STSW-BNRG-Mesh创建蓝牙网状网络解决方案
LED驱动电路原理图 驱动LED的三种方法
pcb在5G时代面临什么挑战
苹果掀起可携式CE风潮 带动IC制造产业技术加速前进
小米卢伟冰:Note 10手机需要上百颗芯片,全球缺芯至少还有一年才能缓解
超声换能器电参数测试要点说明
中科院:已启动处理器芯片等“卡脖子”领域研究
变压器变比测试仪的作用意义
Python函数形参的分类