发明内容
本发明实施例的目的在于提供一种更为行之有效的、能够进行数据完整性校验、真正做到数据防篡改、切实保护数据安全的多应用数据卡。
为达到上述目的,本发明实施例公开了一种具有加密解密功能的多应用智能卡,其特征在于,所述智能卡包括:
传输管理模块:所述传输管理模块用于按照预设传输协议传入指令或返回响应;
命令解析模块:所述命令解析模块对接收到的命令进行解析;
加密解密模块:所述加密解密模块对应用卡中的应用内容执行加密或解密操作;
安全会话管理模块:所述安全会话管理模块用于基于会话信息对所述应用卡内的内容进行管理,并控制其状态转移。
可选的,外部智能卡读取设备读取所述智能卡内的内容时,需要经过解密操作才能读取。
可选的,外部智能卡读取设备读取所述智能卡中的一个或多个文件时,其余未使用的文件处于加密状态。
可选的,采用Hash算法校验所述智能卡内的数据完整性。
可选的,智能卡在创建应用目录和文件时,加密解密模块对文件进行加密,产生密钥。
可选的,通过安全会话管理模块,将加密密钥、文件路径信息以及加密后的文件通过映射表的方式一一对应。
可选的,所述加密解密模块执行加密步骤具体包括:智能卡调用加密解密模块,加密应用数据文件,计算密文Hash值并用该应用系统的私有密钥对此Hash值加密,形成不可仿造的数字签名HashCode,且附于密文文件之后;以及安全管理器用应用安全域的密钥,对映射表文件做最后的加密。
可选的,所述安全会话管理模块对所述应用卡内的内容进行管理,包括:命令解析器成功解析命令后,通过安全会话管理模块,在缓存中的密钥映射表中查找FID对应的KEY。
可选的,所述安全会话管理模块对所述应用卡内的内容进行管理,还包括:安全会话管理模块使用应用安全域密钥加密映射记录表文件、更新、替换原有映射记录表密文文件。
可选的,所述智能卡还包括:CPU、RAM、EEPROM。
本发明实施例提供的智能卡内构建了一个文件加密与访问控制模块,保障各应用系统的独立性,实现数据的访问控制和密钥的安全存储。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
常见的多应用文件结构如图1所示,在每张智能卡中文件系统只存在一个根文件MF,其他的所有文件都是该文件的子(孙)文件。我们知道任何一个DF(Dedicated File)在物理上和逻辑上都保持独立,都有自己的安全机制和应用数据。为了标识不同的DF,每个DF具有一个同级DF下唯一的文件标识符FID(File Identifier)和一个卡内全局唯一的应用标识符AID(Application Identifier)。从图1可以看出每个行业分别对应卡中的一个独立的应用系统,例如行业1对应智能卡内DDF01的应用系统。
在一张代表用户身份的智能卡中会有多个不同的应用系统或者目录,其相关数据信息均以密文形式保存在智能卡内对应的文件中,由于存在不同行业之间的串读以及伪终端恶意伪造合法身份窃取卡内敏感数据信息,这里需要使用与应用系统对应的加密算法对文件进行加密,读卡端在访问不同信息域的应用系统时候,就需要用与之对应的解密算法对密文文件解密,获取明文信息,从而对信息执行相应的操作,如插入,修改,删除等。而对不使用此算法的其它文件进行保护,禁止没有通过认证的非法用户的恶意访问以及卡内其他行业系统读卡端的误读、串读,以防止智能卡的其它的文件信息遭到窃取、篡改以及破坏。为此,特别需要一种智能卡内部数据的保护方法,在外部读写器访问智能卡中的某个文件时,只有通过解密才能使用,不使用的时候文件处于加密状态,同时,在某个文件使用的时候,而其它未使用的文件依然处于加密状态。这就涉及到了智能卡的安全认证与密钥管理。
不论是实现多应用的Native卡或是可以动态加载应用的Java card与Mutlos卡,凡实现了多应用,其安全性都在本发明的解决范围之内。对此本发明结合多应用智能卡的文件系统结构,提出了一种数据以密文存储的完整性校验解决方法。以保证卡内数据信息在生成、存储、传输以及应用的途中不被恶意的篡改、破坏等等。分析智能卡存在的各类安全问题,给出解决方案,分析方法的由来以及适用性,结合本发明的特征。
数据完整性校验的方法有很多种,本发明采用Hash校验算法,这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单地说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HASH主要用于信息安全领域中加密算法,通过函数将不同长度的信息转化成杂乱的128位的编码哈希值。从而找到一种数据内容和数据存放地址之间的映射关系。一个哈希算法R=H(S)是一个多对一映射,给定目标文本S,H可以将其唯一映射为R,并且对于所有S,R具有相同的长度。由于是多对一映射,所以H不存在逆映射S=H-1(R),使得R转换为唯一的S。本发明保护数据仅仅用作比较验证,在以后不需要还原成明文形式,而且好的哈希算法应该对于输入的改变极其敏感,即使输入有很小的改动,如一亿个字符变了一个字符,那么结果应该截然不同。故哈希算法用在多应用智能卡中就能很好的检测卡内数据信息的完整性。
完整性校验流程的简单描述:当读卡器向智能卡发出一条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命令中的数据信息做完整性校验,如图2所示。首先,要调用卡内存储的安全算法(如3DES算法),对写入的数据M使用3DES算法对数据进行加密,密钥K直接由智能卡生成并保存在基本发明件EF中,做到密钥不出卡的安全原则,得到密文文件数据E(K,M),并对其进行Hash运算得到H(E(K,M)),即散列值。再用智能卡的私钥PRa加密散列值来生成签名,数字签名保证了数据的来源和完整性。最后将得到的数字签名E(PRa,H(E(K,M)))附加到密文文件E(K,M)之后一起保存在专有文件DDF中。
在本发明的智能卡多应用设计中,智能卡在创建应用目录和文件时,加解密模块对文件进行加密,产生密钥,通过安全管理器,将加密密钥K、文件路径信息FID、加密后的文件一一对应起来,以变长记录的方式保存在一个映射表中,如图3所示。
此表由安全管理器来保存,并用应用安全域的密钥进行加密,以密文方式存在。文件加密与访问控制模型如图4所示,其中文件具体的加密步骤如下:
(1)读写器业务终端与智能卡建立安全连接;
(2)读写器终端向智能卡发送APDU命令;
(3)根据要求是否创建业务应用区,若需要则创建业务应用区,否则,直接下载电子业务,创建目录DF和相关文件,包括KEY文件;
(4)根据命令要求,智能卡决定是否对文件调用加密模块,加密应用数据文件,计算密文HashHash值并用该应用系统的私有密钥对此HashHash值加密,形成不可仿造的数字签名Hash Code,且附于密文文件之后,做完整性校验之用;
(5)把加密后的文件路径信息FID、密钥K,Hash Code交给安全管理器,做一一对应映射,保存记录;
(6)安全管理器用应用安全域的密钥,对映射表文件做最后的加密。
为提高卡内数据的访问速率,加密算法采用3DES对称加密算法。文件的加密密钥和解密密钥是同一个密钥,不同的文件拥有不同的密钥。
在遵循智能卡的安全通信机制的前提下,按照本发明要求,智能卡内的文件在给用户发卡时就已经写好,卡内数据以密文文件方式存在,用户访问时很少创建,对文件的数据大多是读和修改操作。
对卡内密文访问,步骤如下:
(1)读写器业务终端与智能卡建立安全通道后,智能卡安全管理器根据应用安全域密钥解密加密映射表文件到缓存中,供文件访问命令查询操作;
(2)读写器业务终端向智能卡发送文件访问APDU命令,该命令包含文件路径信息FID;
(3)命令解析器成功解析命令后,通过安全管理器,在缓存中的密钥映射表中查找FID对应的KEY、Hash Code;
(4)智能卡根据FID选择目标密文文件,通过Hash Code校验密文文件的完整性,并使用对应的KEY,解密密文文件到新开辟的缓冲区域;
(5)读写器业务终端通过智能卡,对解密文件进行后续文件命令操作(如查询,修改、删除等)数据记录;
(6)文件访问结束,重新生成随机数,作为密钥k,对缓存文件加密,生成密文件,替换原有密文,并进行HashHash计算;
(7)将密文文件路径信息FID,KEY,Hash Code交给安全管理器,修改原有FID对应的密钥、Hash Code映射记录;
(8)安全管理器使用应用安全域密钥加密映射记录表文件、更新、替换原有映射记录表密文文件。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。