摘 要:操作系统的稳定和可靠是智能卡正常工作的基础。在COS开发过程中,对COS充分全面的测试是非常重要的。本文在介绍智能卡操作系统的体系结构的基础上,给出了智能卡COS的测试方案。对于同一应用类型的COS,测试具有一定的重用性。
关键词:智能卡;COS;测试用例;安全性
引言
随着科学技术的发展,智能卡的应用已经越来越广泛。智能卡操作系统(Chip Operating System, COS)是根据行业标准,及智能卡的硬件结构及应用设计和开发的。为保证COS的稳定性和可靠性,须遵循软件工程及协议一致性的要求,对COS进行充分全面的测试。
本文基于北京嵌入式重点实验室的智能卡芯片BES2415进行符合ISO7918,ISO14443及PBOC2.0规范的COS开发中,针对硬件结构、规范和COS特点,设计测试用例,完成测试。
智能卡操作系统
1. COS体系结构
COS的主要功能是控制智能卡同外界的信息交换,分析接收到的指令进行处理。管理文件,执行加密及安全状态的管理。功能模块如图1主要分为:通信管理模块、命令解析模块、安全管理模块和文件管理模块。
1) 通信管理模块:对输入缓冲区中收到的数据进行奇偶校验,对分组长度进行正确性判断,但不对信息的内容进行判断;发送经过命令处理、文件管理处理、安全认证后的数据,并按照ISO/IEC 7816-4中有关命令结构要求打包成完整的结果报文,放入到输出缓冲区,发送结果报文。
2)安全管理模块:接受通信管理模块的数据,对其进行安全验证,并将处理后的信息返回给通信管理模块;若安全验证失败,则直接返回验证失败。
3) 命令解析模块:作数据内容上的鉴别(检查命令的各项参数是否正确),然后执行相应的操作,完成对卡内有关数据的操作,若对数据内容鉴别未通过,则直接返回错误码给通信管理模块。
4)文件管理模块:数据在卡内是以文件形式存在的,文件管理模块须提供文件的建立、修改、删除等基本操作,文件访问的安全控制等。
2. 智能卡通信过程
智能卡与终端之间的通信是通过命令--响应对实现的。终端主动向卡发送命令(C-APDU),卡接收到命令后,由COS对命令进行处理,生成响应报文(R-APDU)并回送给终端。
C-APDU由两部分组成:一个必备4字节命令头(CLA INS P1 P2),及可选可变长的条件体,其中Lc表示数据域的长度,Le表示期待响应报文数据字段的最大长度。格式如图2
3. COS安全结构
(1)安全状态
安全状态表明当前卡片的状态,会在复位应答(ATR)或执行完认证命令或一组命令后设置。
(2)安全属性
安全属性定义了需要完成某项操作需要的安全权限。每一文件有与其相联系的安全属性,应满足一定的安全条件,才允许对文件进行相应操作。
(3)安全机制
安全机制是基于安全状态和安全属性的。一种安全状态经过安全机制的转移方法转移到另一安全状态,将当前状态和安全属性相比较,如果相符合则可以进行相应的操作。安全机制主要有三种方式:数据加密解密、鉴别和核实、文件访问控制。
COS测试方案
COS的测试主要包括协议测试、基本功能测试和防插拔测试。协议测试即检测智能卡与ISO7918,ISO14443的符合程度。基本功能测试主要包括命令解释功能测试、安全功能测试和基本交易功能测试。防插拔旨在检测COS与终端交互过程中意外掉电时对数据完整性的保护和自动恢复的能力。
智能卡测试方案的设计方法如下:1)对测试需要进行分析;2)针对不同的测试项目采用不同的测试方法;3)利用colis公司的conclusion编写测试脚本。
测试用例设计
在测试中,主要针对以下几个方面进行测试用例的设计:命令解释功能、安全功能、基本交易功能和防插拔。
1. 命令解释功能测试用例设计
智能卡与终端的通信单元是APDU,对命令解释功能的测试是通过白盒方法分析逻辑路径,以及相应命令的响应数据进行黑盒测试。针对标准中每条指令的APDU设计测试用例,由于命令解释模块首先对接收缓冲中APDU的前5个字节进行处理,因此利用划分等价类组成测试用例树:
2. 安全功能测试用例
安全功能测试主要测试智能卡的权限控制、安全锁定。测试用例使用推断的方法针对不同的情况进行设计。
权限控制的测试:在不满足操作权限的安全状态下,对文件进行操作。例如:EF文件的读权限为0x15,外部认证密钥的使用权限为0x0F,后续状态为0x03。在选择文件后,发送读命令,由于此时的安全状态为初始状态0,而文件的读权限为0x15,0不在1~5之间,所以应返回0x6982表示安全状态不满足。然后发送外部认证命令,提高安全状态,再发送读命令,应该能够正确返回。
安全锁定:安全锁定包括发卡商密钥错误时超过最大尝试次数,是否能将卡锁住,并返回错误代码,提示还可尝试次数;超过PIN校验最大次数是否能锁住PIN,返回0x6983。
3. 基本交易功能测试用例
基本交易功能主要测试智能卡能否按照协议规定的交易流程完成正常交易。根据协议规定的交易流程,画出交易测试流程图,采用基本路径的方法设计测试用例。以圈存交易为例:
4. 防插拔测试用例
防插拔是在正常交易的过程中,意外掉电,智能卡能否保证数据完整性急自动恢复的能力。例如上图圈存交易,在返回确认前的任何时刻掉电,在卡片再次上电后应能将数据恢复到交易前的状态,编写测试脚本,在任意两条指令间插入掉电指令,再次上电后通过读取余额推断数据是否恢复。
结语
根据COS 的特点给出了COS 的测试方案,对于每个测试项给出了其测试的方法并完成测试用例。在测试中,结合对测试结果的分析,进一步补充测试用例。这些测试用例,还需要进一步的优化和归并,使测试用例具有一定的重用性。
参考文献:
[1] 王爱英,智能卡技术 第三版,清华大学出版社,2010
[2] 赵斌,软件测试技术经典教程,科学出版社,2010
[3] 张志檩,加油IC卡技术与应用,中国石化出版社,2007
[4] 双接口智能卡C0S软件的设计与实现,尉永清,刘培德,山东师范大学学报(自然科学版)2006年6月
[5] 张李静,张秋燕,智能卡COS芯片层模块设计与测试方案研究,现代电子技术,2009年第4期