明文件。当读取或更新文件时,字节序列可以通过相对地址(偏移)来引用,相对地址指示 出了起始字节的位置和要被读取或更新的字节数。循环记录文件为具有固定长度记录的环形 135 文件。固定记录长度是指循环记录文件的组织形式,环形表示了循环记录文件可以无限次更 新,当更新至最后一条时,它的下一条记录便回到了第一条,又继续开始更新,这样便可以 无限次更新。循环记录文件的更新方式有以下三种:更新下一条,更新上一条,更新当前条。 参数P2 指示了更新采用的方式,02 表示更新下一条,03 表示更新上一条,04 表示更新当 前条。线性定长记录文件为具有固定长度记录的文件。线性定长记录文件在组织形式上类似 140 于循环记录文件,在更新时也有更新下一条,更新上一条,更新当前条三种方式,区别在于 线性定长记录文件在更新至最后一条后,在不能更新下一条,即它不能像循环记录文件那样 又从第一条开始更新。 总之,UICC 平台是一个多应用的平台,其文件系统中包含了ADF,即应用专有文件, 这使得UICC 的多应用更加灵活,并且也为其与Java 卡的结合提供了良好的前提条件。 145 3 Java 智能卡的设计 由上可知,将UICC 平台应用于Java 卡的设计能更好的发挥Java 卡多应用的特点。本 文所设计的Java 卡采用分层模型,从下到上共分为四层,依次为硬件抽象层、Java 核心单 元层、应用管理层、USIM 应用层。硬件抽象层包含智能卡安全控制器的各自组件的所有必 要的驱动,访问易失性与非易失性内存,I/O 字符通讯;Java 核心单元层处于硬件抽象层之 150 上, 该层包含了Java 卡虚拟机、Java 卡运行环境、Java 卡API、异常管理、防火墙、空间 管理、逻辑通道、连接器、APDU 通讯,复位应答、垃圾回收和安全备份还原;应用管理层 由遵循GP2.1.1 规范的卡片管理器对卡上的应用执行安全管理;USIM 应用层主要包括:特 定的指令和参数;文件结构和文件内容;安全功能;UICC(USIM)和ME 之间所使用的应 用协议等。下图为Java 卡的设计图。 155 图2 Java 卡设计图 以下分别就各个层次进行详细说明: 3.1 硬件抽象层 160 硬件抽象层处于Java 智能卡的最底层,包含智能卡控制器各个组件的所必需的驱动。 硬件抽象层为Java 内核子系统(TOE)提供了访问芯片硬件的统一接口方法,并且是唯一 的访问通道。硬件抽象层包括的子模块有启动模块、通讯管理模块、内存管理模块及硬件安 全模块。 智能卡最基本的功能是复位,与复位有关的模块包括启动模块和通讯管理模块。芯片复 165 位向量指向的第一个程序就是启动模块,它的主要任务是负责芯片程序引导准备工作和TOE 启动初始化控制,其功能包括程序堆栈管理、功能寄存器复位、 RAM 初始化、硬件中断控 制逻辑初始化。如果外部发出“复位”信号,芯片首先调用启动模块程序,将复位应答传输 给终端,在这个传输过程中就用到了通讯管理模块。通讯管理模块负责T=0 协议[12]的字符 接收与发送,提供字符传输协议的解析与执行,复位应答也是通过通讯管理模块传输给终端 170 的。通讯管理模块主要提供ISO 7816-3 T=0 协议的字符传输驱动功能函数,如位时序、工 作时间等待、字符奇偶校验、错误重发等。此外,通讯管理模块还兼顾管理与之相关的硬件 中断结构、定时器以及芯片工作模式等功能。 硬件抽象层的另外一个重要功能就是对智能卡的内存进行管理并对其安全负责。内存管 理模块负责智能卡内存管理,提供给外界一套访问存储空间的标准接口。内存管理模块将芯 175 片内存物理空间统一逻辑编址,采用内存映射的方式,将64K 空间逻辑编址为0x0000- 0xFFFF,即内存的逻辑首地址为0x0000。此外,内存管理模块提供了一种令牌验证机制, 当 FLASH 编程函数接受到 FLASH 编程任务时,首先判断目的地址是否授权操作,如果输 入地址在禁止操作空间,则自动跳到异常处理程序,确保每次 FLASH 编程的安全性。提到 安全性,硬件抽象层为智能卡安全提供了专门的模块(硬件安全模块)来负责智能卡安全, 180 它为Java 卡提供一系列硬件安全保护机制。如监测物理环境(时钟、电压)的安全传感器、 真随机数发生器、DES 硬件加密算法器等。此外,硬件安全模块还负责随机数生成器,DES 运算器,电压/频率检测,加密存储控制,安全计数器控制等安全功能。 3.2 Java 核心单元层 Java 核心单元层是整个Java 卡的核心层,其首要任务是TOE 启动,在启动期间,TOE 185 被设置成安全状态,进行TOE 初始化、系统自检、生成随机数种子等工作。其次,该层使 用T=0 协议进行APDU 命令接收与响应,命令分析调度与执行。此外,Java 核心单元层也 管理TOE 安全机制(例如:访问条件、密钥管理、加密方法),负责使用安全的方法处理 敏感数据(例如:CHV,ADM,密钥),所使用到的安全方法包括采取必要措施防止攻击, 使用未被损坏的数据,管理重试计数器等。 190 说道安全机制,就不得不提防火墙,Java 卡的特点之一就是支持多应用,即许多来自不 同供应商的不同的小应用程序可以在同一张卡片上安全地共存,为了达到这个目的,Java 核心单元层为Java 卡上的小应用运行提供了一种防火墙机制。每个小应用程序被指派给一 个执行上下文(context),这个上下文控制到分配给它的对象的访问。一个执行上下文和另 一个执行上下文之间的界限就是所谓的防火墙( applet firewall)。以上是Java 核心单元层的核 195 心功能,包括TOE 启动、APDU 命令接收与响应和安全机制。从模块来划分,Java 核心单 元层的子模块包括虚拟机模块、JAVACARD API、防火墙模块、连接器模块、逻辑通道模 块、主模块、APDU 模块、复位模块、垃圾回收模块、空间管理模块和安全备份模块。下图 为Java 核心单元层各个子模块之间的关系图。 200 图3 Java 核心单元层模块关系图 由上图可知,核心单元层所涉及的第一个模块是启动模块,即子模块中的主模块。主模 块负责TOE 运行初始化、复位应答、APDU 命令数据接收与响应,命令调度处理等功能。 主模块是TOE 运行管理的调度中心,从工作流程上看,可以分成三个步骤:TOE 初始化、 205 TOE 安全复位、TOE 运行。TOE 初始化负责TOE 上电初始化工作,如硬件环境的初始化(芯 片中断环境、芯片通讯装置、芯片时钟环境等)和硬件安全模块初始化(初始化随机数发生 器、初始化加密算法安全环境、设置电压/频率检测等)。TOE 初始化调用硬件抽象层子系 统的启动模块与硬件安全模块协同完成任务。TOE 安全复位负责TOE 上电复位过程的管理, 包括ATR 复位信息发送、TOE 自检以及数据安全还原等任务。TOE 安全复位调用内核子系 210 统的复位模块协同完成任务。复位模块的主要任务是管理卡片的复位应答过程所有事务。在 复位应答期间,完成了TOE 安全自检、FDN/BDN 机制处理、用户数据安全还原、FCI 信息 组织、发送ATR 等功能。复位应答消息ATR 是卡片每次上电后都必须发出的信息,用于通 知终端通讯协议及参数、芯片配置、TOE 版本、发行商信息、TOE 状态信息、审计信息等。 TOE 运行负责TOE 安全复位后的全部运行,包括APDU 命令接收、解析、执行与应答。TOE 215 运行通过调用APDU 模块与命令调度模块来协同指挥其它各个模块协同工作。 在主模块之后,卡片正常复位,进入运行阶段,就涉及到了APDU 模块。APDU 模块 的任务是管理卡片和ME 的APDU 数据通讯逻辑,如接收APDU 命令和发送APDU 应答消 息。APDU 模块包括四个功能子模块:PTS 协商模块,命令情况处理模块、APDU 接收模块、 APDU 响应模块。PTS 协商模块用于处理智能卡复位上电时,通讯波特率参数的协商事务, 220 以决定智能卡后续的通讯速率;命令情况处理模块用于协调四种APDU 情况的数据传输过 程;APDU 接收模块用于处理接收终端发送的APDU 命令头及数据域;APDU 响应模块用 于处理向终端发送APDU 响应数据及状态码。APDU 的命令及响应格式可参考下图[13]: 命令头字段 命令体字段 CLA INS P1 P2 LC DATA LE 第一部分:强制字段 第二部分:可选字段 DATA SW1 SW2 225 第一部分:可选字段 第二部分:强制字段 图4 APDU 命令与响应格式示意图 与APDU 模块相关的子模块包括虚拟机模块、连接器模块和API 模块。虚拟机模块, 又称字节码解释器,提供了对应用的字节码解释执行的功能。虚拟机模块只支持 Java 编程 230 语言的有限子集,不支持动态类加载、安全管理器(Java.lang.SecurityManager)、线程、对 象克隆和软件包访问控制的某些方面,但是保留了许多熟悉的特性,包括对象、继承、软件 包、动态对象创建、虚拟方法、接口和异常。连接器模块的功能是将Java 语言编程得到的.class 文件转化为虚拟机可执行的.cap 文件。虚拟机本身并不提供加载和转换cap 文件的功能,因 此,在class 文件和cap 文件之间就需要连接器模块。API 模块主要是提供了许多函数接口, 235 以供高层调用完成相关功能。 对核心单元层各个功能进行管理的模块包括异常管理模块、垃圾回收模块和空间管理模 块。异常管理模块主要是对卡片异常进行管理,功能包括管理JCRE 自有的异常、抛出异常、 处理异常,与虚拟机交互。异常的捕获和处理由虚拟机自动执行,但是异常并不是在捕获后 即时处理的,真正处理这些异常的是本地方法,它将停止应用的继续执行。垃圾回收模块的 240 任务主要是当对象、应用实例或包被删除后负责回收空间,以备新对象使用。对象回收由一 个应用发起,回收不会发起后马上执行,但将在下条指令执行前完成;应用回收成功执行之 后,该应用不可再被选择,应用曾经占有的数据空间可被再次使用,应用实例的ID 可被再 次分配;包的回收同应用的回收类似,回收后包曾经占用的空间可被再次利用。对卡片的空 间进行管理的是空间管理模块,其主要功能是对智能卡的资源进行管理,为卡片中的Java 245 对象的建立,文件系统的建立提供资源查找、整理和分配的服务。卡片空间在卡内是格式化 存放的,格式化后的空间将被用来建立对象和文件。当所有的空间都被使用时,第一个自由 学术论文网Tag:代写论文 论文发表 计算机论文 代写毕业设计 代发论文 信息系统论文 |