专利名称:智能卡中字节传输的管理的制作方法
技术领域:
本发明涉及智能卡中字节传输的管理。选择来阐明本发明的例子就是应答消息传输的事例,该应答消息即ISO(国际标准化组织)标准7816-3和7816-4所定义的ATR(应答-复位)(Answer-To-Reset)消息。当智能卡由阅读器加电时,这个消息由智能卡传送给卡阅读器,该卡与该阅读器相连接。本发明既涉及智能卡,也涉及包括智能卡和与之相关联的卡阅读器在内的系统。
请注意在本发明上下文中,阅读器是能与智能卡交换信息的设备。
本发明同样涉及用于智能卡传输字节管理的方法和实现该方法的计算机程序。
背景技术:
通常,给卡加电包括施加被微处理器作为中断接收的动作。本动作通常叫“复位”。该动作包含中断矢量或定位于内存中某一地址的代码序列。本地址通常同样包含用于启动序列的跳转指令。
通过阅读器来实现与智能卡的通信。注意到ISO 7816-3标准定义了智能卡与外设通信必须使用的通信协议。本节描述电信号和在所有通信过程中交换的信息。电流、电压和信号频率均被标准化,同样,在通信过程中智能卡与阅读器之间交换的数据格式也是标准的。
当智能卡加电时,它传输消息给阅读器。根据IS0 7816-3和7816-4标准在启动时来自智能卡的这个消息通常称为ATR(应答-复位)。这个消息包括给阅读器的信息,特别是,该信息表明了涉及通信协议的智能卡性能。例如,该卡表明给阅读器的是-它的协议类型(T=0,T=1等)-传输速率(比如9600波特,38400波特等)-命令运行超时-等。
ATR消息同样包括历史信息。该信息包括产品标识、版本、所使用芯片的类型、智能卡的状态等。
ATR消息包括许多字节。在绝大多数带有微控制器的智能卡中,消息中的字节按顺序传输。通常,既然卡的操作系统变得越来越复杂,而安全性也日益重要,那么,在ATR消息的传输过程中,在允许用户控制卡前,操作系统就必须执行一系列的处理操作。具体的说,操作系统传输ATR的第一字节,然后执行第一处理操作。完成这个处理操作后,操作系统传输第二字节,然后执行第二处理操作。完成这个第二处理操作后,操作系统传输第三字节等等。根据可变化的运行时间,处理操作可以比较复杂也可以比较简单。归因于这个变化的运行时间,因此,要确定ATR消息中各个字节传输间的时间间隔是十分困难的。
然而,现存标准具体规定-在ATR消息中两个字节传输之间必须不能超过最大时间间隔,-必须不能超过ATR消息的最大全局传输持续时间。
为了确保阅读器能与智能卡正常通信,必须保证这些标准。当这些时间间隔没有得到保证时,阅读器未能识别该卡,并且大多数情况下,包含在阅读器中的机构把该卡从它的外套上弹出。对用户来说,卡的弹出是十分不利的。
发明内容
因此,一个目的是提高卡用户的满意程度。
为达到这个目的,依据本发明,设计位于操作系统外部的模块来触发字节传输。
通过监控操作系统,该外部模块行使助手的职责。在它作为助手的角色中,该模块能强制操作系统触发字节传输。从而,字节间的时间间隔就可以得到较好的保证。本发明因而避免了卡的弹出,提高了卡用户的满意程度。
通过阅读下面作为例子的描述和参照附图,可以很容易地理解本发明。
附图中图1为可应用本发明的结构简图。
图2为智能卡的简图,这个结构详细表明了位于操作系统外部的模块。
图3A和3B是算法,阐明了第一实现例的各个步骤。
图4是由第一实现例产生的信息流的简图,阐明了卡阅读器、操作系统和依据本解决方案的外部模块之间的信息交换。
图5是算法,阐明了第一实现例的变体。
图6是由第一实现例变体产生的信息流的简图,阐明了卡阅读器、操作系统和外部模块之间的信息交换。
图7是算法,阐明了本发明的第二实现例,在该实现例中外部模块是软件代理。
具体实施例方式
为了简化描述,附图中阐述的相同单元有相同的附图标记。
图1表示可应用本发明的系统SYS。本系统SYS包括智能卡CAR和通过通信链路LIA连接在一起的智能卡阅读器LEC。在这些链路上传输通信消息最好优先使用按照ISO 7186-4标准的格式。
图2表示了智能卡CAR的结构简图。该智能卡包括电子模块MOD。该模块MOD包括微控制器MIC和用于与外设进行通信的触点。通常,微控制器包括-微处理器CPU,用于执行命令,-非易失性存储器ROM(只读存储器),其内容在生产厂就被烧好,因而不能被修改。因此,加密算法、操作系统SE、应用程序接口(API)等可以写在ROM中,-非易失性存储器,比如EEPROM(电可擦除只读存储器)。它通常用于存储每张卡特定的数据,例如,持卡人身份、服务程序的访问权、文件系统、该卡的所有应用程序等,-易失存储器RAM,用于运行该卡命令的工作空间,-保密单元CRYP,用于数据加密,-考虑到电源供电电压、时钟速度等的单元,-UART(通用异步收发报机)类型的输入/输出端口,例如,本领域技术人员所熟知的,用于卡CAR和阅读器LEC之间通信的端口,-一连串把不同部分连接在一起的总线BUS,用于数据、地址和命令交换。
该模块同样包括用于与阅读器进行通信的触点,具体是-输入-输出I/O触点,-电触点VCC、VPP和接地GND(电触点VPP通常用于提供编程用的电压,而触点VCC用于给卡供电),-触点RES,用于复位该卡或给该卡上电。
操作系统有在请求指令下能运行的命令置位。使用标准的和安全的通信协议,它管理与外设的通信。在命令被运行前,操作系统确认(validate)给定的命令。
当给卡CAR加电时,它发送消息给阅读器LEC。这个消息通常称为ATR(应答-复位)消息。这个ATR消息通常包括许多字节。
如引言中所提及,问题就涉及到ATR消息中两字节传送之间的时间间隔。
根据第一实现例,解决方法包括使用定时设备,比如可编程时钟TIM(计时器)。可编程时钟是每隔“n”个时钟周期就用时钟产生中断信号的电路。既然它的时钟频率是可以修改的,这个时钟就称为是可编程的。
这个可编程时钟可以放在卡CAR上也可以放在与卡直接或间接相连的外部设备上。例如,这个时钟TIM可以是阅读设备的一部分。间接相连设备的一个例子可以是与阅读器LEC相连的计算机。
在我们的实现例中,可编程时钟TIM包含在智能卡CAR中。
为便于更容易理解,我们将分别引用图3A和图3B上的算法ALG1和ALG2的步骤来阐明本发明。
这两个算法ALG1和ALG2是相互作用的。换句话说,当操作系统执行处理操作时,算法AGL1可在任何时候被由可编程时钟触发的中断指令所中断,这样就可以传送ATR字节。
在我们的实现例中,第一个算法ALG1包括以下主要步骤-第一步ET11包括给卡上电。
-在第二步ET21期间,操作系统激活可编程时钟TIM,以便它触发用于ATR字节传送的中断。
-在第三步ET31期间,操作系统完成一连串处理操作(T1~Tn)。在我们的例子中,参数“n”是要完成的处理操作的数目。
步骤ET21和ET31可以在任何命令中运行。明显地,其它步骤可以被执行。例如,激活动作可以不直接发生在上电后。处理步骤也许可以安排在步骤ET11和ET31之间。
第二个算法ALG2阐明ATR字节Oj(j=1,…,m)传送的步骤。在第一个算法的第二个步骤ET21中激活动作完成后,执行ALG2这个算法。ALG2这个算法是包括以下步骤的程序循环-在第一步ET12期间,可编程时钟触发可中断操作系统的中断I1。操作系统中断它的当前工作,例如,正在运行中的处理操作(T1-Tn),假如它们已经开始了。
-在步骤ET22中,在接收到中断I1后,操作系统跳转到设计好用于ATR字节传送的代码序列,并且开始第一ATR字节O1的传送。
-接下来,步骤ET42包括确定ATR消息是否包括其它要传送的字节。在我们的实现例中,这个步骤包括确定在ATR消息中仍要传送的字节数目L(ATR),并且包括在完成每个字节的传送后将该数目降低一个单位(L(ATR)-1)。
-在步骤ET52期间,检验仍要传送的字节数目。现在,这里存在两种可能第一种可能假如仍要传送的字节数目L(ATR)大于1的话,重复步骤ET12。在步骤ET12期间,可编程时钟自动触发新的中断I2,该中断可以再次中断算法ALG1的运行。作为新中断I2更进一步的动作,操作系统传送第二字节O2。进程继续运行,通过1单元,仍未传送字节的数目的值L(ATR)减1,而下标j加1。当所有字节均已经传送完了,优选地,通知操作系统ATR消息中字节的传送已经完成了的消息。
第二种可能假如在步骤ET52中执行的检验表明没有更多的字节需要传送,那么处理操作继续运行直到它们结束。
优选地,在完成传送字节On后,操作系统开始步骤ET32期间的处理操作,或者继续运行假如在中断I1前已经开始了的处理操作。例如,在步骤ET52中确定仍要传送字节数目的检验期间,操作系统可以继续运行之前已经被中断的进程直到触发新的中断。
图4按照时间阐明了阅读器LEC、操作系统和可编程时钟TIM之间信息的交换。这个图更清楚的表明了当ATR消息中字节传送被触发时的时间。在本图上,中断或字节传送的时延ΔOn被从实际情况移开(be far removed fromreality)。为更好的理解图3A-3B和4之间的一致性,在余下的描述中,图3A和3B的步骤均书写在圆括号之间。
在加电后(ET11),操作系统传送第一消息来激活可编程时钟(ET21)。
一旦被激活,可编程时钟传送中断I1给操作系统,这样操作系统就中断它当前的处理操作(ET12)。
在接收到中断后,操作系统传送第一字节O1给卡阅读器(ET22)。传送时间比如为ΔO1。
进程继续运行,传送第二中断I2给操作系统,并且在接收到该中断后,操作系统传送第二字节O2给卡阅读器。传送时间比如为ΔO2。
这个图表明了字节O(m-1)传送结束时与下一个字节Om的传送被触发时的时间间隔ΔRm。这个时间间隔大约被缩减为传送中断所需的时间。
本发明的另一变体包括每个中断后传送至少两个字节。代替在中断后传送一个字节,可编程时钟可被编程以允许在每个中断后传送k个字节。对于这个变体可编程时钟必须可被编程,以便两中断间有足够的时间来传送这k个字节。图5是阐明这个变体的算法ALG3的示意图。与图2所示的算法ALG2相比在这个图上增加了步骤ET72。这个步骤ET72包括用来检验在一个中断后连续传送的字节数目的步骤。这里有两种可能第一种可能假如传送字节的数目不等于k,操作系统在步骤ET22中传送另一个字节。然后,数目k增加1个单位,并且下标j也增加1个单位。
第二种可能假如传送字节的数目等于k,操作系统传送一个中断并且执行ET12。然后,参数k被复位,以便可执行步骤ET72中的检验操作。
图6按照时间t阐明了阅读器LEC、操作系统和可编程时钟TIM之间的信息流。这个图是在每个中断后传送三个字节的例子(k=3)。这个图清楚地表明两个中断间无间断连续传送字节。显然,如图4所示,中断或字节的传送时延被从实际情况移开。
图7是算法ALG4,阐明了第二实现例,在其中产生一个位于操作系统外部的代理。在本实现例中不再需要如第一实现例的情形中的中断操作系统。本代理是个软件程序,它的功能是触发ATR消息中字节的传送,以及传送这些字节。
本代理可以是,比如说,上面所述的UART部分。它可以被编程来周期性地传送确定数目的字节。代理同样可以是含有第二微处理器的模块,它负责触发字节的传送,并传送字节。
阐明第二实现例的算法ALG4包括以下步骤
在算法ALG4的步骤ET13中,智能卡被加电。
在步骤ET23中,微处理器接收RESET命令,并激活代理。激活动作包括启动代理。
在步骤ET33中,操作系统传送ATR消息的所有字节给代理。
在步骤ET43中,ATR消息的字节被存储在存储器中,比如与代理相连的缓存。
在激活和接收到ATR消息中的字节后,代理变成负责触发字节传送和传送这些字节。那么,在步骤53中,操作系统就可以,也许是并行的,集中于其它任务,比如处理操作(T1~Tn)。传送方法可以是图3B中描述的方法。在步骤ET63期间,字节传送就包括如同图3B上步骤ET22中那样传送字节。另一步骤ET73,如同图3B上步骤ET42中那样,包括确定ATR消息是否包含要传送的其它字节。在我们的实现例中,这个步骤包括确定ATR消息中仍要被传送字节的数目L(ATR)和在完成一个字节的每个传送后通过1单元来确定这个数目。另一步骤ET83,相当于图3B中的步骤ET52,包括检验仍要被传送字节的数目。现在,这里有两种可能第一种可能假如仍要传送字节的数目L(ATR)大于1,重复步骤ET63。该代理传送第二字节O2。进程继续运行,通过1单元,仍未传送字节数目的值减1。当所有字节均已被传送时,优选地,通知操作系统ATR消息中字节的传送已经完成了的消息。
第二种可能假如步骤ET83中执行的检验表明没有更多的字节需要传送,那么,在步骤ET93期间,一个消息通知操作系统ATR消息中的字节传送已经完成。
注意到选择来阐明这个第二实现例的传送过程相应于图3B中的算法ALG2,但它们也可如图5中的算法ALG3那样简单地实现。
同样注意到,在之前描述的步骤ET33中,操作系统能在各种尝试中传送ATR消息的所有字节给代理,这些尝试是视缓存的大小和ATR消息中要传送字节的数目两者而定。
注意到前面描述的代理也许可以位于卡上,或者阅读器上或其他直接或间接通过总线连接到卡上的设备上。在我们例子中,我们认为阅读器直接连接到卡上。一个间接连接设备的例子是管理卡阅读器的计算机。
通常,本发明涉及智能卡CAR,其中它包含位于操作系统外部的模块(TIM)来管理字节传送的触发。在我们实现例中,该模块触发一连串形成ATR消息的字节中每个字节的传送。显然,本发明不局限于包含一个模块的卡,而是可以应用到任何包含至少一个模块的卡上。我们已经看到这个模块(TIM)包括在使用前由操作系统激活的程序。
我们已经看到在第一实现例中模块TIM是可编程时钟,在激活后,它产生中断,该中断可以中断操作系统正在运行的任何处理操作,并且能迫使操作系统触发字节传送。
在这个第一实现例中,我们已经看到这个可编程时钟可以位于两者之一-在智能卡CAR上,-或在直接或间接连接到智能卡CAR的设备上。
直接连接设备的一个例子可以是卡阅读器LEC。
我们在描述中同样已经看到这个模块TIM可以是代理,该代理包含程序,在激活后,该程序既负责触发字节传送又负责传送字节。要实现这个例子,代理需要存储器,比如缓存。在这个存储器中,代理存储全部或部分由操作系统传送的字节。优选地,这个存储器要足够大,足以容纳ATR消息的所有字节。
如我们以前已经看到的,本发明尤其适用于复位字节,即本领域技术人员所熟知的ATR(应答-复位)字节。这些ATR字节在卡被上电后由卡传送。
该解决方法同样涉及包括智能卡和智能卡阅读器在内的智能卡系统。我们已经看到这个系统包括一个(或几个)卡位于操作系统外部的模块(TIM),用来管理字节传送的触发。从它既可以位于卡上、或者阅读器上或任何其它通过至少一条命令线直接或间接与卡相连的设备上这个意义来说,这个模块的位置是不重要的。
这个解决方法同样涉及智能卡CAR的阅读器LEC。这个阅读器包括模块(TIM),用来管理由传送字节的操作系统所产生的触发。该模块(TIM)是可编程时钟,在它激活后,该时钟产生中断,该中断可以中断操作系统正在运行的任何处理操作,并且能迫使操作系统传送字节。
本发明同样涉及在系统中通信的方法,该系统包括含有微控制器的智能卡CAR和智能卡阅读器(LEC),上述设备包括位于操作系统外部的模块(TIM),用来管理字节传送的触发。该方法包括用来激活该模块的步骤,以便它触发从卡到阅读器(LEC)至少一个字节的传送。
为完成触发步骤,在我们第一实现例中,模块(TIM)产生中断,该中断可以中断包含在卡中的操作系统正在运行的任何处理操作,并且可以通过操作系统触发由操作系统到阅读器至少一个字节(ATR)的传送。
在第二实现例中,我们已经看到该模块可以是“智能化”的软件代理。在本代理激活后,该方法包括把所有或部分字节送入到与这个代理相连的存储器中的步骤,这个代理触发装在存储器中的字节到阅读器的传送。
该触发由程序执行。这个程序包括程序代码指令来运行激活上述模块的步骤,以便它触发从卡到阅读器(LEC)的字节的传送。这个数据处理设备可以是,如我们已经看到的,智能卡或者直接或间接连接到智能卡CAR上的设备。
最后,本发明涉及含有操作系统的微控制器,其中它包括操作系统外部模块(TIM),用来触发字节传送。
我们现在看到本发明具有的其它明显优点。除提供当触发ATR消息的字节时的理想时间控制,我们已经看到中断可由存在于某些智能卡中的模块所触发,也就是,可编程时钟,这样,根据第一实现模式,减少了实现本发明方法的费用。第二实现例同样表明中断的想法可以通过创建位于操作系统外部的软件代理来加以避免。这个软件所具有的优点在于,在被操作系统激活后,它不但管理字节传送的触发,而且管理字节的传送。
此外,本发明还具有其它不容忽视的优点。通过完全控制触发时间,同样可以控制ATR消息中所有字节传送所需的全局持续时间。通过本发明的方法,传送ATR消息所需的全局持续时间是可控的,因而能被调整,以便ATR消息传送结束的时间能与当操作系统准备好接收从阅读器来的APDU命令时的时间同步。
权利要求
1.一种包含操作系统的智能卡(CAR),其中它包括位于操作系统外部的模块(TIM)来触发字节传送。
2.如权利要求1所述的卡,其中模块(TIM)包括程序,在使用上述模块前操作系统激活该程序。
3.如权利要求1和2所述的卡,其中该模块(TIM)是可编程时钟,在它激活后,该时钟产生中断,该中断可以中断操作系统正在运行的任何处理操作,并且能迫使操作系统触发字节传送。
4.如权利要求1和2所述的智能卡,其中该模块(TIM)是包含程序的代理,在它激活后,该程序既负责触发字节传送又负责传送字节。
5.如权利要求4所述的智能卡,其中,为了传送字节,代理包括存储器,该存储器能储存全部或部分由操作系统传送的字节。
6.如之前权利要求中任何一个所述的智能卡,其中在卡被上电后,由卡传送的字节是ATR(应答-复位)字节。
7.一种包含智能卡和智能卡阅读器的智能卡系统,其中它包括卡位于操作系统外部的模块(TIM),用来管理字节传送的触发。
8.如权利要求7所述的设备,其中该模块可以位于卡上、或者阅读器上或任何其它通过至少一条命令线直接或间接与卡相连的设备上。
9.一种在系统中通信的方法,该系统包括含有微控制器的智能卡CAR、智能卡阅读器(LEC),上述系统包括位于操作系统外部的模块(TIM),用来管理字节传送的触发,该方法包含用来激活上述模块的步骤,以便它触发从卡到阅读器(LEC)至少一个字节的传送。
10.如权利要求9所述的方法,其中,为完成触发步骤,该模块(TIM)产生中断,该中断可以中断包含在卡中的操作系统正在运行的任何处理操作,并且可以通过操作系统触发由操作系统到阅读器至少一个字节(ATR)的传送。
11.如权利要求9所述的方法,其中该模块(TIM)是软件代理,并且,其中在该模块激活后,该方法包括把所有或部分字节装入到与本代理相连的存储器中的步骤,而且,本代理执行触发字节传送的步骤和执行传送装在存储器中的字节给阅读器(LEC)的步骤。
12.一种用于系统的计算机程序,该系统包括含有微控制器的智能卡CAR、智能卡阅读器(LEC),上述系统包括位于操作系统外部的模块(TIM),上述程序包括代码指令,用来执行激活上述模块的步骤,以便它触发从卡到阅读器(LEC)的字节的传送。
13.一种含有操作系统的微控制器,其中它包括位于操作系统外部的模块(TIM),用来触发字节传送。
全文摘要
本发明涉及智能卡(CAR),其中该卡包含至少一个位于操作系统外部的模块(TIM),用来管理字节传送的触发。通过监控操作系统,该外部模块(TIM)担当助手角色。在它作为助手的角色中,它能迫使操作系统触发字节传送。因此,字节间的时间间隔得到了比较好的保证,从而阅读器能与智能卡正常通信。当这些时间间隔得不到保证时,阅读器不能正确识别卡。该发明因而避免了卡的弹出。
文档编号G06K19/073GK1568482SQ02820199
公开日2005年1月19日 申请日期2002年10月10日 优先权日2001年10月10日
发明者乔斯·门内卡特, 克里斯托弗·吉恩 申请人:施蓝姆伯格系统公司