双界面智能卡操作系统的设计与测试
文章出处:http://www.nexussmartsolutions.com 作者: 人气: 发表时间:2011年12月11日
摘要:本文提出了双界面智能卡操作系统的设计方案以及测试方案。设计方案主要阐述了COS功能模块的划分,以及各个模块的功能和实现
方法。测试方案包括测试中软硬件环境的选择,以及测试脚本需要覆盖的内容。目前已将开发成果应用于实际中。
1. 引 言
智能卡(smart card又称集成电路卡)将一个集成电路芯片镶嵌于塑料基片中,封装成卡的形式,其外形与覆盖磁条的磁卡相似。
笔者在利用北京市嵌入式系统重点实验室生产的智能卡进行符合中国人民银行金融卡规范的BES COS开发过程中,针对该款芯片的硬件特性进行了COS的设计与实现,并根据规范设计了测试用例,完成了测试。
2. 智能卡硬件概述
BES1332EF是一款基于8051的双界面智能卡芯片。非接触式接口支持ISO 14443 TYPE A协议,接触式接口支持ISO/IEC7816 T=0协议。有8K的ROM,32K的EFLASH,1K的RAM,硬件随机数发生器,CRC模块以及DES模块。
3. 智能卡操作系统
智能卡操作系统是一个专用系统,和传统意义上的操作系统有很大的差别,它更类似于一个监控程序。COS主要包含通信、命令解释、文件系统以及安全四个模块。
3.1通信模块
传输管理器负责智能卡和接口设备之间的数据通信,接收过程中要处理对输入数据的缓冲,响应过程控制数据的发送。通信使用的协议是ISO7816-3 所规定的T=0 的异步半双工字符传输协议。来源一卡通世界。当接口设备给卡上电之后,首先由卡发送一个复位应答信息(ATR)给接口设备,然后接口设备发送命令头来启动命令处理过程。传输管理器在正确地接收到命令后交给下一个功能模块进行处理,昀后还要把该命令的执行结果返回给接口设备。
3.2命令解释模块
命令解释器对外部输入的每条命令做语法分析,分析和检查命令参数是否正确,然后根据命令参数的含义执行相应的功能模块。如果发现参数有错,将从该模块直接返回错误信息。
3.3文件系统
主控文件(Master File , MF)。主控文件是整个文件系统的根(可看做根目录),每张卡有且只有一个主控文件。专用文件(Dedicated File,DF)。在MF下针对不同的应用建立起来的一种文件,是位于MF之下的含有EF的一种文件结构(可看做文件目录),它存储了某个应用的全部数据以及与应用操作相关的安全数据。基本文件(Elementary File,EF)。基本文件存储了各种应用的数据和管理信息,它存在于 MF和DF下。
3.4安全模块
安全模块主要分成两个部分。第一部分就是用于数据加密、校验等的基础功能模块。包括随机数产生、3DES加密、MAC计算模块、 CRC计算模块等。第二部分是文件的权限控制模块。在BES COS中, MF、DF和EF的文件头中保存着一个权限范围,而系统在某一时刻都有着当前的权限值,如果权限值在权限范围中,则可以进行相应操作,否则,则需要外部认证等手段改变系统当前的权限值。
4. 智能卡的测试
4.1测试环境
智能卡的测试主要分两个部分,一是硬件测试,二是软件测试。从硬件测试的层面来说,选取一个功能强的专用于测试读卡器是十分必要的。比如在IC卡的7816通信接口还没有完全实现的时候,通过普通的读卡器对卡片进行操作,返回值在读卡器这边是无法看到的,因为大多数读卡器屏蔽了不符合7816的TPDU规定的数据,而如果每次都用示波器观察硬件信号的话,效率又比较低。所以应该尽量选择可以看到底层交互数据的读卡器。
从软件测试的层面来说,选取一个对上层提供了友好的接口的读卡器也是十分必要的。例如我在开发BES COS时使用的读卡器 Collis,提供了与其配套的脚本开发环境Collis Conclusion,可以方便的设置读卡器的电压,频率,等待超时时间等。还提供了设定期望返回值的功能。
4.2测试脚本
测试脚本主要分为功能正确情况测试,功能异常情况测试,参数测试,安全机制测试以及应用流程测试。
功能正确情况测试是指在输入的参数都合法,执行的条件都具备,所执行的命令应该可以正常执行的情况下,检查所测命令是否能够正确执行涉及的功能步骤。功能异常情况测试是指在输入的参数都合法,但执行的条件不具备,检测COS是否都返回了相应的错误代码。参数测试是指,固定所测命令参数P1、P2、Lc和数据与正确且不变的情况下,利用穷举法便利每一个错误的CLA作为输入参数,测试COS是否都能正确响应错误代码,其他的参数测试同理。安全机制测试是指在操作一个基本文件时,该文件可能有一个或者多个安全控制机制。应用流程测试,是指将命令组合起来成为一个应用流程,检测整个流程是否都能正确执行,检测基本命令之间是否会有影响。
5. 结束语
目前COS已经通过了第三方的测试,目前正在准备上金融卡检测中心的测试平台。COS开发中昀大的困难就是调试不便,直到后来在芯片中加入了OCI,才可实现单步调试以及存储单元值的查看。COS的开发语言C/汇编也比较低级,影响了开发的效率以及易维护性。相信随着IC卡成本的降低,支持java语言的java卡会更加的普及。
参考文献:
[1] 王爱英,智能卡技术,北京:清华大学出版社,2010.
[2] 中华人民共和国金融行业标准 JR/T 0025.1 2005.
【稿件声明】:如需转载,必须注明来源和作者,保留文中图片和内容的完整性,违者将依法追究。