郭剑岚 陈俞强 郭鸿志
1东莞职业技术学院计算机工程系 广东 523808
2广东工业大学计算机学院 广东 510006
本文主要阐述了智能卡COS的体系结构、基本功能模块和工作原理等内容,同时对智能卡命令系统的相关理论作了着重阐述,包括了命令特征分析、命令分类方法、命令系统模型和开发方法的探讨等。接着用特殊应用的命令设计与实现来举例说明,以此验证理论的正确与否。
COS直接运行于芯片平台上,是智能卡内软件的核心部分,也是卡片所支持全部应用的基础。COS的主要任务是从智能卡传出和传入数据、控制命令的执行、管理文件、维护内存空间、管理和执行加密算法、执行应用代码。因此,可以将智能卡COS的体系结构模型划分为COS内核层和应用层两大部分(如图1所示)。
图1 智能卡COS体系结构模型
根据智能卡COS的体系结构模型,可以得到COS内核的逻辑功能模块主要分为四大部分:通信管理模块、文件系统模块、安全控制模块和命令解释模块。下面分别论述各个模块的具体功能。
通信管理模块主要是依据智能卡所使用的信息传输协议,对由读写设备发出的命令进行接收,同时把对命令的响应按照传输协议的格式发送出去。通信管理模块确保智能卡与终端的信息传输正确无误,保证双方对传输的信息解析具有一致性。整个通信过程中需要处理ATR的发送、通信参数的PPS协商、APDU报文格式和具体的通信协议T=0或T=1协议等几个重要的问题。
文件系统是COS的重要模块之一,它负责组织、管理和维护智能卡内存储的所有的数据。智能卡上的数据或应用是以文件的形式存放在FLASH或EEPROM等存储介质中的,COS通过对智能卡内的文件系统的管理和组织来实现对数据信息和应用的存储和管理。
安全控制模块是智能卡COS中最为核心的模块,它对智能卡内数据提供安全保障,同时也对外提供安全定义。在智能卡中,COS安全模块的内容主要包括加密算法的实现、系统的安全服务和安全控制策略的实现。它涉及到卡的鉴权与验证方式的选择,包括COS在对卡中文件进行访问时的权限控制机制,还关系到卡中信息的保密机制。
命令解释模块是芯片操作系统的重要组成部分,它负责解析卡片与终端之间交互的信息指令,并作相应的处理。命令是卡片和外界交互的基础,命令处理是COS的主要职能,它也是系统代码和应用代码之间的重要接口。终端和卡片之间的通信过程都是基于命令响应的方式处理的,COS利用IO接口接受命令报文,通过命令解释器来解释报文内容,并进行相应的处理,最终通过IO接口返回响应状态和响应数据。
COS命令解释的调度流程包括外部命令的接受,命令处理流程的启动以及命令响应数据和状态的送回。其中,APDU命令报文的接收是按照CLA、INS、P1、P2、P3、DATA数据域的顺序依次接收,并将接收结果保存在命令缓冲区的相应字段中。若数据接收失败,则命令报文的输入中断退出。不同的命令具有惟一的指令代码INS,COS主守护流程根据终端发出的APDU命令的INS,跳转到相应的命令处理模块中进行处理。在命令解释模块中,不仅要对相应的命令的参数P1、P2、P3进行严格检查,还应对命令的执行的安全条件进行检测。
传统的COS各模块之间的调度关系一般采用层次调度关系,COS中所有从文件系统中到终端的数据都需要经过安全模块的处理,包括数据的加解密,对文件访问是否符合当前的安全条件,命令的执行操作是否在安全环境中。
改进的COS各模块之间的调用关系采用与层次结构相似的调度方式,但与传统的调用方式相比,具有更高的效率。改进的调用方式主要体现在安全控制模块的设置上(如图2所示)。
改进的COS模块调用方式中,不是所有信息都需要进行安全处理,例如连续对同一文件进行访问时就不需要重复进行安全处理,而是根据命令的类别来进行适当的安全处理。这样节省了系统开销,提高了系统的效率。
图2 改进COS模块关系
功能层各模块之间的关系为程序调度请求和数据响应关系,模块的输出为程序调度请求,输入为调度后得到的数据响应,调度和响应均以事务来表示,而事务表示一组数据以及在数据上的一组操作。图3表示了改进COS模块调用方式中模块的调度关系和状态转换,表1列出了模块状态转换及调度关系。
图3 模块状态转换及调度关系图
表1 模块状态转换及调度关系表
由于互联网的迅速发展和普及,人们对网上身份认证的要求也越来越高,PKI体系成了解决Internet的安全问题的最优解决方案。IC卡由于体积小、安全性高、携带方便等特点而被迅速引入到PKI体系结构中来,成为了目前PKI体系最佳的支持平台。智能卡通过实现非对称加密算法,成为一张PKI卡。由于密钥在卡内生成,加解密工作在卡内完成,不会以明文形式出现,同时与PIN结合,可防止盗用,加上数据可长期保存以及便于携带和操作等特点,因而它可以成为数字签名的理想载体。
智能卡在PKI中主要工作为:数字签名和签名验证、加解密运算操作、证书和密钥的存储、证书的解析等。与PKI应用相关的智能卡常用命令是以ISO/IEC7816-8规范为基础上建立的,归纳如表2所示。
下面选取ENCRYPT命令作详细说明。ENCRYPT命令功能主要用于对数据进行非对称算法(RSA算法)的加密计算,输入的是加密前的明文、密钥,输出的是加密后的密文,在执行本命令之前先执行MANAGE SECURITY ENVIRONMENT命令。加密算法在此处选用RSA算法,编码格式为RSAESPKCS1-V1_5。该命令报文结构如表3所示。
表2 PKI应用相关命令
表3 数据加密命令报文
该命令实现的伪代码如下:
STATUS pki_Encrpyt()
{ readUART(DAT,LEN); //将明文内容放在DAT缓冲区中
if(TRUE == CheckSecCond()&& TRUE ==CheckP1P2())
{//检测安全操作条件和参数P1P2
GetKey(); //从卡中获取RSA密钥
PKCS_1V5_ENCODE(DAT,LEN); //对原始数据进行PKCS1-V1_5编码
Encrypt(data_encode,KEY); //进行加密运算
return SW9FXX; //返回状态,有xx字节长度的密文数据需要取出
} else
return ERROR; } //返回错误状态
为了加强密钥计算的安全性和数据保密性,一般运算需要对原始报文按照一定格式进行编码,实际运算是对编码以后数据的运算。此处采用的编码格式为RSAES-PKCS1-V1_5编码格式,详细编码格式和加密流程参照PKCS#1和PKCS#11规范。
[1]夏志远.智能卡操作系统的研究与实现[D].湖北:华中科技大学图书馆.2006.
[2]ISO7816-4.Organization.security and commands for interchange[S].2002.
[3]李翔.智能卡研发技术与工程实践[M].北京:人民邮电出版社.2003.
[4]黄健.智能卡COS的研究与设计[D].广东:广东工业大学图书馆.2008.
[5]刘玉珍,涂航,张焕国.实用智能卡操作系统的设计与实现[J].武汉大学学报(自然科学版).2000.
[6]张鲁国,马自堂.智能卡操作系统中存储管理设计[J].微计算机信息.2005.
[7]邵华,王恒奎,王东琳.基于UML建模语言的开放式智能卡应用模型[J].计算机工程.2004.