管理智能卡访问的方法、系统和读卡器设备转让专利

申请号 : CN200780034636.6

文献号 : CN101517593B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 拉维·辛格尼尔·P·亚当斯黛娜·L·M·戴维斯赫伯特·A·利特尔迈克尔·麦考伦理查德·P·西布利

申请人 : 捷讯研究有限公司

摘要 :

所述实施例总体涉及用于管理多个访问设备对存储卡(如智能卡)的访问的设备、方法和系统。某些实施例涉及用于管理多个访问设备对智能卡的访问的智能卡读卡器(SCR)。SCR包括:处理器;通道管理器,对处理器予以响应,用于连接智能卡;以及通信接口,对通道管理器予以响应,用于与多个访问设备进行通信。

权利要求 :

1.一种读卡器设备,用于管理多个访问设备对存储卡的访问,所述读卡器设备包括:处理器;

无线通信接口,对所述处理器予以响应,用于与所述多个访问设备通信;

存储卡接口,用于实现所述处理器和所述存储卡间的通信;

其中,当至少第一访问设备和所述存储卡间开启了至少第一安全会话,且所述读卡器设备接收到来自第二访问设备的开启会话命令时,所述处理器被配置为:确定所述存储卡是否能够在支持所述至少第一安全会话的同时支持第二安全会话,如果所述处理器确定所述存储卡无法同时支持所述第一安全会话和所述第二安全会话,则终止所述第一安全会话,以及允许所述第二访问设备开启所述存储卡和所述第二访问设备间的所述第二安全会话。

2.根据权利要求1所述的设备,其中,所述开启会话命令包括MANAGE_CHANNEL命令。

3.根据权利要求1所述的设备,其中,所述处理器被配置为:向所述存储卡发送MANAGE_CHANNEL命令,以开启所述第二安全会话。

4.根据权利要求1至3中任意一项所述的设备,还包括存储着连接表的存储器,其中,所述连接表包括:在所述存储卡和各访问设备之间建立的各个会话的表项。

5.根据权利要求4所述的设备,其中,针对每个会话表项,所述连接表包括一个或多个通道表项。

6.根据权利要求1至3中任意一项所述的设备,其中,所述存储卡接口包括通道管理器,并且所述通道管理器被配置为:确定所述存储卡是否能够支持多个安全会话。

7.根据权利要求1至3中任意一项所述的设备,其中,所述处理器还被配置为:在终止所述第一安全会话前,确定与所述存储卡建立的所有安全会话,以及

向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示。

8.根据权利要求7所述的设备,其中,所述处理器还被配置为:响应从所述第二访问设备接收到的、与用户从所述列表中选择了所述第一访问设备相对应的命令,终止所述第一安全会话。

9.根据权利要求1至3中任意一项所述的设备,其中,所述存储卡接口包括通道管理器,所述通道管理器控制能够在所述存储卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。

10.根据权利要求1至3中任意一项所述的设备,其中,所述多个访问设备包括一个或多个附加访问设备,每个附加访问设备具有同所述存储卡建立的安全会话。

11.根据权利要求1至3中任意一项所述的设备,其中,所述处理器被配置为:通过通知所述第一访问设备所述存储卡无法由所述读卡器设备访问,来终止所述第一安全会话。

12.根据权利要求1至3中任意一项所述的设备,其中,所述处理器被配置为:通过通知所述第一访问设备所述存储卡已从所述读卡器设备中拆除,来终止所述第一安全会话。

13.根据权利要求1至3中任意一项所述的设备,还包括:串行接口,用于同多个访问设备中的一个进行有线通信。

14.根据权利要求1至3中任意一项所述的设备,还包括:插座,用于接纳所述存储卡,并电耦合所述处理器和所述存储卡。

15.根据权利要求1至3中任意一项所述的设备,其中,所述存储卡接口使所述读卡器设备和所述存储卡间能够进行无线通信。

16.一种用于在建立了至少第一安全会话的情况下管理存储卡和多个访问设备间的通信的方法,所述多个访问设备包括至少第一和第二访问设备,所述第一安全会话建立在所述存储卡和所述第一访问设备之间,所述方法包括:在与所述存储卡通信的读卡器设备处接收来自所述第二访问设备的开启会话命令,以开启同所述存储卡的第二安全会话;

确定所述存储卡是否能够支持与所述第二访问设备的所述第二安全会话;

如果确定所述存储卡不能支持所述第二安全会话,则终止所述第一访问设备和所述存储卡间的所述第一安全会话;以及开启所述第二访问设备和所述存储卡间的所述第二安全会话。

17.根据权利要求16所述的方法,其中,所述开启会话命令包括MANAGE_CHANNEL命令。

18.根据权利要求16所述的方法,其中,所述开启所述第二安全会话的步骤包括:从所述读卡器设备向所述存储卡发送MANAGE_CHANNEL命令。

19.根据权利要求16至18中任意一项所述的方法,还包括:在所述读卡器设备的存储器中存储连接表,所述连接表包括:在所述存储卡和各访问设备之间建立的各个会话的表项。

20.根据权利要求19所述的方法,其中,针对每个会话表项,所述连接表包括一个或多个通道表项。

21.根据权利要求16至18中任意一项所述的方法,其中,所述确定步骤包括:确定所述存储卡是否能够支持多个安全会话。

22.根据权利要求16至18中任意一项所述的方法,还包括:在终止所述第一安全会话前,确定同所述存储卡建立的所有安全会话;以及向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示;并且其中,响应从所述第二访问设备接收到的、与用户从所述列表中选择了所述第一访问设备相对应的命令,终止所述第一安全会话。

23.根据权利要求16至18中任意一项所述的方法,还包括:控制能够在所述存储卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。

24.根据权利要求16至18中任意一项所述的方法,其中,所述终止步骤包括:通知所述第一访问设备,所述存储卡无法由所述读卡器设备访问。

25.根据权利要求16至18中任意一项所述的方法,其中,所述终止步骤包括:通知所述第一访问设备,所述存储卡已从所述读卡器设备中拆除。

26.根据权利要求16至18中任意一项所述的方法,其中,所述多个访问设备包括:一个或多个附加访问设备,每个附加访问设备具有与所述存储卡建立的安全会话。

27.一种系统,用于管理多个访问设备对存储卡的访问,所述系统包括:读卡器设备,具有:处理器;无线通信接口,对所述处理器予以响应,用于与所述多个访问设备通信;以及存储卡接口,用于实现所述处理器和所述存储卡间的通信;

与所述读卡器设备通信的至少第一访问设备;以及

与所述读卡器设备通信的第二访问设备;

其中,当所述第一访问设备和所述存储卡间开启了至少第一安全会话,且所述读卡器设备接收到来自所述第二访问设备的开启会话命令时,所述处理器被配置为:确定所述存储卡是否能够在支持所述至少第一安全会话的同时支持第二安全会话,如果所述处理器确定所述存储卡无法同时支持所述第一安全会话和所述第二安全会话,则终止所述第一安全会话,以及允许所述第二访问设备开启所述存储卡和所述第二访问设备间的所述第二安全会话。

28.根据权利要求27所述的系统,其中,所述处理器被配置为:响应从所述第二访问设备接收到的、与用户在所述第二访问设备上的选择相对应的命令,终止所述第一安全会话。

29.根据权利要求27或28所述的系统,其中,所述读卡器设备还包括存储着连接表的存储器,其中,所述连接表包括:在所述存储卡和各访问设备之间建立的各个会话的表项。

30.根据权利要求29所述的系统,其中,针对每个会话表项,所述连接表包括一个或多个通道表项。

31.根据权利要求27或28所述的系统,其中,所述存储卡接口包括通道管理器,并且所述通道管理器被配置为:确定所述存储卡是否能够支持多个安全会话。

32.根据权利要求27或28所述的系统,其中,所述处理器还被配置为:在终止所述第一安全会话前,确定与所述存储卡建立的所有安全会话,以及向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示。

33.根据权利要求32所述的系统,其中,所述处理器被配置为:响应从所述第二访问设备接收到的、与用户从所述列表中选择了所述第一访问设备相对应的命令,终止所述第一安全会话。

34.根据权利要求27或28所述的系统,其中,所述存储卡接口包括:通道管理器,并且所述通道管理器控制能够在所述存储卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。

35.根据权利要求27或28所述的系统,其中,所述处理器被配置为:通过通知所述第一访问设备所述存储卡无法由所述读卡器设备访问,来终止所述第一安全会话。

36.根据权利要求27或28所述的系统,其中,所述处理器被配置为:通过通知所述第一访问设备所述存储卡已从所述读卡器设备中拆除,来终止所述第一安全会话。

37.根据权利要求27或28所述的系统,还包括:串行接口,用于与所述多个访问设备之一进行有线通信。

38.根据权利要求27或28所述的系统,其中,所述读卡器设备包括:插座,用于接纳所述存储卡,并电耦合所述处理器和所述存储卡。

39.根据权利要求27或28所述的系统,其中,所述存储卡接口使所述读卡器设备和所述存储卡间能够进行无线通信。

40.根据权利要求27或28所述的系统,其中,所述处理器还被配置为:在终止所述第一安全会话前,确定与所述存储卡建立的所有安全会话;以及

向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示。

说明书 :

管理智能卡访问的方法、系统和读卡器设备

技术领域

[0001] 所述实施例涉及用于管理智能卡访问的方法、系统和读卡器设备。举例而言,所述实施例涉及使多个设备对智能卡的访问更加方便。

背景技术

[0002] 与智能卡通信需要在智能卡和希望与智能卡通信的应用程序间开启一个会话。智能卡的安全特性要求任意时刻只能开启一个会话。大多数智能读卡器(SCR)一次同一个系统连接,这使附属系统能排他地使用智能读卡器。许多系统在智能卡插入读卡器的时间内与智能卡保持开启的会话,以利用这种排他性。
[0003] 采用某些SCR,在给定时刻可能(甚至很可能)存在一条以上的连接。然而,如果会话是被连接系统之一开启的,那么在当前已开启会话的系统决定关闭其会话前,通常另一连接系统不可能开启会话以供自身使用。
[0004] 当手持设备和个人计算机(PC)均连接至SCR时,可能存在这种情况。当PC被SCR告知智能卡已被插入时,PC通常开启智能卡会话,并在同读卡器的连接终止或将智能卡从SCR中取出之前使会话保持开启。由于PC始终保持智能卡会话开启,因此手持设备无法启动同智能卡的会话。这使手持设备用户无法执行诸如对电子邮件进行签名或对电子邮件进行解密的操作,并且,如果需要智能卡对用户进行认证使其能够使用手持设备,那么用户将无法解锁手持设备。
[0005] 所述实施例试图解决或改善与管理智能卡访问的现有技术相关的一个或多个缺点或缺陷,或至少提供一种有用的候选方案。

附图说明

[0006] 下面参考附图,仅以示例方式,对实施例进行更加详细的描述,附图中:
[0007] 图1是用于访问智能卡的系统的方框图;
[0008] 图2是用于图1系统的智能读卡器的方框图;
[0009] 图3是用于图1系统的移动设备的方框图;
[0010] 图4是管理智能卡访问的方法的流程图;
[0011] 图5是管理智能卡访问的另一方法的流程图;
[0012] 图6是将假设通道映射为指配通道的方法的流程图;
[0013] 图7是管理智能卡访问的另一方法的流程图;
[0014] 图8是确定智能卡是否支持创建逻辑通道的方法的流程图;
[0015] 图9是管理智能卡访问的另一方法的流程图;以及
[0016] 图10是用户选择窗口的示例屏幕截图。

具体实施方式

[0017] 所述实施例总体涉及用于管理多个访问设备对于存储卡(如智能卡)的访问的设备、方法和系统。其他实施例涉及存储着程序指令的计算机可读存储器,所述程序指令由处理器来执行,用于实现所述方法。
[0018] 一实施例涉及一种用于管理多个访问设备对于存储卡的访问的读卡器设备。所述读卡器设备包括:处理器;无线通信接口,对所述处理器予以响应,用于与所述多个访问设备通信;存储卡接口,用于实现所述处理器和所述存储卡间的通信;其中,当至少第一访问设备和所述存储卡间开启了至少第一安全会话,且所述读卡器设备接收到来自第二访问设备的开启会话命令时,所述处理器被配置为:确定所述存储卡是否能够在支持所述至少第一安全会话的同时支持第二安全会话;如果所述处理器确定所述存储卡无法同时支持所述第一安全会话和所述第二安全会话,则终止所述第一安全会话;以及允许所述第二访问设备开启所述存储卡和所述第二访问设备间的所述第二安全会话。
[0019] 所述开启会话命令可以包括MANAGE_CHANEL命令。所述设备还可以包括:存储着连接表的存储器,其中,所述连接表包括:在所述智能卡和各访问设备之间建立的各个会话的表项。针对每个会话表项,所述连接表包括一个或多个通道表项。所述存储卡接口可以包括通道管理器,并且所述通道管理器可以被配置为:确定所述存储卡是否能够支持多个安全会话。
[0020] 所述处理器可以被配置为:在终止所述第一安全会话前,确定与所述存储卡建立的所有安全会话,以及向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示。所述处理器可以被配置为:对从所述第二访问设备接收到的、与用户从所述列表中选择所述第一访问设备相对应的命令予以响应,终止所述第一安全会话。所述存储卡接口可以包括通道管理器,其中,所述通道管理器控制能够在所述智能卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。所述处理器可以被配置为:通过通知所述第一访问设备所述存储卡无法由所述读卡器设备访问,来终止所述第一开启会话。所述处理器可以被配置为:通过通知所述第一访问设备所述存储卡已从所述读卡器设备中拆除,来终止所述第一开启会话。
[0021] 所述设备还可以包括:串行接口,用于同多个访问设备中的一个进行有线通信。所述设备还可以包括:插座,用于接纳所述智能卡,并电耦合所述处理器和所述智能卡。所述存储卡接口使所述读卡器设备和所述存储卡间能够进行无线通信。
[0022] 另一实施例涉及一种用于在建立了至少第一安全会话的情况下管理存储卡和多个访问设备间的通信的方法,所述多个访问设备包括至少第一和第二访问设备,所述第一安全会话建立在所述存储卡和所述第一访问设备之间,所述方法包括:在与所述存储卡通信的读卡器设备处接收来自所述第二访问设备的开启会话命令,以开启同所述存储卡的第二安全会话;确定所述存储卡是否能够支持同所述第二访问设备的所述第二安全会话;如果确定所述存储卡不能支持所述第二安全会话,则终止所述第一访问设备和所述存储卡间的所述第一安全会话;以及开启所述第二访问设备和所述存储卡间的所述第二安全会话。
[0023] 所述开启会话命令可以包括MANAGE_CHANEL命令。所述方法还可以包括:在所述读卡器设备的存储器中存储连接表,所述连接表包括:在所述智能卡和各访问设备之间建立的各个会话的表项。针对每个会话表项,所述连接表可以包括一个或多个通道表项。所述确定步骤可以包括:确定所述存储卡是否能够支持多个安全会话。
[0024] 所述方法还可以包括:在终止所述第一安全会话前,确定同所述存储卡建立的所有安全会话;以及向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示;并且其中,对从所述第二访问设备接收到的、与用户从所述列表中选择所述第一访问设备相对应的命令予以响应,终止所述第一安全会话。
[0025] 所述方法还可以包括:控制能够在所述智能卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。所述终止步骤可以包括:通知所述第一访问设备,所述存储卡无法由所述读卡器设备访问。所述终止步骤包括:通知所述第一访问设备,所述存储卡已从所述读卡器设备中拆除。一种存储着程序指令的计算机可读存储器,当处理器执行所述程序指令时,所述程序指令使所述处理器执行上述方法。
[0026] 另一实施例涉及一种用于管理多个访问设备对于存储卡的访问的系统。所述系统包括:读卡器设备;与所述读卡器设备通信的至少第一访问设备;以及与所述读卡器设备通信的第二访问设备;所述读卡器设备具有:处理器;无线通信接口,对所述处理器予以响应,用于与所述多个访问设备通信;以及存储卡接口,用于实现所述处理器和所述存储卡间的通信。其中,当所述第一访问设备和所述存储卡间开启了至少第一安全会话,且所述读卡器设备接收到来自第二访问设备的开启会话命令时,所述处理器被配置为:确定所述存储卡是否能够在支持所述至少第一安全会话的同时支持第二安全会话;如果所述处理器确定所述存储卡无法同时支持所述第一安全会话和所述第二安全会话,则终止所述第一安全会话;以及允许所述第二访问设备开启所述存储卡和所述第二访问设备间的所述第二安全会话。
[0027] 所述处理器可以被配置为:对从所述第二访问设备接收到的与所述第二访问设备上的用户选择相对应的命令予以响应,终止所述第一安全会话。所述读卡器设备还可以包括存储着连接表的存储器,其中,所述连接表包括:在所述智能卡和各访问设备之间建立的各个会话的表项。针对每个会话表项,所述连接表包括一个或多个通道表项。所述存储卡接口可以包括通道管理器,并且所述通道管理器被配置为:确定所述存储卡是否能够支持多个安全会话。
[0028] 所述处理器可以被配置为:在终止所述第一安全会话前,确定与所述存储卡建立的所有安全会话,以及向所述第二访问设备提供与所述所有安全会话相对应的访问设备列表,以向所述第二访问设备的用户显示。所述处理器可以被配置为:对从所述第二访问设备接收到的、与用户从所述列表中选择所述第一访问设备相对应的命令予以响应,终止所述第一安全会话。
[0029] 所述存储卡接口可以包括通道管理器,其中,所述通道管理器控制能够在所述智能卡和所述多个访问设备间开启的所述通道,使通道总数被限制为预定数量。所述处理器可以被配置为:通过通知所述第一访问设备所述存储卡无法由所述读卡器设备访问,来终止所述第一开启会话。所述处理器可以被配置为:通过通知所述第一访问设备所述存储卡已从所述读卡器设备中拆除,来终止所述第一开启会话。
[0030] 所述系统还可以包括:串行接口,用于同多个访间设备之一进行有线通信。所述读卡器设备可以包括:插座,用于接纳所述智能卡,并电耦合所述处理器和所述智能卡。所述存储卡接口使所述读卡器设备和所述存储卡间能够进行无线通信。
[0031] 智能卡会话期间同智能卡的通信是在被称为基本通道的通道上进行的。ISO7816-4的第6.16节定义了MANAGE_CHANNEL命令,后者可用于建立(除基本通道以外的)多达三条逻辑通道,在其上同智能卡进行通信。开启新逻辑通道使智能卡能够处理命令,而不会影响基本通道或其他逻辑通道的会话状态。
[0032] 举例而言,在Microsoft WindowsTM平台的当前架构中,智能卡的制造商通常提供加密服务提供程序(CSP),PC上的操作系统和应用程序使用该CSP以同智能卡进行通信。CSP保持长期的智能卡会话。CSP管理通过SCR同智能卡进行的通信,确保将响应提供给发送相关命令的过程。
[0033] 图1示出了用于访问存储卡120的系统100,所述存储卡120由读卡器(SCR)110接收或与读卡器(SCR)110电子耦合。系统100包括通过无线接口与读卡器110通信的多个计算设备。这样的计算设备包括:一个或多个支持无线通信的个人计算机(PC)130、以及至少一支持无线通信的移动设备140。每个计算设备都具有无线收发信机,用于通过通信链路113或114与读卡器110进行通信,读卡器110也具有无线收发信机。可选地,计算设备之一(如移动设备140)可以通过有线连接(如通用串行总线(USB))与读卡器110通信。在所述实施例的上下文中,可以将PC130和移动设备140之一或PC 130和移动设备140两者称为“访问设备”。
[0034] 当在希望访问的访问设备(如PC 130和移动设备140)同SCR 110之间开启了多条连接时,在给定时刻只有一条连接能够具有智能卡会话。由于由PC 130开启的任意会话可能是长期会话,因此其他连接将无法开启会话。使用开启通道命令(如MANAGE_CHANNEL命令),如果一条逻辑通道可用,SCR 110就可以开启逻辑通道,逻辑通道可用于向存储卡120发送命令以进行处理,而不会影响先前开启的会话。
[0035] 为实现上述目的,SCR 110管理逻辑通道的使用,使逻辑通道的使用对于命令来源而言是透明的。这可能包括,例如,修改如ISO 7816标准中定义的应用协议数据单元(APDU)的类型字节(CLA),以指定正确的逻辑通道。SCR 110还确保,如果从使用SCR 110正在管理的逻辑通道的连接接收到影响其他通道的命令(如卡复位命令),则不允许执行这些命令。
[0036] SCR 110还在其正在管理的基本通道或逻辑通道上接收额外的MANAGE_CHANNEL命令。这可以包括:根据用于接收会话请求的通道,在基本通道或当前逻辑通道上开启新的逻辑通道,以及向发送MANAGE_CHANNEL命令的访问设备130、140提供适当的反馈。
[0037] 为了管理对同时来自多个访问设备130、140的命令进行处理,可能必须优先考虑来自特定连接的命令,或者设置命令本身。为了确保更为紧急的操作(如用户认证)不会因处理时间较长的命令(如导入证书)而过度延迟,可能需要上述功能。举例而言,如果PC130正在从存储卡120导入证书(这是一个相对较长的过程),并且移动设备140需要认证用户以解锁设备,则来自移动设备140的认证请求应被给予较高的优先级,并且一旦逻辑通道变为可用,立即对其进行处理。
[0038] 默认情况下,可以认为所有来自移动设备140的命令比来自PC 130的命令具有更高的优先级,这仅仅是由于同移动设备140的智能卡会话很可能较短。可选地,来自移动设备140的命令可以附带命令类型(如用户认证或数字签名)的指示,后者使SCR 110能够基于例如开启连接的数目和类型以及可用逻辑通道的数量,确定哪些命令应具有较高的优先级。
[0039] 移动设备140可以是任何适当的支持无线通信的手持移动设备。移动设备140可以是如以下结合图2予以详细说明的双模(数字和语音)通信设备和个人数字助理设备。可选地,移动设备可以是单模(数据)通信设备。移动设备140可以具有电子邮件通信的能力。移动设备140的用户可能需要通过提供密码或个人身份号码(PIN)来认证自身,以例如解锁移动设备140的用户接口,从而以数字化方式对消息进行签名或对加密消息进行解密。
[0040] 个人计算机130可以是可能需要访问存储卡120的任意类型的计算机,如常规台式计算机、膝上型或其他便携式或固定计算机系统。虽然计算设备130被描述为PC,但应当理解的是,计算设备无需属于特定类型的计算机,也无需属于同一类型或运行特定的操作系统。虽然在图1中并未具体示出,但各PC 130能够以同读卡器110的通信能力兼容的方式与读卡器110进行无线和/或有线通信,所述读卡器110将于以下结合图3进行说明。
[0041] 虽然图1示出了通过无线链路与读卡器110通信的一个以上的PC130,但是在系统100中只能存在一个这样的PC。此外,虽是图1未示出移动设备140和PC 130间的通信链路,但可以简历这样的链路。
[0042] 存储卡120可以是智能卡。智能卡是个性化安全设备,由国际标准化组织所出版的ISO 7816-4标准及其派生标准定义。智能卡可以具有信用卡的形状因数,并且可以包括半导体器件。半导体器件可以包括存储器,存储器可以被编程为带有安全信息,安全信息可以是例如私有解密密钥、私有签名密钥、生物统计信息、或认证证书。半导体器件可以包括解密引擎,如,用于执行解密和/或认证功能的处理器和/或专用逻辑电路。智能卡可以包括连接器,用于为半导体器件供电,并同外部设备(如读卡器110)进行串行通信。
[0043] 智能卡可以在卡的一面具有暴露的触点,用于同读卡器上的相应触点建立电接触,从而便于智能卡和读卡器间的通信。在一实施例中,存储卡120和读卡器110利用电接触来彼此建立通信。虽然存储卡120可以以物理方式被读卡器110接收,但为了在存储卡120和读卡器110间建立通信,读卡器110并不是必须以物理方式接收或接触存储卡120。
举例而言,在某些实施例中,存储卡120可以利用射频识别(RFID)技术同读卡器110连接。
在这样的实施例中,存储卡120只需足够接近读卡器110,以实现两者间的射频通信。
[0044] 移动设备140可以同无线网络150进行通信。无线网络150可以被实现为基于分组的蜂窝网络,蜂窝网络包含若干基站,每个基站为相应的区域或小区提供无线射频(RF)覆盖。举例而言,无线网络150可以符合除其他网络标准外以下网络标准中的一个或多个:Mobitex无线网络;DataTAC;全球移动通信系统(GSM);通用分组无线系统(GPRS);时分多址(TDMA);码分多址(CDMA);蜂窝数字分组数据(CDPD);集成数字增强型网络(iDEN);或各种其他第三代网络,如增强型数据速率GSM演进(EDGE)、通用移动通信系统(UMTS)。
[0045] 在某些实施例中,作为无线广域网的替代或补充,无线网络150可以包括无线局域网,如符合一种或多种IEEE 802.11标准(如802.11b、802.11g、和802.11n)的无线局域网。在至少某些示例实施例中,无线网络150通过中间通信链路(未示出)与一个或多个企业网(未示出)相连,所述中间通信链路包括例如穿过互联网的链路。典型地,这样的企业网分别与一组相应的移动设备140相关,使得移动设备140能够分别同与移动设备140相关的企业网交换电子消息和其他信息。
[0046] 图2示出了移动设备140的详细实施例。移动设备140包括显示:显示子系统210、以及用于同无线网络150(图1)进行双向通信的无线网络通信子系统212。根据一实施例,通信子系统212包括:天线(未示出)、射频收发信机(未示出)、以及某些可以通过例如数字信号处理器(未示出)予以实现的信号处理功能。移动设备140还包括具有至少一移动设备微处理器216形式的控制器,移动设备微处理器216适于被编程为,控制将于以下予以更加详细的描述的移动设备140的全部操作以及功能。
[0047] 移动设备140包括外围设备或子系统,如闪存218、随机存取存储器(RAM)220、辅助输入/输出(I/O)子系统222(如滚轮)、串行端口224(如通用串行总线或“USB”端口)、输入设备226(如键盘或小键盘)、扬声器228、麦克风230、移动设备短程通信子系统TM232(如红外收发信机、诸如蓝牙 等无线总线协议系统、或其他本地无线通信方式)以及由参考标记234总体指示的其他设备子系统。
[0048] 移动设备微处理器216在已存储程序的控制下工作,代码或固件存储在闪存218(或其他类型的非易失性存储设备)中。如图2所示,闪存218包括已存储程序(如固件)和由参考标记242总体指示的其他程序或软件应用程序,其他已存储程序包括操作系统程序或代码模块240。举例而言,软件应用程序242可以包括万维网(WWW)浏览应用程序
244和电子邮件客户端应用程序246。
[0049] 根据示例实施例,移动设备140的软件应用程序242还包括:可与将于以下结合图3给予更加详细的说明的读卡器110结合使用的存储卡驱动248。特别地,存储卡驱动248可以不是由移动设备140的制造商提供的,相反可以是由第三方(即存储卡120的制造商)提供的。此外,可以将应用程序接口(API)安装在存储卡驱动248中,使移动设备140能够通过读卡器110与存储卡120通信。
[0050] 移动设备140的软件应用程序242还可以包括:智能读卡器(SCR)配对和安全模块250,用于协调移动设备140和读卡器110间的配对过程。以下将更详细地描述存储卡驱动248和智能读卡器配对和安全模块250的作用。软件应用程序242还可以包括:通道管理器(未示出),用于管理移动设备140上的具有在独立的逻辑通道上开启的同存储卡120的活动会话的多个应用程序间的通信。
[0051] 操作系统代码240、特定设备应用程序242的代码、WWW浏览应用程序244的代码、电子邮件客户端应用程序246的代码、存储卡驱动248的代码、或智能读卡器配对和安全模块250的代码可以在移动设备140工作时临时加载于易失性存储介质(如RAM 220)中。接收到的带有信息的通信信号以及其他数据可以存储在RAM 220中。在某些实施例中,除了内部闪存218以外,移动设备140还可以包括SIM(用户识别模块)卡或其他可删除设备带有的永久性存储器,并且闪存218的至少一部分可以被分配给SIM卡闪存。
[0052] 移动设备微处理器216的已存储程序控制(即软件应用程序242)还包括:控制基本设备操作的应用程序、代码组件、或软件模块的预定集合,如通常在制造过程中作为软件应用程序242安装在移动设备140上的数据或语音通信应用程序。还可以通过操作上述网络、辅助I/O子系统222、串行端口224、或移动设备短程通信子系统232在移动设备140上加载(即下载)其他应用程序。然后,由用户(或自动地)将所下载的代码模块或组件安装在RAM 220或非易失性程序存储器(如闪存218)中。
[0053] 串行端口224包括USB型接口端口,用于连接或与诸如台式或笔记本计算机(未示出)等另一设备同步。串行端口224用于通过外部设备或软件应用程序设置偏好。串行端口224还用于,通过无线通信网络以外的方式向移动设备140提供信息或软件下载(包括用户界面信息),以扩展移动设备140的功能。在一实施例中,串行端口224可用于与读卡器110通信。
[0054] 移动设备短程通信子系统232提供用于在移动设备140和其他设备(包括将于以下结合图3给予更加详细的说明的读卡器110)间进行通信的接口。例如,移动设备短程通TM信子系统232可以利用红外通信链路或通道,或者可以按照诸如蓝牙 等无线总线协议、或其他本地无线通信方式工作。
[0055] 图3示出了读卡器110的示例实施例,具有智能卡读卡器的典型形式。读卡器110包括:控制器,包括至少一智能读卡器微处理器310,后者被适当地编程为控制读卡器
110的全部工作和功能。读卡器110还包括输出设备312(如显示模块)。读卡器110还包括:诸如闪存314等外围设备或子系统、随机访问存储器(RAM)316(在某些实施例中包括被分配给数据高速缓存的部分)、串行端口318(如USB端口)、智能卡读卡器短程通信子系TM
统320(如,红外收发信机或使用诸如蓝牙 等协议的无线总线协议系统)、存储组件接口
322(如,存储卡或其他数据存储设备的存储组件接口)、以及成对激活输入设备324(如如按钮)。
[0056] 智能读卡器微处理器310在已存储程序的控制下工作,代码或固件存储在闪存314(或其他类型的非易失性存储设备)中。如图3所示,已存储程序(如固件)包括:操作系统程序或代码模块326以及由参考标记328总体指示的其他程序或软件应用程序。读卡器110的操作系统326还包括:通道管理器组件330和存储器读卡器驱动组件332。
[0057] 通道管理器组件330负责与一个或多个访问设备130、140和存储卡120通信,以便于建立并维持(维持所需长度的时间)在一个或多个访问设备130、140和存储卡120间的一个或多个安全会话。下面将参考图5和9详细说明通道管理器组件330的功能。
[0058] 存储器读卡器驱动组件332负责协调(借助有线或无线通信链路114的)移动设备140的读卡器110和存储卡120和/或存储卡驱动248间的通信。
[0059] 操作系统代码326、特定设备应用程序328的代码、通道管理器组件330的代码、存储器读卡器驱动组件332的代码、或其代码组件可以临时加载于易失性存储介质(如RAM316)中。接收到的带有信息的通信信号以及其他数据也可以存储在RAM 316中。此外,存储组件接口322接收可删除存储卡120,为读卡器110提供额外的存储空间。
[0060] 存储卡120具有:卡驱动和控制器338,负责协调存储卡120和智能读卡器110的存储器读卡器驱动组件332间的通信。虽然对于存储卡120是智能卡的情况描述了读卡器110的操作,但是所属领域技术人员应理解,读卡器110可以被设计为以适当的存储设备形式工作。
[0061] 智能读卡器微处理器310的已存储的程序控制(即软件应用程序328)可以包括:控制基本设备操作的应用程序、代码组件、或软件模块的预定集合(如管理和安全有关的读卡器110数据控制),并且可以在制造过程中作为软件应用程序328的组件安装在读卡器
110上。还可以通过操作串行端口318、智能读卡器短程通信子系统320、或从存储卡120在读卡器110上加载(即下载)其他应用程序。然后,由用户(或自动地)将所下载的代码模块或组件安装在RAM 316或非易失性程序存储器(如闪存314)中。
[0062] 虽然出于安全考虑(例如,不允许个人篡改通道管理器组件330或存储器读卡器驱动组件332)通道管理器组件330和存储器读卡器驱动组件332被表示为操作系统326的集成部分,但是如果采取了适当的安全相关的预防措施,确保非授权用户无法修改或篡改通道管理器组件330和存储器读卡器驱动组件332,那么通道管理器组件330和/或存储器读卡器驱动组件332也可以作为一软件应用程序328来安装。
[0063] 串行端口318可以是USB型接口端口,连接或与诸如个人计算机130或移动设备140等另一设备同步。串行端口318用于通过外部设备或软件应用程序设置偏好,或与诸如移动设备140等设备交换数据,所述数据存储在被插入读卡器110的存储组件接口322中的存储卡120上。串行端口224还用于,通过提供向读卡器110下载信息或软件(包括用户界面信息),以扩展读卡器110的功能。
[0064] 短程通信子系统320提供移动设备140或PC 130和读卡器110间进行通信的接口。在某些实施例中,短程通信子系统320采用红外通信链路或通道。在其他实施例中,短TM程通信子系统320按照诸如蓝牙 等无线射频总线协议工作。然而,短程通信子系统320可以按照任何适当的本地有线或无线通信协议工作,只要移动设备140的短程通信子系统
232(图2)采用相同的协议工作,从而利于移动设备140和读卡器110间的无线通信即可。
[0065] 对于短程通信子系统232、320,可以实现任何通信机制和/或协议,只要移动设备140和读卡器110在物理距离足够接近时能够相互通信即可。
[0066] 虽然未结合PC 130在图1中示出,但PC 130包括适当的短程通信子系统,以利于PC 130和读卡器110间的无线通信。PC 130的短程通信子系统可以与移动设备140的短TM程通信子系统232类似的方式(如使用红外通信链路或诸如蓝牙 等无线射频总线协议)工作。可选地,PC 130可以采用合适的串行端口与读卡器110通信,例如使用USB电缆。
[0067] 下面参考图4,图4示出了用于管理存储卡120和多个访问设备(如至少一PC 130和至少一移动设备140)间的通信的第一方法400的流程图。方法400假设第一访问设备(如PC 130)和读卡器110间存在一条连接,并且假设第一访问设备已通过读卡器110同存储卡120建立了安全会话。方法400还假设,在第一访问设备同存储卡120建立安全会话之后,第二访问设备(如移动设备140)被引入系统100。
[0068] 为了进行说明,在以下描述中,将PC 130作为第一访问设备的示例,并将移动设备140作为第二访问设备。然而,应当理解的是,可以另一形式的访问设备替代PC 130或移动设备140。此外,第一访问设备可以是移动设备140而不是PC 130,第二访问设备可以是PC 130而不是移动设备140。
[0069] 在步骤405,移动设备140和读卡器110之间启动安全配对。移动设备140和读卡器110的安全配对包括:规定彼此通信所用的加密和解密密钥,然后形成安全通信连接。移动设备140和读卡器110的安全配对被实现为,移动设备140和读卡器110各自产生密钥,用于对移动设备140和读卡器110间的通信进行加密。每个这样的密钥可由分别生成的对称密钥K1、K2和散列结果形成,所述散列结果是由通过通信链路114进行传送的散列分组创建的。一旦产生了各个密钥,移动设备140和读卡器110就完成了安全配对,并且密钥可以被用于两者间的加密通信。
[0070] 在步骤410中,读卡器110通知移动设备140PC 130和存储卡120之间的现有会话。该通知可以是被动或主动的。如果通知是主动的,读卡器可以主动向移动设备指出存储卡120已参与会话,如果通知是被动的,读卡器110可以对从移动设备140到存储卡120的加电指令予以响应,指出会话已被建立。
[0071] 如果移动设备140不是新引入系统100的,而已经具有了存储卡120参与了同另一设备的会话这一信息,那么可以省去步骤405和410。
[0072] 在步骤415中,一旦移动设备140确定存在开启同存储卡120的功能需求,移动设备140就通过例如由显示子系统210显示给用户的对话框显示选项。由此显示给用户的选项是,断开当前具有同存储卡120的开启会话的设备(在这种情况下是PC 130),从而终止开启的会话。还可以显示“取消”并且不终止开启会话的选项。
[0073] 在步骤420中,用户通过例如向键盘226或辅助I/O 222提供输入(例如使用滚轮或轨迹球),来选择在步骤415中显示的选项中的一个。如果用户选择“取消”选项,方法400就终止于步骤425。如果用户选择断开同PC 130的现有会话的选项,移动设备140就在步骤430中通过链路114向读卡器110发送开启会话命令。
[0074] 在步骤435中,读卡器110从移动设备140接收开启会话命令,并被配置为识别出命令要求关闭现有会话,以便使移动设备140开启同存储卡120的另一会话。相应地,读卡器110有效地终止PC 130和存储卡120间的会话。该终止可以通过通知PC 130读卡器110不能再访问存储卡120的方式予以实现。这可以包括模拟存储卡120已从读卡器110中拆除,或存储卡120和读卡器110间的连接遭到中断或者干扰。当接收到来自读卡器110的这样的通知时,PC 130认为会话已被终止。
[0075] 可以立即执行PC 130和存储卡120间的会话终止,以便打断任何数据交换,或者可以在完成数据传输或其他操作后执行PC 130和存储卡120间的会话终止。
[0076] 在步骤440中,移动设备140通过读卡器110同存储卡120建立会话。移动设备140可以等待来自读卡器110的前一会话已经终止的确认,或者移动设备140可以不等待这样的确认,并简单地假设终止已经发生。
[0077] 在步骤445中,一旦移动设备140已经完成了为实现某一操作而要求开启同存储卡120的会话的这一操作,移动设备140就向读卡器110发送关闭会话命令。接着,读卡器110终止存储卡120和移动设备140间的会话。
[0078] 在步骤450中,读卡器110可以通知PC 130,存储卡120可再次用于开启新会话。由于普遍而言只要在读卡器110和PC 130间建立了通信,PC就保持同存储卡120的开启会话,因此在步骤455中PC 130通常开启新会话。
[0079] 由于移动设备140被读卡器110认为是,同PC 130开启的较长的会话相比,需要相对较短的同存储卡120的会话的设备,因此读卡器110可以被编程为将来自移动设备140的开启会话命令识别为优先于存储卡120和PC 130间现有会话的命令。此外,一个或多个其他计算设备可以被认为在创建同存储卡120的会话方面具有相对较高的优先级,因此优先级相对较低的设备可以受优先级较高的设备的影响开启会话。
[0080] 结合图4描述的方法400包括用于管理多个访问设备访问智能卡的方法的一个示例。方法400实际上代表强力方法,在该方法中,终止先前存在的PC 130和存储卡120间的会话,以允许在移动设备140和智能卡120间建立较短的、优先级较高的会话。相反,以下将结合图5描述用于管理存储卡120的访问的候选方法。该候选方法包括(在基本通道之上)创建附加逻辑通道,通过附加逻辑通道新引入的访问设备(如移动设备140)能够同存储卡120进行通信。这样的附加逻辑通道的创建是由读卡器110上的通道管理器组件330辅助实现的。
[0081] 通道管理器组件330在闪存314或RAM/高速缓存316中维护一张连接表,连接表的表项对应于在存储卡120和各访问设备130、140间建立的连接(可以是安全配对连接)。连接表还可以包括:与当前没有为访问设备130、140建立同存储卡120的会话的读卡器110和访问设备130、140间的安全配对连接相对应的表项。
[0082] 对于连接表中的各连接表项,可以存在一个或多个通道表项。举例而言,如果PC130通过CSP在基本通道上建立同存储卡120的会话,那么连接表将具有针对PC 130的连接表项,以及针对于与该会话相关的基本通道的通道表项。如果PC 130开启了同存储卡
120的逻辑通道,举例而言,如果PC 130上的另一应用程序需要访问存储卡120,那么将在连接表中创建另一个与针对PC 130的连接相关的通道表项。此外,将逻辑通道的数量记录在连接表中。在该示例中,基本通道是0号,新逻辑信道可以是通道1。
[0083] 基于上述示例,假设移动设备140建立了同读卡器110的安全配对连接,并且试图同存储卡120建立会话。在这种情况下,通道管理器组件330将向存储卡120发出MANAGE_CHANNEL命令,后者将接着创建新逻辑通道,移动设备140可以通过所述新逻辑通道同存储卡120进行安全通信。移动设备140和读卡器110间新建立的连接被记录在连接表中,同时还记录被指配给移动设备140和存储卡120间的会话的逻辑通道。
[0084] 由于逻辑通道的建立对于移动设备140而言是透明的(由于读卡器110不使移动设备140得知PC 130在基本通道上同存储卡120建立的先前存在的会话),因此移动设备140试图通过基本通道同存储卡120进行通信。因此,通道管理器组件330对从移动设备
140(通过读卡器110)发送至存储卡120的APDU进行修改,使其看上去是在为同移动设备
140的会话指配的逻辑通道上发送的。这可以通过修改来自移动设备140的各APDU的类型字节,改变该字节的通道标识符(例如将其从0(基本通道)改变为2(指配逻辑通道))予以实现。通道管理器组件330使用连接表,以确保适当修改类型字节,使它们开起来是通过指配逻辑通道接收的。
[0085] 如果此时移动设备140上的另一应用程序试图与存储卡120通信,那么移动设备140上的通道管理器可以向读卡器110发送另一会话请求。读卡器110此时向存储卡120发送另一MANAGE_CHANNEL命令,以开启另一逻辑通道。在该示例中,存储卡120将为同移动设备140上的所述另一应用程序的新会话指配第四(并且是最后一个可用)通道(通道号为3)。存储卡120通知读卡器110已为同移动设备140建立的新会话分配了通道3,并且读卡器110随即通知移动设备140这一指配。
[0086] 由于移动设备140的通道管理器已意识到通过通道2(假设通道2是基本通道(通道0))建立的会话,因此为移动设备140上的应用程序指配新逻辑通道对于移动设备140而言不是透明的。因此,移动设备140的通道管理器希望接收针对于其试图同存储卡120建立的第二会话的逻辑通道指配。
[0087] 在上述情形下,连接表将具有两个连接表项,一个表项针对PC 130,一个表项针对移动设备140。针对PC 130的连接表项指示,通道0和1被指配给同PC 130的连接,而针对移动设备140的连接表项指示,通道2和3被指配给移动设备140。通道管理器组件330还包括针对每个指配通道的映射参考,以指示需要如何修改传入APDU。举例而言,当移动设备140通过假设基本通道发送APDU,读卡器110中的通道管理器组件330根据连接表中的相关通道表项执行从通道0到通道2的映射。以下表1是示例连接表,示出了针对上述示例的所记录的连接和通道表项(以及有关映射)。
[0088] 表1:连接表
[0089]
[0090] 下面参考图5,图5更加详细地描述了管理存储卡120访问的方法500。方法500起始于步骤510,在步骤510中,访问设备(如PC 130或移动设备140)请求同存储卡120的会话。该会话请求可以是冷复位或暖复位的形式,具体取决于存储卡120是处于断电状态还是上电状态。
[0091] SCR 110的通道管理器组件330接收会话请求,并在步骤515中检查存储在闪存314或RAM/高速缓存316中的连接表,以确定哪些通道(如果存在的话)可用于建立同存储卡120的会话。如果在步骤520通道管理器组件330确定基本通道未被使用,那么在步骤525中通道管理器组件330令存储卡120在基本通道上开启同访问设备130或140的会话,并相应地更新连接表。
[0092] 如果在步骤520中通道管理器组件330确定基本通道以处于使用状态,那么在步骤530中通道管理器组件330根据连接表确定逻辑通道是否可供所请求的会话使用。如果例如由于已达到了可能的逻辑通道的最大数目,因而没有可用逻辑通道,那么SCR 110可以在在骤535中通知访问设备130或140没有可用通道。可选地,如以下参考图7至10予以描述的那样,SCR 110可以提供所有同存储卡120相连并具有同存储卡120的安全会话的访问设备的列表,以允许用户选择终止一个这样的安全会话。
[0093] 如果在步骤530中,确定逻辑通道可用于所请求的会话,SCR 110就在步骤540中向存储卡120发出开启通道命令,如MANAGE_CHANNEL命令。接着,存储卡120在步骤545中向请求新会话的访问设备130或140指配逻辑通道。如果会话请求是通过先前存在的逻辑通道做出的,那么从存储卡120将所述指配逻辑通道传送至SCR 110,继而传送至访问设备130或140。否则,由于访问设备130或140假设正在通过基本通道同存储卡120进行通信,因此指配通道号不被传送至访问设备130或140。
[0094] 在步骤550中,访问设备130或140与存储卡120通信,以实现期望目的,如认证或数据签名。这样的通信将通常包括根据ISO 7816-4标准传输一个或多个APDU。
[0095] 如果被指配给由访问设备130或140所请求的会话的通道不同于访问设备130或140假设其已被指配的信道,就需要将假设通道映射至指配通道。下面将参考图6更加详细地对这点予以说明。
[0096] 一旦访问设备130或140同存储卡120进行了通信,实现了其期望目的,在步骤555访问设备130或140就可以关闭同存储卡120的会话。这可以通过向SCR 110发出适当的命令,继而由SCR 110向存储卡120发出指示会话是在哪条通道上开启的适当的终止会话命令得以实现。存储卡120接着关闭针对该通道的会话,通道管理器组件330更新连接表,将与所关闭的通道相对应的通道表项从相关连接表项中删除。该关闭功能显式地关闭逻辑通道而不关闭基本通道。接着,被关闭的通道可以进行重用。
[0097] 如果试图关闭的通道是基本通道,这也可能迫使逻辑通道关闭。在这种情况下,通道管理器组件330可以有助于重新建立在逻辑通道上开启的并被迫关闭的会话。例如,可以基于记录在连接表中的连接和通道,在基本通道上重新开启逻辑通道上的先前开启的会话之一,并在新重新建立的逻辑通道上重新开启其他会话。
[0098] 根据同SCR 110建立连接的各访问设备的访问需要,方法500可以随时间重复执行。这样的重复执行不一定必须包括步骤555,除非存储卡120已达到其逻辑通道指配的最大数量。
[0099] 下面参考图6,更详细地描述将假设通道映射为指配通道的方法600。方法600假设访问设备130或140和存储卡120间的会话已被建立。
[0100] 方法600起始于步骤610,在步骤610中SCR 110接收来自访问设备130或140的APDU。通道管理器组件330确定通过哪条连接接收到APDU,以及访问设备130或140预期通过哪条通道将APDU提供给存储卡120。通道管理器组件330通过查看APDU的类型字节中的相关位确定预期通道号。接着,通道管理器组件330在步骤620中检查连接表,并将预期通道与指配通道进行比较。
[0101] 在步骤630中,通道管理器组件330确定是否需要通道号映射。如果预期通道与指配通道相同,那么预期通道正确,无需映射。如果预期通道与指配通道不同,那么将预期通道看做假设通道,并且必须根据事先由通道管理器组件330确定的并被记录在连接表中的映射,将预期通道映射为指配通道。
[0102] 如果APDU的通道需要从假设通道映射为指配通道,那么在步骤640中,通道管理器组件330根据连接表中指定的映射修改APDU的类型字节中的相关位。
[0103] 在步骤650中,如果无需通道映射,或者如果已根据所需映射修改了APDU,就将APDU传送至存储卡120以进行处理。对于来自存储卡120的被发送回访问设备130或140的响应,根据需要可以采用逆映射过程。
[0104] 下面参考图7,图7描述了管理多个访问设备130、140对存储卡120的访问的另一方法700。方法700假设第一访问设备(如PC 130)和读卡器110间存在连接,并且第一访问设备已通过读卡器110与存储卡120建立了安全会话。根据除基本通道之外存储卡120是否支持创建逻辑通道,可以在存储卡120和第一访问设备(例如,在第一访问设备上的一个以上的应用程序请求安全会话的情况下)间建立额外的安全会话,或同其他访问设备建立安全会话。方法700还假设在第一访问设备同存储卡120建立了安全会话后第二访问设备(如移动设备140)被引入系统100。
[0105] 为了进行说明,在以下描述中,将PC 130作为第一访问设备的示例,并将移动设备140作为第二访问设备。然而,应当理解的是,第一访问设备可以是移动设备140而不是PC 130,第二访问设备可以是PC 130而不是移动设备140。
[0106] 方法700还假设已按照以上结合步骤405进行描述的方式在移动设备140和读卡器110间发起了安全配对。方法700起始于步骤705,在步骤705中,作为第二访问设备一示例的移动设备140请求同存储卡120的会话。该会话请求可以是冷复位或暖复位的形式,具体取决于存储卡120是处于断电状态还是上电状态。会话请求可以是从访问设备到读卡器110的指示访问设备希望同存储卡120建立安全会话的任何形式的通信,这样的通信不必具有显式的会话请求的形式。例如,通信可以采用暗示会话请求的形式,例如请求存储卡120提供复位应答(ATR)或向存储卡120发送命令APDU。
[0107] 在步骤705中接收到明确的或隐式的会话请求后,通道管理器组件330在步骤710中检查存储卡120是否支持通道管理(即对于基本通道之外的多个逻辑通道的支持)。通道管理器组件330通过检查表示是否支持通道管理的所存储的布尔通道管理值来实现这个目的。如果未存储这样的通道管理值,通道管理器组件330就执行步骤715的子过程,以确定是否支持通道管理。以下结合图8详细描述了该子过程。
[0108] 如果通道管理值在步骤710指示不支持通道管理,那么在步骤720中通道管理器组件330检查基本通道是否可用。如过基本通道可用,例如第一访问设备刚刚终止了会话的情况,那么在步骤725中允许第二访问设备在基本通道上开启安全会话。
[0109] 如果通道管理值表明不支持通道管理,那么在步骤730中通道管理组件330检查连接表,以确定逻辑通道是否可用。如果没有可用逻辑通道,那么在步骤735中,通道管理器组件330向第二访问设备发送同存储卡120建立了安全会话的连接设备的列表。该列表是基于连接表中的连接表项生成的,对于连接表项还存在会话表项。如果在步骤720中通道管理器组件330确定基本通道不可用,可以可选地执行步骤735。在步骤735中被发送至第二访问设备的列表可以包括仅仅单个设备,例如单个设备独占存储卡120所允许的全部(一个或多个)会话的情况。
[0110] 对在步骤735中由读卡器110发送的列表的接收予以响应,第二访问设备(移动设备140)在显示子系统210上向用户提供显示窗口1000,后者包括连接设备的列表。结合图10示出并描述了这样的显示窗口1000的示例。在步骤740中,显示窗口1000向用户提供提示,提示用户选择断开所列设备中的一个或取消会话请求。
[0111] 在步骤745中,通道管理器组件330等待接收来自移动设备140的、与选择所要断开的所列设备之一相对应的命令。如果用户选择“取消”,移动设备140就在步骤750中通过模拟存储卡120已不可访问的情况(例如通过模拟存储卡拆除)来取消发出的会话请求。如果用户选择了“取消”选项,那么由于无需采取措施以进行响应,因此不通知通道管理器组件330。可选地,如果选择了“取消”选项,移动设备140可以通知通道管理器组件330。
[0112] 如果在步骤745中从移动设备140接收到的命令与选择所要断开的特定设备相对应,那么在步骤755中,SCR 110令相关设备同存储卡120的安全会话终止。如此以来,SCR110可以通知设备由于例如存储卡拆除的拆除存储卡120已不可访问。假设稍后可以在存储卡120和移动设备140间建立安全会话,那么移动设备140发给SCR 110的用于终止另一设备的会话的命令可以包括要提供给存储卡120的命令APDU。这样一来,如果移动设备
140可以同存储卡建立安全会话,SCR 110可以立即向存储卡120提供命令APDU。否则,SCR
110可以通知移动设备140,会话已被建立,然后等待接收第一命令,以发送至存储卡120。
[0113] 在步骤755中终止会话之后,再次执行步骤730,以确定逻辑通道是可用的,通过逻辑通道第二访问设备可以同存储卡120建立安全会话。在另一访问设备获取了在执行完步骤755后立即可用的逻辑通道的情况下,再次执行上述检查。
[0114] 如果在步骤730中确定逻辑通道可用,那么在步骤760中,SCR 110向存储卡120发出开启通道命令,从而使移动设备140能够同存储卡120建立安全会话。接着,存储卡120在步骤765中为移动设备指配逻辑通道。在步骤770中,移动设备同存储卡120进行通信,以完成期望的功能,并且一旦功能完成,移动设备140和SCR 110就在步骤775中协作关闭会话。
[0115] 如果逻辑通道变为可用(步骤730)或指配了逻辑通道(步骤765)或关闭了逻辑通道(步骤775),就相应地更新连接表。在步骤725或775之后,根据需要针对任意的来自访问设备的随后的会话请求,重复执行步骤705至775。
[0116] 方法700假设,如果存储卡120支持通道管理,就只为安全会话指配逻辑通道。然而,在可选实施例中,除了逻辑通道,也可以使用基本通道创建安全会话。在这样的实施例中,步骤730包括检查基本通道以及任意逻辑通道的可用性。
[0117] 下面参考图8,图8详细描述了子过程715。子过程715起始于步骤805,在步骤805中,SCR 110在基本通道上开启同存储卡120的会话,并且在步骤810中,从存储卡120获取ATR。
[0118] 一旦接收到ATR,SCR 110就在步骤815中检查是否ATR指示存储卡120支持通道管理。可以通过例如检查ATR的特定部分,并将ATR的特定部分同与已知其是否支持通道管理的存储卡相关的其他ATR的特定部分的数据进行比较,从而实现上述功能。如果在步骤815中,ATR中的数据表明支持通道管理,那么在步骤820中,SCR 110通过将布尔通道管理值设置为真,来记录存储卡120支持通道管理。
[0119] 如果ATR并未表明支持通道管理,那么在步骤825中,SCR 110检查ATR是否表明不支持通道管理。如果不支持通道管理,那么在步骤830中,SCR 110通过将布尔通道管理值设置为假,来记录不支持通道管理。
[0120] 如果ATR并未表明不支持通道管理,那么在步骤835中,SCR 110通过发送MANAGE_CHANNEL命令尝试同存储卡120建立逻辑通道,来测试存储卡120是否支持通道管理。
[0121] 在步骤840中,SCR 110通过例如检查作为响应的确认(可以包括通道指配)或错误消息,来检查是否在步骤835中建立了逻辑通道。如果SCR110在步骤840中确定无法建立逻辑通道,SCR 110就执行步骤830,以记录不支持通道管理。相反,如果在步骤840中SCR 110可以确认对MANAGE_CHANNEL命令予以响应同存储卡120建立了逻辑通道,那么SCR 110得出支持通道管理,继而在步骤845中关闭逻辑通道(由于已不再需要逻辑通道),并执行步骤820以记录支持通道管理。
[0122] 下面参考图9,图9描述了管理智能卡访问的另一方法900。方法900与方法700类似,只不过方法900既不检查是否支持通道管理也不在检查通道是否可用时区分基本通道和逻辑通道。方法900假设访问设备130、140基于射后不理(fire-and-forget)发送了会话请求(即,无需有关会话状态的信息或对会话请求的确认)。在这种情况下,访问设备130、140假设对会话请求予以响应,通过SCR 110同存储卡120建立了安全会话,并继而在步骤905中向SCR 110发送命令APDU或对于存储卡120的ATR的请求(如果访问设备130、140尚未高速缓存ATR)。
[0123] 一旦SCR 110接收到命令APDU或ATR请求,SCR 110就在步骤910中检查连接表,以确定访问设备130、140是否开启了同存储卡120的安全会话。如果会话已经开启,那么在步骤925中SCR 110简单地将命令APDU发送至存储卡120,或将获取自存储卡120的ATR发送至访问设备130、140。
[0124] 如果在步骤910中,SCR 110确定尚未开启访问设备130、140和存储卡120间的会话,那么在步骤915中,SCR 110确定通道(基本或逻辑)是否可用于建立安全会话。如果通道可用,那么在步骤920中,SCR 110在可用通道上为访问设备130、140开启同存储卡120的安全会话。如果存储卡120不支持通道管理,那么唯一的可用通道就是基本通道。如果支持通道管理,那么如果基本通道和最大允许数量的逻辑通道尚未被其他访问设备130或140使用,则通道可以使用。
[0125] 如果SCR 110在步骤915中确定通道不可用,那么在步骤930中SCR110检查连接表(如果支持通道管理),并向访问设备130、140发送已为其建立了同存储卡120的安全会话的连接设备的名称。对于某些实施例,如果不支持通道管理,那么不创建连接表以跟踪多个连接和会话。在这样的实施例中,SCR 110只需在步骤930中向访问设备130,140提供连接设备的单程序列表。
[0126] 在步骤935中,访问设备130、140对连接设备列表的接收予以响应,提示用户选择一个设备以终止其会话。该提示是通过如图10所示的显示窗口1000作出的,显示窗口1000将连接设备以设备名显示为明细列表1030。从显示窗口1000中,用户可以选择所列设备之一,或不选择所列设备中的任何一个,从而取消会话请求。
[0127] 在步骤940中,SCR 110等待与用户选择所列设备之一、或可选地取消会话请求相对应的来自访问设备130、140的命令或其他形式的通信。如果用户选择取消会话请求,那么在步骤945中,访问设备130、140模拟存储卡拆除或指示SCR 110可以访问存储卡120的其他状态描述符。如果SCR 110接收到来自访问设备130、140的响应,表明用户未选择所列设备之一,相反选择取消会话请求,那么在步骤945中SCR 110不采取其他措施,不更新连接表。
[0128] 如果在步骤940中SCR 110接收到的命令或其他通信与用户选择所列设备之一相对应,那么在步骤950中,SCR 110同存储卡120协作,终止选定设备的安全会话。SCR 110通过例如模拟存储卡拆除或指示存储卡120不可访问的其他状态,来通知选定设备会话终止。在步骤950之后,SCR 110再次执行步骤915,以检查通道是否可用,以防另一访问设备在通道可用时立即在通道上开启会话。假设由于在步骤950中会话终止通道可用,那么在步骤920中访问设备130、140将被允许在可用通道上开启安全会话,并且如果适用在步骤925中原始APDU将被发送至存储卡120。
[0129] 如果SCR 110存储了连接表,那么在步骤920或950中会话状态改变后,适当地更新连接表,以反应与一个设备有关的一个或多个通道的终止以及访问设备130、140在新的可用通道上创建新会话。
[0130] 下面参考图10,图10示出了包括显示窗口1000在内的用户选择窗口的示例屏幕截图。显示窗口1000可以包括位于顶部的标题或标题栏1010,后者包括标题文本,如“智能卡繁忙”,指示导致步骤740或935中用户输入提示的状态。标题栏1010以下提供了其他说明性文本1020,用于解释显示窗口1000出现的原因。举例而言,这样的说明性文本可以是“当前与智能卡通信的设备达到最大数量。您想断开哪个设备?”
[0131] 显示窗口1000还包括由SCR 110指示的当前同存储卡120建立了安全会话的设备的列表1030。列表1030可以包括仅仅一个设备,也可以包括与存储卡120能够支持的通道数量(如4个)相当的多个不同设备。如图10所示,列表1030包括两个设备:“佛瑞德的膝上型计算机”和“佛瑞德的台式个人计算机”。如果移动设备140试图建立安全会话,那么由于尚未为移动设备140建立会话,因此移动设备140不显示在列表1030中。
[0132] 用于对正在显示的显示窗口1000予以响应,可以使用访问设备130、140上的适当的用户输入组件选择列表1030中的设备之一。接着,用户可以点击“确认”按钮1040,使访问设备130、140向SCR 110发送命令或命令或其他通信,指示用户想要终止从列表1030中选定的设备的会话。按钮1040可以包括“确认”以外文本,如“断开”。
[0133] 如果用户选择不终止列表1030中设备之一的会话,那么用户可以选择“取消”按钮1050。访问设备130、140对按钮1050的选择予以响应,通过例如模拟存储卡拆除,将存储卡120看作不可访问。访问设备130、140还可以与SCR 110通信,指示会话请求已被取消。
[0134] 显示窗口1000还包括例如具有复选框形式的开关选项,使用户能够设置与显示窗口1000的进一步的显示有关的偏好。开关选项可以带有诸如“如果只有一个连接设备则不要再次询问”的文本。如果选定开关选项1060(即打开开关选项)并且选定“确认”按钮1040,那么如果只存在一个使用会话的设备就自动终止现有会话。这可以避免不必要的用户交互,如存储卡120不支持通道管理的情况。如果用户开启了开关选项1060,那么在随后执行方法700或900时,不执行步骤735至750和930至945,相反在步骤755或950中直接终止单个连接设备的会话。
[0135] 可以根据访问设备130、140可以在其上建立会话的通道的可用与否,动态地保持或取消显示窗口1000。因此,如果安全会话之一终止,而显示窗口1000显示在访问设备130、140的用户界面上,那么通道管理器组件330将动态地尝试为访问设备130、140建立同存储卡120的安全会话,并将相应地通知访问设备130、140。可选地,通道管理器组件330不动态地尝试建立移动设备140和存储卡120间的安全会话,相反通道管理器组件330可以只通知所有连接至SCR 110的设备,此时可以同存储卡120建立会话,从而令访问设备
130、140发出显式的会话请求。如果显示窗口1000不再必要,例如由于逻辑通道变为可用,访问设备130、140就停止显示显示窗口1000。
[0136] 此外,如果用户从列表1030中选择了一个设备以终止其会话,但该会话无法关闭(例如,由于该设备不再连接至SCR 110),或所终止的会话被另一访问设备获取,显示窗口1000将继续显示,从而使用户能够选择另一设备以终止其会话。因此,当显示窗口1000继续显示时,列表1030将继续更新(通过通道管理器组件330和访问设备130、140间的通信),以反映连接和/或连接至存储卡120的设备的会话状态的变化。
[0137] 应当理解的是,可以在不背离所述实施例的精神的前提下对此处所述的实施例作出改进和修改,所述实施例的精神的总体范围是在所附权利要求中限定的。