一种智能卡设备的访问方法及系统与流程

文档序号:12721035阅读:237来源:国知局
一种智能卡设备的访问方法及系统与流程

本发明涉及智能卡设备应用技术领域,具体涉及一种智能卡设备的访问方法及系统。



背景技术:

在黑客攻击猖獗、病毒泛滥的互联网时代,个人电脑的安全受到越来越多的威胁,服务器所面临的安全风险则更为严重。在这样的形势下,对操作系统的受限账户的使用以及服务器的堡垒机的应用变得越来越广泛。

很多情况下,服务器的管理员通过堡垒机远程连接到服务器来进行日常管理及维护,用于身份鉴别的智能卡连接在服务器主机上。而由于windows smart card service的限制,远程登录账户启动的进程无法操作智能卡设备。同样的,在某些受限制的用户账户下,登录到本地的账户也由于相同的原因而无法操作智能卡设备。



技术实现要素:

针对现有技术中存在的缺陷,本发明实施例的目的在于提供一种能够克服上述问题或者至少能够部分地解决上述问题的一种智能卡设备的访问方法及系统。

为实现上述目的,本发明的一个实施例中提供了一种智能卡设备的访问方法,包括以下步骤:

连接第一终端设备和智能卡设备;所述第一终端设备中安装有与所述智能卡设备相对应的第一智能卡应用程序;

建立第一智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道;

第一智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务;

系统智能卡服务接收所述第一智能卡设备访问请求,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第一响应信息;

系统智能卡服务将所述第一响应信息通过所述第一命名管道发送到所述第一智能卡应用程序。

进一步,如上所述的一种智能卡设备的访问方法,该方法还包括:

建立第二终端设备与所述第一终端设备之间的连接;所述第二终端设备中安装有与所述智能卡设备相对应的第二智能卡应用程序;

建立第二智能卡应用程序与第一终端设备的系统智能卡服务之间的第二命名管道,第二智能卡应用程序通过所述第二命名管道将第二智能卡设备访问请求发送到系统智能卡服务;

系统智能卡服务接收所述第二智能卡设备访问请求,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第二响应信息;

系统智能卡服务将所述第二响应信息通过第二命名管道发送到所述第二智能卡应用程序。

进一步,如上所述的一种智能卡设备的访问方法,该方法还包括:

当系统智能卡服务检测到所述智能卡设备插入后,系统智能卡服务根据所述第一命名管道的管道名称,通过调用命名管道打开函数createfile按照预设的第一时间间隔尝试连通所述第一命名管道,直至连接成功;

所述第一智能卡应用程序启动后,根据所述第一命名管道的管道名称创建第一命名管道,并调用等待连接命名管道函数ConnectNamedPipe等待所述系统智能卡服务的连接;

系统智能卡服务通过所述调用命名管道打开函数createfile连通到所述第一命名管道。

进一步,如上所述的一种智能卡设备的访问方法,所述第一智能卡访问请求包括智能卡设备枚举请求、设备连接请求、设备操作指令和断开设备连接请求。

进一步,如上所述的一种智能卡设备的访问方法,第一智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务之前,还包括:

系统智能卡服务对所述第一智能卡应用程序进行安全认证,认证通过后,接收所述第一智能卡应用程序发送的第一智能卡访问请求。

进一步,如上所述的一种智能卡设备的访问方法,第一智能卡应用程序与系统智能卡服务之间根据两者约定的数据格式进行通信;

系统智能卡服务将第一响应信息发送到所述第一智能卡应用程序之前,还包括:根据所述两者约定的数据格式,将第一响应信息进行格式转换,将转换后的第一响应信息发送到第一智能卡应用程序。

本发明实施例中还提供了一种智能卡设备的访问系统,包括第一终端设备和智能卡设备;所述第一终端设备与智能卡设备连接,第一终端设备中安装有与所述智能卡设备相对应的第一智能卡应用程序;

所述第一终端设备包括:

第一命名管道建立模块,用于建立第一智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道;

第一请求发送模块,用于第一智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务;

第一请求处理模块,用于在系统智能卡服务接收所述第一智能卡设备访问请求后,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第一响应信息;

第一响应发送模块,用于系统智能卡服务通过所述第一命名管道将第一响应信息发送到所述第一智能卡应用程序;

第一响应接收模块,用于第一智能卡应用程序通过所述第一命名管道接收所述第一响应信息。

进一步,如上所述的一种智能卡设备的访问系统,该系统还包括与第一终端设备连接的第二终端设备,所述第二终端设备中安装有与所述智能卡设备相对应的第二智能卡应用程序;

所述第二终端设备包括:

第二命名管道建立模块,用于建立第二智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道;

第二请求发送模块,用于第二智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务;

第二响应接收模块,用于第二智能卡应用程序通过第二命名管道获取系统智能卡服务发送的第二响应信息;

所述第一终端设备还包括:

第二请求处理模块,用于在系统智能卡服务接收所述第二智能卡设备访问请求后,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第二响应信息;

第二响应发送模块,用于用于系统智能卡服务通过所述第二命名管道将第二响应信息发送到所述第二智能卡应用程序。

进一步,如上所述的一种智能卡设备的访问系统,所述第一命名管道建立模块包括:

连接尝试单元,用于在所述系统智能卡服务启动后,当系统智能卡服务检测到所述智能卡设备插入后,系统智能卡服务根据所述第一命名管道的管道名称,通过调用命名管道打开函数createfile按照预设的第一时间间隔尝试连通所述第一命名管道,直至连接成功;

管道再次建立单元,用于所述第一智能卡应用程序启动后,根据所述第一命名管道的管道名称创建第一命名管道,并调用等待连接命名管道函数ConnectNamedPipe等待所述系统智能卡服务的连接;

管道连通单元,用于系统智能卡服务通过所述调用命名管道打开函数createfile连通到所述第一命名管道。

进一步,如上所述的一种智能卡设备的访问系统,所述第一智能卡访问请求包括智能卡设备枚举请求、设备连接请求、设备操作指令和断开设备连接请求。

本发明的有益效果在于:本发明实施例中所提供的智能卡设备访问方法及系统,使用权限高的系统服务来调用智能卡服务接口,应用程序通过命名管道来告诉服务程(系统智能卡服务)序要设备做什么,该方案无论应用程序权限高低,都可以通过命名管道与服务程序通信,解决了现有技术中应用程序权限不足情况下无法调用智能卡服务接口的问题,更好的满足了用户的实际应用需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,附图仅限于示出优选实施方式的目的,而并不认为是本发明的限制,且对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一个实施例中的一种智能卡设备的访问方法的流程示意图;

图2为本发明另一个实施例中的一种智能卡设备的访问方法的流程示意图;

图3为本发明一个实施例中的一种智能卡设备的访问系统的结构示意图;

图4为本发明图3中访问系统的框架示意图;

图5为本发明一个实施例中的第一命名管道建立模块的结构示意图;

图6为本发明另一个实施例中一种智能卡设备的访问系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明保护的范围。

图1示出了本发明的一个实施中提供的一种智能卡设备的访问方法的流程示意图,由图中可以看出,该方法主要可以包括以下步骤:

步骤S110:建立第一终端设备的第一智能卡应用程序与系统智能卡服务之间的第一命名管道;

步骤S120:第一终端设备的第一智能卡应用程序通过第一命名管道将第一智能卡设备访问请求发送到其系统智能卡服务;

本实施例所提供的访问方法,适用于智能卡设备与第一终端设备之间,所述智能卡设备是指基于智能卡(具有智能卡芯片)的具有身份识别和/或安全验证的智能卡设备,包括但不限于U盾、USBKey等安全认证设备,所述第一终端设备包括但不限于PC机或服务器等,第一终端设备上安装有与智能卡识别相对应的第一智能卡应用程序即应用客户端,第一终端设备在运行其上的应用客户端时,需要与智能卡设备进行通信,以对智能卡设备进行访问和操作。

本实施例中,连接第一终端设备和智能卡设备后,为了保证所述第一智能卡应用能够对智能卡设备进行操作,第一智能卡应用程序启动后,首先与第一终端设备的系统智能卡服务(操作系统服务程序,smart card service)之间建立用于两者通信的第一命名管道,第一智能卡应用程序作为命名管道的服务器端,系统智能卡服务作为命名管道的客户端,建立第一智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道,指的是建立第一智能卡应用程序所在的进程与系统智能卡服务所在的进程间的命名管道。其中,命名管道的具体建立过程为现有技术,在此不再描述。其中,第一终端设备与是智能卡设备之间的连接方式包括但不限于USB连接等方式。

完成所述第一命名管道的建立后,第一智能卡应用程序通过该第一命名管道向系统智能卡服务发送第一智能卡访问请求。其中,所述第一智能卡访问请求包括但不限于智能卡设备枚举请求、设备连接请求、设备操作指令和断开设备连接请求等。

在实际应用中,为了避免非法应用程序通过系统智能卡服务来操作智能卡,第一智能卡应用程序通过系统智能卡服务向智能卡设备发送第一智能卡访问请求之前,还包括:

系统智能卡服务对所述第一智能卡应用程序进行安全认证,认证通过后,接收所述第一智能卡应用程序发送的第一智能卡访问请求。

即在命名管道连通后要对智能卡应用程序进行身份鉴别,从而避免了非法程序建立命名管道来操作智能卡设备。其中,对第一智能卡应用程序进行安全认证的方式可以根据实际需要进行确定。例如,可以采用以下方式:

第一命名管道连通后,在认证阶段,系统智能卡服务要求首先对第一智能卡应用程序进行安全验证,并向第一智能卡应用程序发送一随机数,应用程序使用约定的密钥以对称算法加密服务程序发来的随机数,加密后将密文通过管道发回给系统智能卡服务程序,系统服务程序以约定的密钥解密后得出随机数原文,与先前发给应用程序的随机数比较,比较一致则认证通过,通过后服务程序才会处理其他类型的消息。

在实际应用中,第一智能卡应用程序与系统智能卡服务之间的第一命名管道建立成功后,两者均会存储第一命名管道的管道名称,以便于后续两者之间的再次连接通信。其中,所述管道名称为第一智能卡应用程序与系统智能卡服务之间约定好。

本发明的一个实施例中,建立第一智能卡应用程序与系统智能卡服务回见的第一命名管道,还可以包括:

启动所述系统智能卡服务;

当系统智能卡服务检测到所述智能卡设备插入后,系统智能卡服务根据所述第一命名管道的管道名称,通过调用命名管道打开函数createfile按照预设的第一时间间隔尝试连通所述第一命名管道,直至连接成功;

所述第一智能卡应用程序启动后,根据所述第一命名管道的管道名称创建第一命名管道,并调用等待连接命名管道函数ConnectNamedPipe等待所述系统智能卡服务的连接;

系统智能卡服务通过所述调用命名管道打开函数createfile连通到所述第一命名管道。

在实际应用中,系统智能卡服务以system service的形式始终在设备后台运行,本实施例中,服务程序调用操作系统接口来检测智能卡设备的插拔,当检测到有智能卡设备插入时,即调用CreateFile传入第一命名管道的名称pipename来尝试连通管道,如果此时第一智能卡应用程序尚未创建第一命名管道和智能卡系统服务端会话,则会连接失败,连接失败则系统智能卡服务等待第一设定时间间隔(如100毫秒)后再次尝试,第一智能卡应用程序启动后,先通过CreateNamedPipe来创建所述第一命名管道,然后调用ConnectNamedPipe等待系统智能卡服务连接,此时,尝试连接的系统智能卡服务通过CreateFile即可连通管道。

步骤S130:系统智能卡服务接收所述第一智能卡设备访问请求,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第一响应信息;

步骤S140:系统智能卡服务将所述第一响应信息通过所述第一命名管道发送到所述第一智能卡应用程序。

系统智能卡服务接收到第一智能卡应用程序通过所述第一命名管道发送来的所述第一智能卡设备访问请求后,根据该请求的类型调用对应的智能卡服务接口来完整对智能卡设备的相应操作,获取到智能卡设备返回的对于该相应操作的第一响应信息,之后,系统智能卡服务通过所述第一命名管道将该响应信息发送到第一智能卡应用程序,从而完整了应用客户端对所述智能卡设备的间接操作。

其中,所述请求的类型指的即是具体的什么访问请求,如智能卡设备枚举请求或智能卡设备连接请求等等,系统智能卡服务根据请求的类型调用对应的智能卡服务器接口即是指系统智能卡服务调用用于完成所述第一智能卡访问请求的系统函数,通过调用对应的系统函数以完成对智能卡设备的相应操作,例如,所述访问请求为智能卡设备枚举请求,系统智能卡服务接收到该请求后,便调用系统的用于完成智能卡设备枚举操作的函数,由该函数完成对智能卡设备的枚举操作,得到智能卡设备对于枚举操作的响应信息。

在本发明的一个实施例中,所述第一智能卡应用程序与系统智能卡服务之间可以根据两者约定的数据格式进行通信,即两个进程间可以自行约定指令传输方式,此时,系统智能卡服务将第一响应信息发送到所述第一智能卡应用程序之前,还包括:根据所述两者约定的数据格式,将智能卡设备的第一响应信息进行转换,将转换后的第一响应信息发送到第一智能卡应用。

图2示出了本发明的另一个实施例中一种智能卡设备的访问方法的流程图,其中,本实施例适用于第二终端设备、第一终端设备和智能卡设备三者之间,其中,第二终端设备与第一终端设备连接,第一终端设备与智能卡设备连接。

本实施例中,所述第二终端设备包括但不限于PC机或服务器等,所述第二终端设备中安装有与所述智能卡设备相对应的第二智能卡应用程序即应用客户端;第一终端设备与第二终端设备的连接方式包括但不限于远程连接等方式,第一终端设备与智能卡设备之间的连接方式包括但不限于USB连接、蓝牙连接等方式。

由图2中可以看出,所述智能卡设备访问方法主要可以包括以下步骤:

步骤S210:建立第二智能卡应用程序与第一终端设备的系统智能卡服务之间的第二命名管道;

步骤S220:第二智能卡应用程序通过所述第二命名管道将第二智能卡设备访问请求发送到系统智能卡服务;

步骤S230:系统智能卡服务接收所述第二智能卡设备访问请求,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第二响应信息;

步骤S240:系统智能卡服务将所述第二响应信息通过第二命名管道发送到所述第二智能卡应用程序。

本实施例中的所述的智能卡访问方法与图1中所示的智能卡访问方法的不同之处在于:图2中所示的方法中,智能卡应用程序即智能卡应用客户端是位于第二终端设备中,第二终端设备通过与第一终端设备连接,通过与第一终端设备的系统智能卡服务通信,完整对与第一终端设备连接的智能卡设备的操作。

可见,本发明所提供的智能卡访问方法,即适用于远程对智能卡设备的情景,又适用于本地对智能卡设备操作的情景,例如,服务器(第一终端设备)的管理员可以通过堡垒机(第二终端设备)远程连接到服务器上,通过在堡垒机上远程登录账户启动的进程(第二智能卡应用程序)操作服务器上连接的用于身份鉴别的智能卡设备,或者直接通过在服务器上登录到本地账户启动的进程(第一智能卡应用程序)操作智能卡设备。

与图1中所示的方法相对应,本发明的一个实施例中还提供了一种智能卡设备的访问系统,如图3所示,该系统包括第一终端设备100和智能卡设备200;其中,所述第一终端设备100与智能卡设备200连接,第一终端设备100中安装有与所述智能卡设备相对应的第一智能卡应用程序。

本实施例中,所述第一终端设备100包括第一命名管道建立模块110、第一请求发送模块120、第一请求处理模块130、第一响应发送模块140和第一响应接收模块150。其中:

第一命名管道建立模块110,用于建立第一智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道;

第一请求发送模块120,用于第一智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务;

第一请求处理模块130,用于在系统智能卡服务接收所述第一智能卡设备访问请求后,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第一响应信息;

第一响应发送模块140,用于系统智能卡服务通过所述第一命名管道将第一响应信息发送到所述第一智能卡应用程序;

第一响应接收模块150,用于第一智能卡应用程序通过所述第一命名管道接收所述第一响应信息。

其中,所述第一智能卡访问包括但不限于智能卡设备枚举请求、设备连接请求、设备操作指令和断开设备连接请求等。

本实施例中所提供的智能卡访问系统,第一终端设备100上的第一智能卡应用程序通过命名管道的方式实现与系统智能卡服务(操作系统的智能卡服务)的通信,系统智能卡服务根据智能卡应用程序对智能卡的访问请求,调用对应的智能卡服务接口向智能卡设备发送指令,完成对智能卡设备的操作,接收智能卡设备返回的响应指令,再通过命名管道将智能卡设备返回的数据返回给应用程序,从而实现了智能卡应用程序对智能卡设备的间接操作,如图4所示。

由于系统服务system service是权限最高的进程,与应用程序各自独立的运行在内存中,不受当前登录账户权限的影响,有足够权限调用智能卡服务接口操作智能卡设备,因此,通过该访问系统,可有效解决应用程序权限不足情况下无法调用智能卡服务接口的问题。

在本发明的一个实施例中,如图5所示,所述第一命名管道建立模块110还可以包括连接尝试单元111、管道再次建立单元112和管道连通单元113。其中:

连接尝试模块111,用于在所述系统智能卡服务启动后,当系统智能卡服务检测到所述智能卡设备200插入后,系统智能卡服务根据所述第一命名管道的管道名称,通过调用命名管道打开函数createfile按照预设的第一时间间隔尝试连通所述第一命名管道,直至连接成功;

管道再次建立模块112,用于所述第一智能卡应用程序启动后,根据所述第一命名管道的管道名称创建第一命名管道,并调用等待连接命名管道函数ConnectNamedPipe等待所述系统智能卡服务的连接;

管道连通模块113,用于系统智能卡服务通过所述调用命名管道打开函数createfile连通到所述第一命名管道。

与图2中所示的方法相对应,本发明的一个实施例中提供了一种智能卡设备的访问系统,如图6所示,该系统包括第二终端设备300、第一终端设备100和智能卡设备200,第二终端设备300与第一终端设备100连接,所述第二终端设备300中安装有与所述智能卡设备100相对应的第二智能卡应用程序。

本实施例中,所述第二终端设备300包括第二命名管道建立模块310、第二请求发送模块320和第二响应接收模块330,所述第一终端设备100还包括第二请求处理模块160和第二响应发送模块170。其中:

第二命名管道建立模块310,用于建立第二智能卡应用程序与第一终端设备的系统智能卡服务之间的第一命名管道;

第二请求发送模块320,用于第二智能卡应用程序通过所述第一命名管道将第一智能卡设备访问请求发送到系统智能卡服务;

第二响应接收模块330,用于第二智能卡应用程序通过第二命名管道获取系统智能卡服务发送的第二响应信息;

第二请求处理模块160,用于在系统智能卡服务接收所述第二智能卡设备访问请求后,根据该请求的类型调用对应的智能卡服务接口对智能卡设备进行相应的操作,获取到智能卡设备返回的第二响应信息;

第二响应发送模块170,用于用于系统智能卡服务通过所述第二命名管道将第二响应信息发送到所述第二智能卡应用程序。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述装置实施方式中各部分的全部或部分可以以硬件实现,或者以在一个或多个硬件上运行的软件模块来实现,方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成。本领域技术人员应该明白,本发明所述的方法和装置并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1