发明内容
本发明的目的在于提供一种在标准数据接口实现智能卡控制指令传输的方法,该方法可以完全兼容现有块设备驱动接口,并能高速、无驱的传输智能卡控制指令,该方法还具有既安全又成本低的特点。
本发明提供的在标准数据接口实现智能卡控制指令传输的方法,其步骤包括:
第1步主机终端对插入的移动存储设备进行识别,如果是带有智能卡芯片的安全移动存储设备,则转入第2步,否则,主机终端拒绝移动存储设备接入,转入步骤第7步;
第2步主机终端向安全移动存储设备发送智能卡控制指令数据包;
第3步安全移动存储设备识别智能卡控制指令数据包,并执行该智能卡控制指令;
第4步主机终端向安全移动存储设备发送取响应指令数据包,以获取对应于智能卡控制指令的处理结果;
第5步安全移动存储设备识别取响应指令数据包,并将上述智能卡控制指令的响应结果发送给主机终端;
第6步主机终端获得所述智能卡控制指令的处理结果;
第7步终止。
为了解决目前日益普及的各类安全应用对便携设备、安全移动存储等的高速数据和智能卡控制指令的传输需求以及各平台对设备接口兼容性问题,通过在现有的USB2.0等标准数据读写协议之上为智能卡控制指令的传输开辟逻辑通道,结合终端软件和智能卡芯片CPU的处理能力分别对智能卡控制指令进行封装和过滤,以实现在现有高速接口上传输智能卡控制指令的目的。
本发明针对现有高速传输协议,如USB2.0、MMC、SD等,无法传输智能卡控制指令,从而不能满足日趋成熟的手机电视、手机银行、安全数据存储以及3G时代新兴应用的要求的现状,提出了在现有高速通讯协议之上开辟智能卡指令逻辑传输通道,并对传输指令进行符合标准读写传输要求的封装,结合智能卡芯片对智能卡控制指令进行过滤和处理,从而实现高速的、无驱的指令传输服务,扩展了存储设备的功能。
通过本方法进行改进的数据通讯接口协议能够广泛应用于USB、MMC/SD以及SATA/PATA等块设备数据通讯接口上,为安全移动存储设备提供高速、无驱的指令传输服务。本发明尤其适用于手机电视、移动支付、保密存储等安全移动存储领域。
具体实施方式
普通的移动存储设备,如U盘,移动硬盘等,作为简单的数据存储设备只负责响应主机对其的读/写命令,在主控芯片和文件系统的控制下对块数据进行存储访问,无法对数据本身进行识别和处理并进行针对数据本身的细颗粒操作。为了提升移动存储设备的安全特性,满足日益丰富的安全应用的需求,各大厂商都提出了自己的安全移动存储设备解决方案,其结构示意图如图1所示,但各厂商不同产品间存在兼容性问题,无法普及推广。本发明在现有的标准高速传输协议上建立逻辑通道,此逻辑通道是采取在普通数据包前加上数据包头TAG来实现的,其中,数据包头TAG用以区分普通数据包和智能卡控制指令数据包,利用对此逻辑通道可以实现智能卡控制指令的高速、无驱传输,很好的解决了设备兼容性问题。
本发明提供的标准接口智能卡控制指令传输方法,包括设备识别、指令发送和响应获取等过程。通过借助以下实例更详细的说明本发明,且以下实例仅是说明性的,本发明并不受这些实例的限制。
如图2所示,智能卡控制指令传输的具体步骤如下:
(1)移动存储设备插入主机终端。终端软件对此设备进行识别,若是符合图1所示内部结构的安全移动存储设备(现有普通移动存储设备中增加智能卡芯片),则转入步骤(2),否则,终端软件拒绝设备接入,转入步骤(7)。
(2)主机终端向安全移动存储设备发送智能卡控制指令数据包。
主机终端向安全移动存储设备发送智能卡控制指令,包括主机终端软件对智能卡控制指令进行封装,然后在标准的数据接口进行发送。其具体步骤为:
(a1)主机终端软件将指令数据进行指令数据包格式的封装。
(a2)主机终端软件将(a1)中生成的指令数据包进行指令块封装。
为了能够通过标准数据写入接口将指令传送到设备,主机终端必须将指令数据包封装到指令块中,并使用非缓冲的写入操作将指令块发送到安全移动存储设备(缓冲方式操作可能导致指令没有真正发送)。
指令块的数据包格式为:
其中,32字节的字符串可以自定义为任意的标识串,此字符串作为数据包头TAG用于建立逻辑通道并用于标识智能卡控制指令,指令数据包以如下格式为例:
指令数据长度(2BYTE) | 指令数据(MAX65535BYTE) |
例如:对于普通取响应指令:00 84 00 00 08
其指令数据包为:00 05(指令长度)00 84 00 00 08(指令内容)
(a3)主机终端软件利用标准的块设备非缓冲写方式向安全访问地址发送指令块。
为了避免该指令块数据与普通数据块产生碰撞,我们要求指令块必须从普通数据块不会用到,同时标准数据接口支持的逻辑地址进行发送,为了描述方便,在本实例中我们以逻辑块地址0x04为智能卡控制指令的安全访问地址,逻辑块0x04一般用于存储文件系统关键数据,而且不会随机变动,使用逻辑块地址0x04来传送指令块可基本上解决普通数据块与指令块碰撞的问题。
通过对数据包的智能卡控制指令的发送地址以及数据包头TAG进行判断和识别,本发明能够利用标准的块设备非缓冲读写实现指令的收发,从而为安全移动存储设备提供便捷的指令传输服务。
(a4)主机终端软件等待设备响应。
(3)安全移动存储设备识别智能卡控制指令数据包,并处理智能卡控制指令。
如图(3)所示,智能卡控制指令数据包的识别处理的具体步骤如下:
(b1)主机终端通过标准接口将智能卡控制指令数据包发送至安全移动存储设备。
(b2)智能卡芯片拦截数据包。
(b3)智能卡芯片对拦截的数据包进行分析,如果该数据包的发送地址是0x04,则进入步骤(b4),否则,此数据包为普通读写数据包,交给主控芯片处理。
(b4)对该数据包的包头进行分析,如果该包头与约定的智能卡控制指令数据包的包头相同,则该数据包为智能卡控制指令数据包,否则,此数据包也为普通读写数据包,交给主控芯片处理。
(4)主机终端向安全移动存储设备发送取响应指令数据包,以获取所述智能卡控制指令的处理结果。
(5)安全移动存储设备识别取响应指令数据包,并将上述智能卡控制指令的处理结果发送给主机终端。
智能卡芯片按照下述过程识别取响应指令数据包:
(C1)智能卡芯片拦截由主机终端通过标准接口发送的数据包;
(C2)智能卡芯片对拦截的数据包进行分析,如果该数据包的发送地址是所述的安全访问地址,则进入步骤(C3),否则,此数据包为普通读写数据包,交给主控芯片处理;
(C3)判断智能卡芯片操作系统的当前状态,如果处于智能卡指令执行模式,则该拦截的数据包为取响应指令数据包,将上述智能卡控制指令的响应结果发送给主机终端,否则,此数据包也为普通读写数据包,交给主控芯片处理。
当安全移动存储设备接收到一条智能卡控制指令后,智能卡芯片操作系统(COS)进入智能卡指令执行模式,直至该指令对应的结果响应数据包成功反馈给主机终端,智能卡芯片操作系统便返回普通模式继续进行指令接收与识别。在智能卡指令执行模式中,系统将识别出来的普通读写数据包交给主控芯片处理,并拒绝其它的智能卡指令请求(简单的丢弃)。
在智能卡指令执行模式下,主机终端软件可以通过对地址0x04发送读取指令来获取响应。如果智能卡处于指令执行模式下,任何对0x04块的普通读取请求都不能正确获取到0x04逻辑块的存储信息,而且可能导致指令响应被异常捕获。对于现有的各种文件系统,0x04均被BOOT信息保留,且仅在设备加载文件系统过程使用,数据异常不会产生。
(6)主机终端获得所述智能卡控制指令的处理结果。
主机接收响应数据,并对响应数据包进行识别,若响应数据包头TAG为预定义的TAG,则本条智能卡控制指令发送成功,否则,主机继续发送取响应指令的标准读请求,并等待响应数据包,以达到主机与安全移动存储的同步通信。
(7)终止。
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据实施例和附图公开的内容,可以采用其它多种具体实施方式实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。