具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
如图1所示,是本发明虚拟智能卡的通信方法的流程图,包括:
步骤101,虚拟智能卡管理器接收源虚拟智能卡发送的数据包,数据包中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和净载数据。其中,身份信息包括以下任意一项或多项信息:虚拟智能卡的卡片编号、卡片名称、卡片存储地址。
步骤102,查找具有所述目的虚拟智能卡身份信息的目的虚拟智能卡,并将数据包发送至目的虚拟智能卡,以使目的虚拟智能卡解析所述净载数据。
虚拟智能卡管理器可以按照以下方式查找目的虚拟智能卡:对于多线程的情况,通过线程列表查找到与数据包中的目的虚拟智能卡身份信息相匹配的目的虚拟智能卡;对于多虚拟机的情况,通过内核管理程序查找到与数据包中的目的虚拟智能卡身份信息相匹配的目的虚拟智能卡。
因为物理智能卡内的多张虚拟智能卡是分别独立存在的,任意两张虚拟智能卡间都不存在通信通道,因此,这就限制了虚拟智能卡间的通信。而位于虚拟智能卡管理层中的虚拟智能卡管理器可以为每张虚拟智能卡设置配置信息(包括分配虚拟智能卡的存储位置、独占端口等硬件资源),因此,虚拟智能卡管理器掌握任意一张虚拟智能卡的配置信息,并可与任意一张虚拟智能卡通信。综上所述,为了实现虚拟智能卡间通信的技术目的,本发明实施例通过虚拟智能卡管理器作为中介,来建立源虚拟智能卡与目的虚拟智能卡之间的通信通道。当源虚拟智能卡与目的虚拟智能卡通信传送数据时,源虚拟智能卡先将数据包发送至虚拟智能卡管理器,由虚拟智能卡管理器查找目的虚拟智能卡,进而将源虚拟智能卡发送的数据包转发至目的虚拟智能卡,完成虚拟智能卡间的通信过程。
此处需要说明的是,本发明实施例的虚拟智能卡的通信方法可以实现同一张物理智能卡内的多张虚拟智能卡间的通信过程,也可以实现不同物理智能卡内的多张虚拟智能卡的通信过程。对于同一物理智能卡的情况而言,只需要按照本发明的通信方法由虚拟智能卡管理器完成源虚拟智能卡和目的虚拟智能卡间的数据转发;对于不同物理智能卡的情况而言,首先,利用现有技术实现多张物理智能卡间的通信(例如:通过USB等通信接口实现物理智能卡间的通信,通过接触式或者非接触式方式实现物理智能卡间的通信);其次,在源物理智能卡将数据发送至目的物理智能卡之后,由目的物理智能卡内的虚拟智能卡管理器按照本发明的通信方法将数据最终转发至目的虚拟智能卡,完成通信过程。
作为本发明实施例中虚拟智能卡进行数据打包的一种实现方式,参考OSI(Open System Interconnect,开放式系统互联)的分层模型,可以将虚拟智能卡按照通信层次依次划分为:应用层、传输层和物理层,每层都负责不同的通信功能,都向上一层提供服务,并且可以使用下一层提供的服务。形成数据包的具体过程如下:
(1)应用层协议可包括APDU(Application Protocol Data Unit,应用协议数据单元)协议和/或HTTP(Hyper Text Transfer Protocol,超文本传输协议)协议,将净载数据打包为APDU格式的数据包或者打包为HTTP格式的数据包,并透明传输至传输层进一步处理。所谓透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。
(2)传输层协议为TCP协议,能够为不同虚拟智能卡的应用提供端到端的通信。进一步地,为了向应用层提供独立于具体协议(APDU协议或者HTTP协议)的接口,传输层还负责提供Socket API供应用层调用。传输层用于加上TCP首部后,对应用层传输的APDU格式的数据包或者HTTP格式的数据包重新进行数据打包,然后将打包后的数据段传输至物理层。此处需要说明的是,TCP首部内可包括源端口号、目的端口号、序号、确认序号、首部长度、窗口大小、校验和等信息。
(3)物理层是一个抽象的层次,它由虚拟智能卡的虚拟的硬件层组成,负责提供基本的数据传送功能。物理层在收到传输层传送来的数据段之后,加上IP首部(包括源虚拟智能卡身份信息和目的虚拟智能卡身份信息),并对带有TCP首部的数据包重新进行数据打包发送至虚拟智能卡管理器。至此,源虚拟智能卡就完成了数据打包的过程,为虚拟智能卡间的通信提供了数据基础。
上述过程为数据发送时进行数据打包的实现方法,相应地,在目的虚拟智能卡接收到数据包之后,其解析数据包的过程如下:首先,物理层接收虚拟智能卡管理器发送的数据包,通过IP首部中包含的目的虚拟智能卡身份信息判断该数据包是否为针对本虚拟智能卡的数据包,如果是,则去除数据包中的IP首部,发送至传输层。其次,传输层接收物理层发送的去除了IP首部的数据包,并去除其中的TCP首部之后,将数据传输至应用层,由应用层根据采用的应用层协议解析数据包中包含的净载数据。
此处需要说明的是,对于同一物理智能卡内的多张虚拟智能卡间的通信而言,也可以通过不分层的方式进行。例如,采用类似于进程间通信、信息共享存储等方式,由虚拟智能卡管理器查找进程ID(进程ID用于代表虚拟智能卡的身份信息),并将数据包转发至具有目的进程ID的虚拟智能卡,完成通信过程。
进一步地,如图2所示,在虚拟智能卡进行数据交互之前,本发明实施例虚拟智能卡的通信方法还包括对卡片进行激活和复位的过程,具体步骤如下:
步骤201,虚拟智能卡管理器接收源虚拟智能卡发送的激活信号,激活信号中包含目的虚拟智能卡身份信息;
步骤202,为具有所述目的虚拟智能卡身份信息的目的虚拟智能卡分配内存,运行目的虚拟智能卡的主程序,使目的虚拟智能卡进入运行状态。
经过步骤201和步骤202之后,目的虚拟智能卡已进入运行状态,此时,再对目的虚拟智能卡进行复位操作。具体过程为:
步骤203,虚拟智能卡管理器接收源虚拟智能卡发送的复位信号,复位信号中包含源虚拟智能卡身份信息和目的虚拟智能卡身份信息;
步骤204,查找具有目的虚拟智能卡身份信息的目的虚拟智能卡,并将复位信号发送至目的虚拟智能卡;
步骤205,接收目的虚拟智能卡发送的复位应答,复位应答中包含源虚拟智能卡身份信息和目的虚拟智能卡身份信息;
步骤206,查找具有源虚拟智能卡身份信息的源虚拟智能卡,并将复位应答发送至源虚拟智能卡,使源虚拟智能卡与目的虚拟智能卡按照默认的数据传输方式进行通信。
进一步地,如果虚拟智能卡应用层包含的协议为APDU协议,即应用层打包形成的数据包为APDU协议格式的数据包,则本发明实施例中对目的虚拟智能卡进行复位操作后,还可以包括协议类型选择过程,即由目的虚拟智能卡选择其与源虚拟智能卡间的数据传输方式,如图3所示,具体步骤如下:
步骤301,虚拟智能卡管理器接收源虚拟智能卡发送的PPS请求信号,PPS请求信号中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和PPS请求;
步骤302,查找具有目的虚拟智能卡身份信息的目的虚拟智能卡,并将PPS请求信号发送至目的虚拟智能卡;
步骤303,接收目的虚拟智能卡发送的PPS响应信号,PPS响应信号中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和PPS响应;
步骤304,查找具有源虚拟智能卡身份信息的源虚拟智能卡,并将PPS响应信号发送至源虚拟智能卡,源虚拟智能卡与目的虚拟智能卡按照PPS响应信号对应的数据传输方式进行通信。
源虚拟智能卡通过虚拟智能卡管理器发送的复位应答中TA1接口字符的默认值来判断是否向虚拟智能卡管理器发送PPS请求信号,如果TA1接口字符不是默认值(即不等于“11”或者“01”),则执行协议类型选择过程,向虚拟智能卡管理器发送PPS请求信号,进而由目的虚拟智能卡选择数据传输方式,并根据目的虚拟智能卡选定的数据传输方式进行通信,完成数据传输。
此处需要说明的是,本发明实施例所指数据传输方式为同步半双工字符传输方式和异步半双工块传输方式。其中,同步传输是一种以数据块为传输单位的数据传输方式,该方式下数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列,以便对数据块进行差错控制。异步传输是将比特分成小组进行传送,小组可以是8位的1个字符或是更长,发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。
下面以位于同一张物理智能卡内的SAM(security account manager,安全账号管理器)卡和用户卡为例,对本发明实施例通信方法的通信过程进行简单介绍。其中,SAM卡为源虚拟智能卡,用户卡为目的虚拟智能卡,当二者都使用APDU协议作为应用层协议时,应用本发明实施例通信方法进行通信的过程如下:
(1)在SMA卡与用户卡进行数据交互之前,SAM卡需要先对用户卡进行激活和复位操作。因为用户卡的初始状态为空闲状态,用户卡的通信需要由SAM卡启动,如果没有SAM卡发送的外部请求(即SAM卡向用户卡发送的激活信号),用户卡是不会向外部传输数据的。用户卡在SAM卡发送的激活信号的触发下进入运行状态,然后,SAM卡开始对用户卡进行复位操作,经由虚拟智能卡管理器间接地向用户卡发送复位信号,用户卡根据其支持的数据传输方式向SAM卡返回一个复位应答(Answer To Reset,简称ATR)。SAM卡接收到经由虚拟智能卡管理器转发来的ATR后,分析ATR中包含的参数:
如果TA1接口字符为默认值“11”或者“01”,则说明用户卡欲使用默认的数据传输方式与SAM卡进行通信,此时,SAM卡和用户卡可直接进入数据传输步骤。
如果TA1接口字符不为默认值“11”或者“01”,则说明用户卡不使用默认的数据传输方式与SAM卡进行通信,此时,需要执行协议类型选择步骤,SAM卡通过虚拟智能卡管理器间接地向用户卡发送PPS(Protocol andParameter Select,协议和参数选择)请求,由用户卡选择其支持的数据传输方式,并向SAM卡返回PPS响应,SAM卡接收PPS响应并识别其中包含的用户卡选定的数据传输方式,并按照所述选定的数据传输方式与用户卡进行通信。
(2)在完成对用户卡的激活和复位操作后,SAM卡与用户卡即可进入通信状态。对于采用分层方式进行通信的情况而言,SAM卡的应用层对待传输的净载数据进行数据打包,形成APDU协议格式的数据包,并透明传输至传输层,由传输层加上TCP首部进行二次打包之后发送至物理层,并进而由物理层进行第三次数据打包,加入包含有SAM卡身份信息和用户卡身份信息的IP首部,以使SAM卡与用户卡之间能够准确的完成数据传输过程。
(3)SAM卡完成数据打包之后,即将数据包传输至虚拟智能卡管理器,由虚拟智能卡管理器调用虚拟智能卡配置信息表,根据数据包中包含的用户卡身份信息查询用户卡,进而准确的将数据包传输至用户卡。
(4)用户卡接收经由虚拟智能卡管理器转发的数据包,并经由物理层、传输层依次去除数据包中的IP首部和TCP首部,将APDU协议格式的数据包传输至应用层,因为用户卡应用层使用与SAM卡应用层相同的协议,亦为APDU协议,因此,用户卡可以准确的解析出数据包中包含的净载数据,完成本次数据通信过程。
此处需要说明的是,上述过程仅为SAM卡发送、用户卡接收的通信过程,当然,亦可按照上述过程完成用户卡发送、SAM接收的通信过程,其通信原理相同,此处不再赘述。
相应地,本发明实施例还提供一种虚拟智能卡的通信装置,如图4所示,通信装置包括:
数据包接收单元401,用于接收源虚拟智能卡发送的数据包,数据包中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和净载数据;
第一查找单元402,用于查找具有目的虚拟智能卡身份信息的目的虚拟智能卡,并将数据包发送至目的虚拟智能卡,以使目的虚拟智能卡解析净载数据。
进一步地,在虚拟智能卡间建立通信,进行数据交互之前,还要对目的虚拟智能卡进行激活和复位操作。如图5所示,虚拟智能卡的通信装置还包括:
激活信号接收单元501,用于在数据包接收单元接收数据包之前,接收源虚拟智能卡发送的激活信号,激活信号中包含目的虚拟智能卡身份信息;
内存分配单元502,用于为具有所述目的虚拟智能卡身份信息的目的虚拟智能卡分配内存,使目的虚拟智能卡进入运行状态;
复位信号接收单元503,用于在目的虚拟智能卡进入运行状态后,接收源虚拟智能卡发送的复位信号,复位信号中包含源虚拟智能卡身份信息和目的虚拟智能卡身份信息;
第二查找单元504,用于查找具有目的虚拟智能卡身份信息的目的虚拟智能卡,并将复位信号发送至目的虚拟智能卡;
复位应答接收单元505,用于接收目的虚拟智能卡发送的复位应答,复位应答中包含源虚拟智能卡身份信息和目的虚拟智能卡身份信息;
第三查找单元506,用于查找具有源虚拟智能卡身份信息的源虚拟智能卡,并将复位应答发送至源虚拟智能卡,使源虚拟智能卡与目的虚拟智能卡按照默认的数据传输方式进行通信。
进一步地,如果虚拟智能卡应用层协议采用APDU协议,则本发明实施例中对目的虚拟智能卡进行复位操作后,还可以包括协议类型选择过程,如图6所示,本发明实施例虚拟智能卡的通信装置还包括:
PPS请求信号接收单元601,用于在第三查找单元将复位应答发送至源虚拟智能卡之后,接收源虚拟智能卡发送的PPS请求信号,PPS请求信号中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和PPS请求;
第四查找单元602,用于查找具有目的虚拟智能卡身份信息的目的虚拟智能卡,并将PPS请求信号发送至目的虚拟智能卡;
PPS响应信号接收单元603,用于接收目的虚拟智能卡发送的PPS响应信号,PPS响应信号中包含源虚拟智能卡身份信息、目的虚拟智能卡身份信息和PPS响应;
第五查找单元604,用于查找具有源虚拟智能卡身份信息的源虚拟智能卡,并将PPS响应信号发送至源虚拟智能卡,使源虚拟智能卡与目的虚拟智能卡按照PPS响应信号对应的数据传输方式进行通信。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。