王文韬, 周志洪, 李建华, 姚立红, 伍军
(1上海交通大学电子信息与电气工程学院,上海,200240;2上海交通大学深圳研究院,深圳,518057;3信息网络安全公安部重点实验室,上海,201204)
智能IC卡密码算法检测系统实现*
王文韬1,3, 周志洪1,2, 李建华1, 姚立红1,3, 伍军1
(1上海交通大学电子信息与电气工程学院,上海,200240;2上海交通大学深圳研究院,深圳,518057;3信息网络安全公安部重点实验室,上海,201204)
智能IC卡因其自身安全性、便捷性被越来越多地应用于电子政务、电子商务等领域,而智能IC卡自身需要一定的检测机制来保障其使用时的安全性。利用安全沙箱技术保证检测环境安全、干净,基于微软PC/SC规范通过APDU指令集导入密钥,可以实现智能IC卡密码算法检测系统,其核心为根据基准算法库检验密码算法正确性。实际检测结果表明,该系统能够实现对智能IC卡的密码算法检测,检测过程符合国家密码行业相关标准。
智能IC卡;安全沙箱;PC/SC;APDU
智能IC卡是将一个带有微处理器和存储器等微型集成电路芯片微嵌入符合ISO 7816标准卡基中,做成卡片形式,由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、交通运输等许多领域正得到越来越多的应用。因IC卡自身安全性可以减少银行卡欺诈风险损失以及能够满足银行卡多行业、多功能的应用需求,由磁条卡转向IC卡的金融IC卡迁移计划正在全球实施。此外IC卡在涉及到民生的医疗社保、加油站收费等领域的使用更加频繁。IC卡的广阔应用市场前景也对其自身算法安全性提出更高要求。然而,市场上一些智能IC卡并未获得销售许可证,或者其内部加解密算法与产品说明不符合,这些违规的IC卡产品将对电子政务、电子商务等领域带来极大安全隐患,带来巨大经济损失的同时严重影响IC卡的使用前景。因而十分有必要对智能IC卡密码算法的正确性进行验证。本系统选择PC/SC接口,在获得一定权限的情况下,与智能IC卡进行APDU(Application Protocol Data Units,应用协议数据单元)通信,检测IC卡内存在的密码算法类型、种类,并通过与基准算法库算法进行对比来验证算法实现的正确性。此外,为了防止出现驱动冲突问题,检测系统加入了安全沙箱。
由于智能IC卡自身的安全保护,对于密钥信息的输入输出有诸多限制,这使得其算法检测有一定困难。目前检测方法主要有:
1)从硬件层进行:硬件层是通过侧信道攻击中的入侵式和半入侵式攻击的方法获取IC卡密钥等敏感信息来进行检测,这种方法需要复杂的仪器设备才能进行,且需要专业人员进行操作,在实际随地检测环境中应用不方便;
2)从中间层进行:中间层是通过调用CSP或PKCS#11中间件的方式与IC进行通信来检测,它的前提是需要所有被检测IC卡的CSP驱动,这种方法实现比较繁杂,在无法获知对方具体IC卡型号和驱动的情况下无法进行;
3)从底层的APDU进行:根据ISO7816.4规定,智能卡与外界的通信数据接口为APDU,而利用微软的PC/SC规范,可以实现PC与智能IC卡的最底层的通信,从而对其密码算法进行检测。该方法实现比较简单,但是在已经获取该IC卡的APDU指令集的基础上,而APDU指令集一般都在各产商根据自身需求设计的不公开的COS(Chip Operating System,片内操作系统)中,获取不易。
考虑到目前国家密码管理局正在进行各厂商智能IC卡的COS统一规范的工作,在未来可以直接通过该标准COS手册来选择APDU指令和智能IC卡进行通信,因而最终选择该方法实现检测系统。
PC/SC规范是一个基于WINDOWS平台的一个标准用户接口(API),作为读卡器和卡与计算机之间的一个标准接口,实现了不同生产商的卡和读卡器之间的互操作。微软在其Platform SDK中实现了PC/SC,作为连接智能卡读卡器与计算机的一个标准模型,提供了独立于设备的API,并与Windows平台集成。因此,我们可以用PC/SC接口来访问智能卡。
智能IC卡与外界都是以APDU为载体来传输信息。一条APDU命令含有一个命令头和一个命令体,如表1所示。命令头由四个数据元组成,即类CLA,命令INS和两个参数P1和P2。命令体可有不同长度,包括数据域Data,表示数据域Data长度的Lc和表示数据域期望数据的长度Le。
表1 APDU命令格式
APDU命令的应答由数据和状态字组成,如表2所示。SW1和SW2是卡片执行命令的返回代码,任何命令的返回信息都至少由一个状态字组成。状态字说明了命令处理的情况,即命令是否被正确执行及失败原因。
表2 APDU响应格式
智能IC卡检测系统主要是对IC卡中加解密算法进行检验,包括分组密码算法(对称算法)、非对称密码算法以及密码杂凑算法。实际应用中,智能IC卡密码算法检测存在以下几方面需求:
1)对于指定的加解密算法,判断智能IC卡是否支持该种算法,并验证算法实现是否正确。
2)能够将每种算法的检测结果进行存储和分析。
3)对每种智能IC卡进行的每次检测必须在一个安全、干净的环境中进行。
基于以上需求,智能IC卡密码算法检测系统结构框架如图1所示,主要由前台交互平台、算法正确性检测模块、后台数据库三大部分组成。
图1 智能IC卡密码算法检测系统框图
前台交互平台负责信息的输入和输出,与后方检测系统进行交互,并可以通过前台观察、控制整个检测过程。智能IC卡通过读卡器连接到前台,在开始进行检测时,通过前台控制界面开启安全沙箱,处于安全沙箱中的算法检测模块开始进行算法检测,得到检测结果后输出到前台交互界面。
算法正确性检测模块是整个检测系统的关键核心环节,它处于安全沙箱之中,可以对智能IC卡存在的密码算法进行检测。在检测过程中,需要基准算法库给出具体加解密算法所需的明文数据、加密算法标识符、密钥数据以及相应的密文数据,该基准算法库由国家密码管理局提供并认可。检测模块基于PC/SC协议,利用APDU指令集向智能IC卡输入相应明文、导入密钥、与基准算法库数据进行对比等操作来进行算法正确性验证。在获得验证结果后,向前台交互平台输出结果的同时,将结果保存到后台数据库中。
后台数据库负责存储检测结果,方便信息的备份查询,也可用于将来的进一步检测。数据库信息都是由算法正确性检测模块对每种智能IC卡检测产生得到,主要包含了每种算法名称、类型、密钥长度,算法验证结果等。
4.1 算法正确性检测模块
算法正确性检测模块是智能IC卡算法检测系统最关键最重要的部分,它根据基准算法库提供的明文数据和密钥数据,基于PC/SC协议将这些信息利用APDU指令集发送到被检测智能IC卡中,并利用智能IC对获取的明文进行对应算法加密,将加密得到的密文与基准算法库中密文进行对比,从而得出算法正确性检测结果。该过程主要关键点是PC/SC与智能卡的通信流程,主要难点是如何将基准算法库中得到的密钥导入到智能IC卡中。
PC/SC访问智能IC卡是通过已定义的接口函数。PC/SC接口包含30多个以Scard为前缀的函数,所有函数原型都在winscard.h中声明,应用程序需要包含winscard.lib,所有函数的正常返回值都是SCARD_S_SUCCESS。在这30多个函数中,常用的函数只有几个,与智能卡的访问流程(如图2)对应。
图2 PC/SC访问智能IC卡流程图
其中,指ScardTransmit向智能卡发送的指令就是APDU指令,通过APDU指令可以进行相关的密钥导入、加解密运算等操作。该模块可以针对各种常见对称密码算法(如DES、AES、SM1等)、非对称密码算法(如RSA、SM2等)和HASH算法(MD5、SM3等)来进行检测。这里以DES加密算法为例,其具体算法检测流程如图3所示:
图3 算法检测过程
1)从基准算法库中得到需要检测的加密算法ID,以及加密所需的密钥数据,密钥数据包括了密钥的长度和密钥算法的具体二进制数值。
2)将算法ID和密钥数据导入到安全沙箱,系统识别算法ID后进入其所需导入密钥文件的流程:如为导入DES密钥,首先需要通过Verify Pin验证口令来获得权限,之后使用Create File来创建文件,并Select File选定该文件,最后使用Update Binary将基准算法库对应密钥数据按照COS手册规定的文件格式写入到二进制文件中,这样就完成了密钥文件的导入过程。当然,为了保证数据的机密性、完整性和对发送方的认证,建议按照COS手册计算出MAC值后使用安全报文进行密钥导入。
4)将3)中的结果与基准算法库中标准的密文结果进行对比,如果两者相同,说明该算法实现正确;结果不同则说明检测的智能IC卡算法实现有问题。
其它算法检测过程与DES加密算法检测过程类似,只是在算法导入过程会有差异,针对不同的密码算法需要提前准备其密钥导入过程,从而在获得算法ID后可直接进行密钥导入,密钥导入后按照相应密码算法检测标准进行各种检测即可。
4.2 安全沙箱技术
为了保证检测系统对于市场上的智能IC卡能做到即插即用式检测,必须提前在检测系统中安装好不同品牌IC卡读卡器的驱动程序,但由于IC卡读卡器种类繁多,各种驱动程序之间经常会出现冲突现象,而且驱动也会出现无法卸载干净的情况,同时IC卡读卡器驱动也会有操作系统不支持等情况出现。为此,检测系统引入了安全沙箱技术来构建虚拟环境,保证检测在安全、干净、有效的环境中进行。安全沙箱是虚拟化技术的应用,是一种程序的隔离运行机制,其目的是限制不可信进程或不可信代码运行时的访问权限,出现问题时可复原系统。从操作系统和软件角度出发,沙箱实现途径分为三类:用户态的沙箱实现机制、内核态的沙箱实现机制和混合类型的实现机制。
检测系统采用轻量级虚拟机的方式来实现安全沙箱,从而实现驱动程序隔离。该安全沙箱还能实现功能包括:在被测智能IC插入读卡器后,虚拟机将其驱动程序在驱动程序库中找到,安装在安全沙箱中,安全沙箱启动算法正确性检测模块;检测过程中,安全沙箱需要识别基准算法库中获取的算法ID,查找出对应的密钥导入流程,并在运算结束后对比检测结果,输出检测结果到前台交互平台和后台数据库;检测结束,安全沙箱通过快照方式回溯到未安装智能IC卡驱动状态,相当于彻底卸载驱动程序。
检测系统硬件环境是IBM T440笔记本,其CPU为酷睿i5-2430M,软件环境:Host操作系统是自定义裁剪的Linux操作系统,虚拟机是利用Oracle VirtualBox实现的Windows XP SP3操作系统。VirtualBox需要安装VirtualBox Extension Pack的拓展包,以此来保证USB设备兼容性。进行检测智能IC卡是某公司某型号IC卡,且已获得该IC卡的COS手册。首先对智能IC卡的DES加密算法进行检测,之后给出对其它算法进行检测的结果。
(1)DES加密算法正确性检测
基准算法库首先产生的数据如表3所示(都是16进制表示)。其中,明文和密文长度都是64位;密钥的有效长度为56位,另8位为校验位,采用的加密模式为前后字节没有关联的ECB模式。
表3 基准算法库产生的DES算法数据
安全沙箱根据算法ID查找并进入密钥导入流程,通过Update Binary将密钥写入文件中,最后通过DESData Encrypt对明文进行加密,最终得到的密文为:
C3 C1 B5 FD D0 EA 3C A4
与基准算法库中密文一致,说明检测结果正确,该智能IC卡可以实现DES加密算法。
(2)其他算法检测结果
其他算法检测过程同DES类似,只是在密钥导入等过程有差异。最终检测结果如图4所示。
图4 某型号智能IC卡算法检测结果
从图4可以看出,该款IC卡支持RC2/RC4、DES/3DES、MD2/MD4/MD5等密码算法,虽然也支持SSF33和SCB2算法,但这两种算法实现过程有问题,无法通过算法验证。从以上检测结果可见该智能IC密码算法检测系统能够对智能IC进行算法正确性检测。
由于金融IC卡迁移等现实情况导致市场上智能IC卡的应用剧增,与此同时出现了各种品牌的违规智能IC卡危害人们财产安全和日常生活。面向质量检测与监管机构等部门的需求,设计出了智能IC密码算法的检测系统,其核心技术是利用安全沙箱和基准算法库并基于PC/SC规范和APDU指令对智能IC卡密码算法进行测试。但目前的检测是在已知该IC卡的COS手册基础上,下一步工作是在国家密码管理局发布统一的COS规范且各产商按照该规范生产智能IC卡后,通过该规范调用APDU进行检测,从而实现真正意义上的即插即用式的“盲检测”。
[1] 车平跃.智能卡操作系统内核的研究与实现[D].北京:北京邮电大学,2010.
[2] 曹玫.基于智能卡身份认证的发展趋势及应用前景[J].金卡工程,2005(3):32-35.
[3] Mircosoft.ISCard ISO7816 interface.USA:Mircosoft,2002 [2014-7-24]http://msdn.microsoft.com/en-us/library/ windows/desktop/aa376169(v=vs.85).aspx.
[4] kaka0914.Smart Card API.[EB/OL].USA:Mircosoft,2009 [2014-7-24].http://msdn.microsoft.com/en-us/library/ dd627646(v=vs.85).aspx.
[5] 王鹤鸣.电脑信息安全“保护伞”——沙箱[J].信息安全与通信保密,2012.1:37-39.
[6] 谢燕江.一种基于轻量级虚拟化的沙盒机制[D].湖南:湖南大学,2012.
[7] 国家密码管理局.GM/T 0017-2012,中华人民共和国密码行业标准-智能密码钥匙密码应用接口数据格式规范[S].北京:国家密码管理局,2012:13-23.
[8] 国家密码管理局.GM/T 0016-2012,中华人民共和国密码行业标准-智能密码钥匙密码应用接口规范[S].北京:国家密码管理局,2012:2-5.
Detection System of Smart IC-Card Cryptographic Algorithm
WANGWen-tao1,3,ZHOU Zhi-hong1,2,LIJian-hua1,YAO Li-hong1,3,WU Jun1
(1School of Electronic Information and Electrical Engineering,Shanghai Jiaotong University,Shanghai 200240,China;2Shenzhen Research Institute of Shanghai Jiaotong University,Shenzhen Guangdong 518057,China;3Key Lab of Information Network Security,Ministry of Public Security,Shanghai201204,China)
Owing to its safety and convenience,smart IC-card is increasingly applied in e-government,e-commerce and other fields.However,certain detectionmechanism is required to guarantee its safety during utilization.With the sandbox technology for providing a safe and clean detection environment and by importing key through APDU based on Microsoft PC/SC specification,a detection system of smart IC-card cryptographic algorithm is proposed and implemented.Its kernel technology is to check the correctness of cryptographic algorithm in accordancewith algorithm base test.Experimental results show that this detection system can achieve cryptographic algorithm detection of smart IC-card,and the detection process conforms to the related standards of internal encryp tion industry.
smart IC-card;sandbox;PC/SC;APDU
TN918.2
A
1009-8054(2015)05-0117-04
��法库中调取所需要加密的明文数据,利用短文件标识符定位2)中导入的密钥文件,使用RSA Data Encrypt来对明文数据进行加密,得到密文数据。
王文韬(1990—),男,硕士,主要研究方向为信息安全;
周志洪(1979—),男,博士,讲师,主要研究方向为计算机网络;
李建华(1965—),男,博士,教授,主要研究方向为计算机网络;
姚立红(1974—),女,博士,高级工程师,主要研究方向为安全操作系统;
伍 军(1979—),男,博士,助理研究员,主要研究方向为工控信息安全。■
2014-09-09
国家自然科学基金项目(No.60903191),上海市优秀技术带头人计划(No.13XD1425100),国家电网科技部项目:网络攻击深度分析与监控技术研究(No.5246811140009),信息网络安全公安部重点实验室开放课题(No.C13609)