田沅蕊, 杨小宝,王瑞刚 ,谢 璇,贡维雪
(西安邮电大学 物联网与两化融合研究院,陕西 西安710061)
多应用智能卡数据信息的安全研究
田沅蕊, 杨小宝,王瑞刚 ,谢 璇,贡维雪
(西安邮电大学 物联网与两化融合研究院,陕西 西安710061)
在智能卡进行多行业应用时,存在跨行业数据访问、数据泄露以及破坏等安全问题。针对此类问题,结合当前智能卡安全机制和跨行业多应用的文件系统特征,提出了对多应用智能卡数据完整性校验的一种方法。该方法构建了一个文件加密与访问控制模型,其主要功能包括保障各行业应用系统的独立性,实现数据的访问控制和密钥的安全存储等。最后分析并验证了该安全模型的可行性与安全性。该方案在陕西省社会公共服务卡验证平台上得到了验证,提高了卡内数据信息的安全级别。
多应用智能卡;数据完整性;安全管理器;密钥映射表
随着智能卡[1]多业务应用的快速发展,信息在不同的网络、系统和数据源之间实现自动、快速、安全的交换。不同的应用系统可能属于不同的信任域,而用户访问不同信息域的应用系统具有不同的身份。应用系统内的数据信息不可被非法用户访问或篡改。针对此类信息数据安全[2],主要的解决方案是数据的完整性校验。奇偶校验(XOR校验)和循环冗余校验CRC[3](Cyclical Redundancy Check)这2种校验方法虽然能够达到保证数据完整性的目的,但它并没有抗数据篡改的能力。它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止外在对数据的恶意破坏。本文旨在提出一种更为行之有效的数据完整性校验[4]方案,真正做到数据的防篡改,保护智能卡的数据安全。结合智能卡的文件系统结构设计提出以安全管理器模块为核心的文件加密与访问控制模型。此方案不但能很好地解决智能卡安全问题,而且具有开发周期短,系统维护与更新方便且成本更低等优点。
在多应用智能卡中,用户不同的身份对应的数据由不同的系统签发,为了方便使用与管理,不同系统签发的数据文件可能会放在同一张智能卡上,尤其是现在一卡通或者一卡多用的出现,要求将多个业务集成在一张智能卡上。多应用文件结构如图1所示,在每张智能卡中文件系统只存在一个根文件MF,其他的所有文件都是该文件的子(孙)文件。知道任何一个DF(Dedicated File)在物理上和逻辑上都保持独立,都有自己的安全机制和应用数据。为了标识不同的DF,每个DF具有一个同级DF下唯一的文件标识符 FID(File Identifier)和一个卡内全局唯一的应用标识符AID(Application Identifier)。从图1可以看出每个行业分别对应卡中一个独立的应用系统,例如行业1对应智能卡内DDF01的应用系统。其文件结构如图2所示,包括多个具体的存放应用数据文件以及存放密钥的基本数据文件KEY。
图1 多应用智能卡文件系统结构
图2 某行业应用系统文件结构
在一张代表用户身份的智能卡中会有多个不同的应用系统或者目录,其相关数据信息均以密文形式保存在智能卡内对应的文件中,由于存在不同行业之间的串读以及伪终端恶意伪造合法身份窃取卡内敏感数据信息,这里需要使用与应用系统对应的加密算法对文件进行加密,读卡端在访问不同信息域的应用系统时,就需要用与之对应的解密算法对密文文件解密,获取明文信息,从而对信息执行相应的操作,如插入、修改、删除等。而对不使用此算法的其他文件进行保护,禁止没有通过认证的非法用户的恶意访问以及卡内其他行业系统读卡端的误读、串读,以防止智能卡的其他文件信息遭到窃取、篡改以及破坏。为此,特别需要一种智能卡内部数据的保护方法,在外部读写器访问智能卡中的某个文件时,只有通过解密才能使用,不使用的时候文件处于加密状态,同时,在使用某个文件时,其他未使用的文件依然处于加密状态,这就涉及到了智能卡的安全认证与密钥管理[5]。
不论是实现多应用的mutlos卡、native卡或是可以动态加载应用的Javacard[6],凡实现了多应用,其安全性都在分析解决范围之内。对此笔者结合多应用智能卡的文件系统结构,提出了一种以密文存储的数据完整性校验解决方法,以保证卡内数据信息在生成、存储、传输以及应用的途中不被恶意篡改、破坏等。
数据完整性校验的方法有很多种,本文采用Hash校验算法[7],如图3所示。这种转换是一种压缩映射,即散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能由散列值来唯一确定输入值。简单地说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。Hash主要用于信息安全领域中的加密算法,通过函数将不同长度的信息转化成杂乱的128位的编码哈希值。从而找到一种数据内容和数据存放地址之间的映射关系。一个哈希算法R=H(S)是一个多对一映射,给定目标文本S,H可以将其唯一映射为R,并且对于所有S,R具有相同的长度。由于是多对一映射,所以H不存在逆映射S=H-1(R),使得R转换为唯一的S。本文保护数据仅仅用作比较验证,在以后不需要还原成明文形式,而且好的哈希算法应该对于输入的改变极其敏感,即使输入有很小的改动,如一亿个字符中变了一个字符,那么结果应该截然不同。故哈希算法用在多应用智能卡中就能很好地检测卡内数据信息的完整性。
图3 Hash校验算法
完整性校验流程的简单描述:当读卡器向智能卡发出一条APDU(Application Protocol Data Unit)命令时,卡片可根据APDU命令中的CLA(Class Byte of Command Message)字段的值判断该命令属于哪一个行业的应用请求,例如,当CLA=80时为金融行业。命令被允许访问该行业的文件,INS(Instruction Byte of Command Message)字段表示需要执行命令的指令代码,数据段可以是应用标识符(Application Identifier,AID),也可以是需要写入的数据(二进制文件等)。其根据AID或FID找到卡内的存储地址,并将APDU命令中携带的数据放置在此处,下面就需要对此APDU命令中的数据信息做完整性校验,如图4所示。
图4 使用Hash算法的数据完整性校验流程图
首先,要调用卡内存储的安全算法(如3DES算法),对写入的数据M使用3DES算法进行加密,密钥K直接由智能卡生成并保存在基本文件EF中,做到密钥不出卡的安全原则,得到密文文件数据E(K,M),并对其进行Hash运算得到H(E(K,M)),即散列值。再用智能卡的私钥PRa加密散列值来生成签名,数字签名保证了数据的来源和完整性。最后将得到的数字签名E(PRa,H(E(K,M)))附加到密文文件E(K,M)之后一起保存在专有文件DDF中。
这里的Hash函数采用SHA-512(安全散列算法),其运算公式如下
H0=IV
(1)
Hi=SUN64(Hi-1,abcdefghi)
(2)
MD=HN
(3)
其中:IV为abcdefg缓冲区的初始值;abcdefghi为第i个消息分组处理的最后一轮的输出;N为消息(包括填充和长度域)里的分组数;SUM64为对输入对里的每个字进行独立的模264加;MD为最后的消息摘要。
3.1 文件加密流程
在本文的智能卡多应用设计中,智能卡在创建应用目录和文件时,加解密模块对文件进行加密,产生密钥,通过安全管理器,将加密密钥K、文件路径信息FID、加密后的文件一一对应起来,以变长记录的方式保存在一个映射表中,如图5所示。
此表由安全管理器来保存,并用应用安全域的密钥进行加密,以密文方式存在。文件加密与访问控制模型如图6所示,其中文件具体的加密步骤如下:
1)读写器业务终端与智能卡建立安全连接;
2)读写器终端向智能卡发送APDU命令;
3)根据要求是否创建业务应用区,若需要则创建业务应用区,否则,直接下载电子业务,创建目录DF和相关文件,包括KEY文件;
4)根据命令要求,智能卡决定是否对文件调用加密模块,加密应用数据文件,计算密文Hash值并用该应用系统的
图5 安全管理器文件密钥映射表
私有密钥对此Hash值加密,形成不可仿造的数字签名HashCode,且附于密文文件之后,做完整性校验之用;
5)把加密后的文件路径信息FID、密钥K、HashCode交给安全管理器,做一一对应映射,保存记录;
6)安全管理器用应用安全域的密钥,对映射表文件做最后的加密。
为提高卡内数据的访问速率,加密算法采用3DES对称加密算法。文件的加密密钥和解密密钥是同一个密钥,不同的文件拥有不同的密钥。
3.2 卡内密文的访问控制方案及流程
在遵循智能卡的安全通信机制[8-9]的前提下,按照本文要求,智能卡内的文件在给用户发卡时就已经写好,卡内数据以密文文件方式存在,用户访问时很少创建,对文件的数据大多是读和修改操作。访问卡内密文的步骤如下:
1)读写器业务终端与智能卡建立安全通道[10]后,智能卡安全管理器根据应用安全域密钥解密加密映射表文件到缓存中,供文件访问命令查询操作;
图6 文件的加密与访问控制模块
2)读写器业务终端向智能卡发送文件访问APDU命令,该命令包含文件路径信息FID;
3)命令解析器成功解析命令后,通过安全管理器,在缓存中的密钥映射表中查找FID对应的KEY、HashCode;
4)智能卡根据FID选择目标密文文件,通过HashCode校验密文文件的完整性,并使用对应的KEY,解密密文文件到新开辟的缓冲区域;
5)读写器业务终端通过智能卡,对解密文件进行后续文件命令操作(如查询、修改、删除等)数据记录;
6)文件访问结束,重新生成随机数,作为密钥K,对缓存文件加密,生成密文件,替换原有密文,并进行Hash计算;
7)将密文文件路径信息FID、KEY、HashCode交给安全管理器,修改原有FID对应的密钥、HashCode映射记录;
8)安全管理器使用应用安全域密钥加密映射记录表文件,更新、替换原有映射记录表密文文件。
APDU命令验证本方案:向一张创建了金融行业应用的智能卡的余额文件中写入300元余额记录,并在进行了完整性校验之后读取其余额信息。
如图7所示,这是APDU命令的基本结构,其中CLA是类字节码,INS是指令代码,表明此命令执行的操作,P1,P2是基本参数,Lc是数据块的长度,DATA是APDU命令中所携带的数据。
图7 一种APDU命令结构
这里DATA就是需要加密保护并进行完整性校验的数据信息。FID=Ox0002,则写入余额的APDU命令为:
00 D6 82 00 02 01 2C
此命令执行的操作是:将2 byte的十六进制数01 2C写入FID为Ox0002的文件下。首先,读写器发出此APDU命令后,智能卡操作系统根据指令代码(INS)D6,识别出这是一条写二进制文件(Update Binary)操作,根据参数P1的值读出FID的值,即数据要存放的位置。DATA则是2 byte十六进制表示的数01 2C,对应十进制数300。接下来智能卡调用加解密模块对DATA加密处理,得到E(K,DATA)。为保证其完整性,还需对密文文件E(DATA)进行数字签名处理,先生成密文散列值再用其私钥对散列值加密得到E(PRa,H(E(DATA))),计为HashCode。假定对01 2C经过上述处理之后得到密文文件为E5FB,HashCode为2A。密钥K,PRa保存在KEY文件中。最后将文件路径信息FID、HashCode及KEY文件作一一映射处理生成映射记录表文件,再用应用安全域密钥加密映射记录表,保存在安全管理器模块中。
智能卡接收到读取余额APDU命令为:
00 B0 82 00 02
首先,智能卡根据INS=B0知道此APDU命令是读二进制文件命令(Read Binary),参数P1=82,包含了文件路径信息FID=Ox0002,根据FID就可以找到所需的密文文件E(K,DATA)。其次,就需要用应用安全域密钥对映射记录表解密,得到FID、HashCode、KEY。再次,对密文文件做完整性校验,如图4所示。先对密文文件使用同样的Hash函数得到H(E(K,DATA)),计为h1。再对获取的HashCode用该应用的公钥解密,得到的值计为h2。对h1,h2进行比较,若一致则说明密文文件数据未被修改,文件信息完整,安全有效。最后,用KEY文件中保存的密钥K对密文文件解密获取所需的明文数据。
本文通过分析多应用智能卡的数据安全保护方案,设计了一套数据安全策略,实现了智能卡数据的完整性检验与卡内数据的加密并建立了安全访问机制。有效地解决了多应用智能卡的数据安全问题,防止数据被恶意篡改,保证了数据的完整性。但是由于本方案对卡内数据信息采取了多层数据加密保护,运行时间较单应用智能卡花费更长的时间,但都在可接受范围之内,对应用系统的整体运行影响较弱。在这里以较长的运行时间换取数据信息的安全是可取且必要的。下一步的研究工作是在保证卡内数据安全的同时压缩运行时间,提升运行效率。
[1]SKIPPER J.Electronic banking and payments[C]//Proc.IEEE Colloquium on eCommerce-Trading.NewYork:IEEE Press,1998:31-36.
[2]张之津,李胜广.智能卡安全与设计[M].北京:清华大学出版社,2010.
[3]王栋.基于CRC的多比特纠错算法研究与实现[D].西安:西安电子科技大学,2013.
[4]赵铭洋,赵正文.智能卡数据完整性校验[J].信息技术,2011,9(2):142-143.
[5]SOOD S K,SARJE A K,SINGH K.Smart card based secure authentication and key agreement protocol[C]//Proc. Computer & Communication Technology.Allahabad:[s.n.],2010:7-14.
[6]DESHMUKH A A, DUBAL M,MAHESH TR,et al.Data security anaylysis and securityextension for smart cards using java card[J].International Journal of Advanced Information Technology (IJAIT),2012,2(2):41-57.
[7]王张宜, 李波, 张焕国.Hash函数的安全性研究[J].计算机工程与应用,2005(12):18-19.
[8]姚静晶,胡永涛 一种新的智能卡安全通信机制[J].计算机工程应用技术,2010,33(6):9503-9506.
[9]姚静晶,胡永涛 张勇等.一种智能卡安全会话系统: 中国,101894235A[P].2010-11-24.
[10]智能卡数据交互安全性的研究.[EB/OL].[2014-07-05].http://tech.yktchina.com/2009-12/7e821ba887a74219916825989 ef62c2b.html.
田沅蕊(1988— ),女,硕士,主研多应用智能卡、数据安全;
杨小宝(1978— ),硕士,工程师,主研多媒体通信技术与智能卡技术研究;
王瑞刚(1966— ),硕士生导师,高级工程师,主研多媒体通信与大数据的安全研究;
谢 璇(1989— ),女,硕士,主研Javacard及其数据安全;
贡维雪(1992— ),女,本科,主研通信工程。
责任编辑:闫雯雯
Multi-application Smart Card Data Information Security Research
TIAN Yuanrui ,YANG Xiaobao ,WANG Ruigang ,XIE Xuan ,GONG Weixue
(InstituteofIOT&IT-basedIndustrialization,Xi’anUniversityofPostsandTelecommunications,Xi’an710061,China)
There are some security problems with the multi industry application in smart card,such as cross-industry data access, data leakage and damage.In view of these security problems,combined with the current smart card security mechanism and file system features of cross industry applications, a method of data integrity check for multi-application smart card is put forward.The method build a security model of file encryption and access control,including the function of guaranteeing the independence of appliction system of various industries,implementing the data access control and the key safety storage and so on .Finally, the feasibility and security of this security model are analyzed and verified.The scheme has been verified in the card verification platform of Shaanxi province public service, and improved the safety level of the on-card data information.
multi-application of smart card;data integrity;safety manager;key mapping table
陕西省科学技术研究发展计划项目(2013k06-14);西安邮电大学青年教师科研基金项目(ZL2013-39)
TP309
A
10.16280/j.videoe.2015.05.014
2014-07-30
【本文献信息】田沅蕊, 杨小宝,王瑞刚 ,等.多应用智能卡数据信息的安全研究[J].电视技术,2015,39(5).