数据通信的移动设置的制作方法

文档序号:7612223阅读:198来源:国知局
专利名称:数据通信的移动设置的制作方法
相关申请的相互引用本申请与下列申请有关Susser和Schwabe于1999年2月2日提出的美国专利申请,标题为“Object-Oriented Instruction Set for Resource-Constrained Devices”。
Levy和Schwabe于1997年4月15日提出的美国专利申请,标题为“Virtual Machine with Securely Distributed Bytecode Verification”。
1.发明领域本发明涉及计算机系统。尤其是,本发明涉及数据通信的移动设置(moving set)。
2.发明背景虚拟机是一个由软件应用或者由处理器执行的指令序列产生的抽象的计算装置。术语“体系结构中性(architecture-neutral)”指的是程序,诸如那些以JavaTM程序设计语言编写的程序,可以由虚拟机在各种各样的具有多种不同的计算机体系结构的计算机平台上执行。因此,例如在基于windowsTM的个人计算机系统上执行的虚拟机将使用相同指令组作为在基于UNIXTM的计算机系统上执行的虚拟机。虚拟机的指令序列的独立的平台编码的结果是一串一个或多个字节码,每个字节码例如是一个字节长的数字代码。
JavaTM虚拟机是虚拟机的一个例子。由JavaTM虚拟机执行的编译程序代码以独立于硬设备和操作系统的二进制格式表示,其通常存储在称为类文件格式的文件中。类文件被设计成处理面向目标的结构,其可以代表以JavaTM程序设计语言编写的程序,但也可支持若干其它程序设计语言。类文件格式明确地规定类或者接口的表达式,包括细节,诸如可以在一个目标文件格式的特定平台中必然的字节排序。为了安全起见,JavaTM虚拟机在类文件中对于该指令施加了强的格式及结构约束。带有可用有效类文件术语表示的功能性的任何语言都能够以JavaTM虚拟机作为宿主机。类文件设计成能处理面向目标的结构,其可代表以JavaTM程序设计语言编写的程序,但也可支持若干其它程序设计语言。对JavaTM虚拟机的详细描述见于Lindholm等人所著″JavaTM虚拟机技术要求(The JavaTMVirtual machine Specification)″,Addison-Wesley Longman公司在1999年4月所出版的第二版。
与标准的台式计算机等等相比较资源受限设备通常认为是在存储器和/或计算能力或者速度方面相对受限的设备。举例来说,其它的资源受限设备包括蜂窝电话、边界扫描设备(boundary scan device)、字段可编程设备(field programmable device)、个人数字助理(PDA)以及传呼机及其它微型或者小体积装置(small footprint device)。
亦称为智能便携式数据携带卡的智能卡是一种资源受限设备。智能卡由塑料或者金属制成,并且具有一个电子芯片,该电子芯片包括一个执行程序的嵌入式微处理器或者微型控制器和储存程序和数据的存储器。上述装置可以约为信用卡大小,具有为8位或者16位体系结构的计算机芯片。另外,这些设备通常具有有限的存储容量。例如,某些智能卡具有小于一千字节(1K)的随机存取存储器(RAM)和有限的只读存储器(ROM),和/或诸如电可擦可编程只读存储器(EEPROM)的非易失性存储器。
JavaTM虚拟机执行以JavaTM程序设计语言编写的虚拟机程序代码,并且设计成使用32位体系结构。如能编写程序,使JavaTM虚拟机得以完全实施,用于在诸如智能卡的资源受限设备上执行,将是合乎希望的。但是,由于诸如智能卡的资源受限设备的受限的体系结构和存储器,完全的JavaTM虚拟机平台不能在这种设备上实施。因此,一种单独的Java CardTM(支持JavaTM程序设计语言的智能卡)技术支持用于资源受限设备的JavaTM程序设计语言的子集。
现在转向

图1,介绍一个典型的用于在Java CardTM技术启动设备(Java CardTMtechnology enabled device)120上安装应用程序的装置。在Java CardTM技术中,Java CardTM转换器100以常规的类文件105作为输入,并将其转换为CAP(转换的小应用程序)文件110。该CAP格式支持类文件信息的子集。每个CAP文件110包括在一个JavaTM包中限定的所有的类和接口。在转换之后,该CAP文件110被复制到智能卡终端,诸如一个具有读卡机外部设备的台式计算机。然后,在该终端上的一个安装工具115加载CAP文件110,并将其发送给Java CardTM技术启动设备120。在该Java CardTM技术启动设备120上的一个安装应用程序125接收和处理来自终端的数据,从而在该Java CardTM技术启动设备120上安装应用程序。
由于典型Java CardTM技术启动设备120的资源约束特性,只有相对少量的存储器可用于数据通信。因此,在终端和Java CardTM技术启动设备120之间的通信,通常由多个从终端发送给Java CardTM技术启动设备120的应用数据单元(APDU)135组成。APDU 135是数据包,具有长度处于32字节到256字节范围的数据部分。从终端发送的数据在被发送给Java CardTM技术启动设备120之前被封装在一个或多个APDU 135中。
由于所封装的多个数据值的长度是变化的,该数据值经常在多个APDU 135之间被分离(split)。表1举例说明一个APDU 135的数据部分。表2示出在一个APDU 135中封装的数据。
表1
表2
如果在表2中所示数据封装在表1所示的APDU 135中,同时保留该数据的相应排序,将没有足够的余地用于第二个十六位整数,导致“数据分离(data split)”问题。这一数据分离问题一般通过在终端侧对数据进行处理来解决,以保证该数据不会被分离。举例来说,这种在该终端侧所进行的处理可以包括改变APDU 135的尺寸以预防数据分离,或者在将其发送给Java CardTM技术启动设备120之前重新在APDU内使数据排序。上述解决方案中,每种都有缺点。
改变APDU 135尺寸和在APDU 135内重新使数据排序需要在该终端和该卡之间的复杂协商(negotiation)。终端必须转换数据,并给智能卡提供足够信息去重建该数据。该卡必须从终端接收信息,重建该数据,并且对终端提供响应。如上所述地使终端和卡的数据相关,增加了处理开销(overhead)。对于程序大小和为储存缓冲数据所需的RAM的数量二者而言,这种数据相关性还增加了存储开销。
在终端侧放置智能(intelligence)还增加了安全方面的担心。分辨是否存在数据分离问题即要求终端知道每个所发送的数据项的大小。这个长度信息与数据类型有关。如果数据被加密则该信息是不可用的。因此,终端必须在其解释数据以确定每个数据单元的大小之前,对加密数据予以解密。一旦数据被解密,终端即可使用保密信息。在某些应用中,只有智能卡预定去解释数据,而不是终端。
因此,在现有技术中,需要一种用于在终端设备和智能卡之间进行数据通信的方法和装置,其对于终端和智能卡的应用而言,需要相对小的处理和存储开销。对这样的方法和装置的另一个要求是其相对安全。
图2是一个流程图,举例说明一种按照本发明的一个实施例而用于数据通信的方法。
图3是一个流程图,举例说明一种按照本发明的一个实施例而用于附加分离数据值的方法。
图4是一个流程图,举例说明一种按照本发明的一个实施例而用于移动窗口的方法。
图5是一个方框图,举例说明将本发明用于32字节数据包和4字节窗口。
具体实施方案详述本领域普通技术人员会了解下面的本发明描述仅仅是说明性的。本发明的其它实施例自身易于启发受益于本说明的这些技术人员。
本发明涉及计算机系统。尤其是,本发明涉及移动设置(moving set)数据通信。本发明进一步涉及机器可读的媒体,在其上存储(1)本发明的布设参数;和/或(2)应用本发明而在计算机上完成操作的程序指令。上述的媒体举例来说包括磁带、磁盘、诸如CD ROM的光学可读媒体以及诸如PCMCIA卡的半导体存储器。媒体也可以采取便携式器件的形式,诸如小磁盘、软盘或者盒式磁带。媒体也可以为较大或者固定器件的形式,诸如硬盘驱动器或者计算机RAM。
与标准的台式计算机等等相比,资源受限设备通常认为是在存储和/或计算能力或者速度方面相对受限的设备。虽然下面论述的特定的实施方案是就智能卡来描述的,本发明可以使用其它的资源受限设备,包括——但不限于——蜂窝电话、边界扫描设备、字段可编程设备、个人数字助理(PDA)以及传呼机和其它的微型或者小体积装置。本发明也可以在非资源受限设备上使用。
为本公开起见,术语“处理器”可用于指实体的计算机或者虚拟机。同样,数据处理指的是为在资源受限设备上安装应用程序所需进行的处理,该资源受限设备例如为一个Java CardTM技术启动设备120。
根据本发明,在概念上将实际上分段的数据作为连续的数据流来对待。数据在一个概念上的滑动开闭窗内得到处理,也称作移动设置。如果不存在数据分离,数据处理照常进行。如果检测到数据分离,窗口移向概念数据流的信源以查看其余数据,包括该分离数据的另一部分。这一处理持续进行,直到所有的数据耗尽。
现在转向图2,介绍根据本发明的一个实施例的移动数据设置流程图。在附图标记150,接收数据包。在附图标记155,将窗口的开始设置到数据包的开始。在附图标记160,确定数据值是否是分离的。如果数据值未曾分离,则在附图标记165照常处理该数据。在附图标记170,使窗口移动相当于该窗口尺寸的若干字节。
如果一个数据值已经分离,在附图标记165照常处理直到分离数据值的这部分数据。在附图标记170,储存出现的这部分分离数据值。在附图标记175,将窗口移动以包括余下的分离数据。在附图标记180,将分离数据的储存部分从新定位的窗口附加到该余下的分离数据上。在附图标记165,照常处理附加后的数据。
现在转向图3,介绍根据本发明的一个实施例的附加数据的流程图。在附图标记200,检索存储的数据。在附图标记205,当在图2的附图标记175窗口被移动到包括余下的分离数据的时候,存储的数据被与新获得的数据结合(concatenated)。在附图标记210,处理该结合的数据。在附图标记215,窗口移动通过该结合的数据。
现在转向图4,介绍根据本发明的一个实施例的移动窗口的流程图。在附图标记230,确定窗口是否大得足以适应移动而无需丢弃未处理的数据。如果窗口不够大,在附图标记235增加窗口尺寸。如果窗口够大,在附图标记240确定是否已到达输入数据流的结尾。如果已到达输入数据流结尾,在附图标记245读取至少一个数据包。如果尚未到达输入数据流的结尾,在附图标记250使窗口定位。
为有助于理解本发明,将本发明施加于图5所示的一个特定例子中。图5说明本发明使用一个32字节数据包缓冲器270和一个4字节窗口275。在数据包中除二个数据项之外,所有的都是2字节整数。以附图标记280表示一个字节,以附图标记285表示4字节整数的头两个字节。在图2中附图标记150接收第一个数据包。在附图标记155,将窗口275设置到数据包270的开始。在附图标记160,确定窗口275中的数据值是否分离。由于结果是窗口275的结尾与2字节整数290的结尾重合,没有数据分离。在附图标记165,照常处理数据值290和295。
在附图标记170,移动窗口275。在图4的附图标记230,确定窗口要大得足以移动4个字节,因为该窗口可容纳那么多字节。在附图标记240,进行检查以确定是否已到达输入数据流的结尾。由于迄今仅处理了32字节数据包的4个字节,该数据流的结尾尚未到达。在附图标记250,窗口朝向输入数据流的信源移动4个字节。重新定位的窗口由附图标记300表示。窗口300包括一个字节305、一个2字节整数310和另一个2字节整数315的一个字节。
在图2的附图标记160,确定数据值是否已经分离。由于窗口仅包括2字节整数315的一个字节,数据值已经分离。在附图标记165,处理分离之前存在的数据值。因此,字节305和2字节整数310得到处理。在附图标记170,储存2字节整数315的一个字节。在附图标记175,移动窗口以包括余下的分离数据。重新定位的窗口以附图标记330表示。窗口330包含分离的2字节整数315的两个字节。
窗口335至355中,每个都包含二个2字节整数,并且通过与窗口275一样的方法进行处理。窗口360只包括4字节整数365的一半。在图2的附图标记170,存储这二个字节365。在附图标记175,移动窗口以包括余下的分离数据。由于输入数据流的结尾已经到达,在图4的附图标记245读取另一个数据包。由于在这个例子中窗口尺寸小于32字节数据包数据的尺寸,只有一个数据包被读取。在图3的附图标记200,检索存储的数据。在附图标记205,存储数据与窗口360中正从新数据包读取的另一个数据结合。在附图标记210,处理该结合的数据。在附图标记215,窗口被移动通过该结合的数据。
本领域普通技术人员还会认识到,利用本发明所遇到的分离数据的数量和窗口尺寸成反比。通过增加窗口尺寸而减少分离数据的效果必须与较大窗口所增加的内存需求对照权衡。
按照本发明的一个实施例,分配用于存储分离数据值的字节数目是基于卡设备的计算机体系结构而选择的。一个标准的十六位处理器具有二个字节整数基底型。大多数十六位处理器指令预期有16位操作数。因此,在数据包中所遇到的大多数数据值将是二个字节或者更少。如果二字节数据值是分离的,一个字节将在窗口内,而另一字节在窗口外。因此,对于大多数情形来说,一字节缓冲器即足够了。
同样,一个标准的32位处理器具有4字节的整数基数类型。如果一个4字节整数是分离的,在窗口中的数据数量可以是该4字节中的一个字节到三个字节。因此,对于大多数情形来说,三字节缓冲器将是足够的。因而一般地说,对于一个n基数处理器——其中n是位的数目,分配给存储器缓冲器的字节的数目是(n/8)-1。
根据本发明另一实施例,数据包的标题(header)部分用于存储分离数据值。例如,一个APDU包括一个5字节的标题。一个APDU包括一个命令或者一个响应。标准的命令APDU的格式示于表3。
表3
在表3中,CLA是指令类别,INS是指令,P1和P2是指令参数,Lc是指令的数据字段的字节长度,Data是该指令的数据字段,而Le是在响应的数据字段中所预期的字节最大数值。在标题中的每个项目是一个字节大小。因此,最大的数据字段长度是256字节。在ISO标准7816-41995第5.3节中详细描述了APDU。
通常一旦收到APDU,即检查五个APUU标题字节CLA、INS、P1、P2以及Lc,从而确定如何解释APDU的数据部分。一旦从标题字节提取了信息,在APDU数据部分的后续处理期间,即不会使用标题字节的存储位置。按照本发明的这个实施例,APDU标题字节作为用于分离数据值的存储单元而重复使用,因此避免了附加存储器的配置。
本发明以特定的窗口尺寸和特定的数据包尺寸加以说明,其意绝非作出限定。本领域普通技术人员会认识到本发明可适用于各种各样的数据包格式和窗口尺寸。同样,虽然根据Java CardTM技术而举例了说明本发明,本领域普通技术人员会认识到本发明还可适用于许多其它平台。举例来说,这些平台包括K虚拟机(KVM)技术。在Sun微型系统公司1999年6月8日出版的“K虚拟机(KVM)-白皮书(The KVirtual Machine(KVM)-A White Paper)”中,对KVM技术进行了说明。
本发明可以通过软件或固件以及可编程门阵列设备、专用集成电路(ASIC)及其它硬件来实施。
在此描述了一种用于移动设置数据通信的新方法。虽然显示和描述了本发明的实施例及其应用,对受益于本说明的本领域技术人员来说显而易见的是,无需脱离在此所述的本发明概念即可能会有许多有别于上述内容的修改。因此,本发明仅受限于所附权利要求书的精神。
权利要求
1.一种用于数据通信的方法,包括接收一个数据包,所述数据包包括至少一个连续数据项;规定一个窗口,其初始即包括所述至少一个连续数据项的开始;确定是否所述窗口包括分离数据项的一部分,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项的时候,处理所述至少一个连续数据项;处理所有的在所述第一部分之前出现的所述至少一个连续数据项;存储所述第一部分;移动所述窗口以便包括所述第一部分和所述第二部分;将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包;和处理所述附加的数据包。
2.根据权利要求1所述的方法,其中所述移动所述窗口的步骤进一步包括当所述窗口小于所述第一部分和所述第二部分相结合的尺寸时,增加所述窗口的尺寸;当到达一个输入数据流的结尾时,接收另一个数据包;以及移动所述窗口以便包括所述第一部分和所述第二部分。
3.根据权利要求1所述的方法,其中所述附加步骤进一步包括检索所述存储的第一部分;结合(concatenating)所述存储的第一部分和所述第二部分,从而生成结合的数据;处理所述结合的数据;以及将所述窗口的所述开始移动到所述第二部分之后的第一字节。
4.根据权利要求1所述的方法,其中所述数据包包括一个APDU,所述APDU包括一个标题(header);且所述存储的第一部分存储在所述标题中。
5.一种机器可读的程序存储设备,其具体实施为该机器可执行来完成数据通信的程序指令,包括接收一个数据包,所述数据包包括至少一个连续数据项;规定一个窗口,其初始即包括所述至少一个连续数据项的开始;确定是否所述窗口包括分离数据项的一部分,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项的时候,处理所述至少一个连续数据项;处理所有的在所述第一部分之前出现的所述至少一个连续数据项;存储所述第一部分;移动所述窗口以便包括所述第一部分和所述第二部分;将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包;和处理所述附加的数据包。
6.根据权利要求5所述的程序存储设备,其中所述移动所述窗口的步骤进一步包括当所述窗口小于所述第一部分和所述第二部分相结合的尺寸时,增加所述窗口的尺寸;当到达一个输入数据流的结尾时,接收另一个数据包;以及移动所述窗口以便包括所述第一部分和所述第二部分。
7.根据权利要求5所述的程序存储设备,其中所述附加步骤进一步包括检索所述存储的第一部分;结合所述存储的第一部分和所述第二部分,从而生成结合的数据;处理所述结合的数据;以及将所述窗口的所述开始移动到所述第二部分之后的第一字节。
8.根据权利要求5所述的程序存储设备,其中所述数据包包括一个APDU,所述APDU包括一个标题;且所述存储的第一部分存储在所述标题中。
9.一种用于数据通信的装置,包括至少一个具有程序指令的存储器;和至少一个配置为使用该程序指令的处理器接收一个数据包,所述数据包包括至少一个连续数据项;规定一个窗口,其初始即包括所述至少一个连续数据项的开始;确定是否所述窗口包括分离数据项的一部分,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项的时候,处理所述至少一个连续数据项;处理所有的在所述第一部分之前出现的所述至少一个连续数据项;存储所述第一部分;移动所述窗口以便包括所述第一部分和所述第二部分;将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包;和处理所述附加的数据包。
10.根据权利要求9所述的装置,其中对于所述存储的第一部分的存储器分配是基于所述至少一个处理器的计算机体系结构(architecture)而进行。
11.根据权利要求9所述的装置,其中所述至少一个处理器由n位处理器构成;并且为所述存储的第一部分而分配的8位字节的数目是(n/8)-1。
12.根据权利要求9所述的装置,其中所述至少一个处理器由32位处理器构成;并且三个8位字节被配给所述存储的第一部分。
13.根据权利要求9所述的装置,其中所述至少一个处理器由16位处理器构成;并且一个8位字节被配给所述存储的第一部分。
14.根据权利要求9所述的装置,其中所述数据包包括一个APDU,所述APDU包括一个标题;且所述存储的第一部分存储在所述标题中。
15.一种用于数据通信的装置,包括用于接收一个数据包的装置,所述数据包包括至少一个连续数据项;用于规定一个初始即包括所述至少一个连续数据项的开始的窗口的装置;用于确定是否所述窗口包括分离数据项的一部分的装置,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项时,用于处理所述至少一个连续数据项的装置;用于处理所有的在所述第一部分之前出现的所述至少一个连续数据项的装置;用于存储所述第一部分的装置;用于移动所述窗口以便包括所述第一部分和所述第二部分的装置;用于将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包的装置;和用于处理所述附加的数据包的装置。
16.一种资源受限设备,包括存储器,用于存储包括指令序列的应用软件程序从而接收一个数据包,所述数据包包括至少一个连续数据项;规定一个窗口,其初始即包括所述至少一个连续数据项的开始;确定是否所述窗口包括分离数据项的一部分,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项的时候,处理所述至少一个连续数据项;处理所有的在所述第一部分之前出现的所述至少一个连续数据项;存储所述第一部分;移动所述窗口以便包括所述第一部分和所述第二部分;将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包;和处理所述附加的数据包;以及在基于小于32位体系结构的微处理器上实施的虚拟机,其中该虚拟机能够执行包括在所述数据包内的指令。
17.一种智能卡,包括存储器,用于存储包括指令序列的应用软件程序从而接收一个数据包,所述数据包包括至少一个连续数据项;规定一个窗口,其初始即包括所述至少一个连续数据项的开始;确定是否所述窗口包括分离数据项的一部分,所述分离数据项包括在所述窗口内的第一部分,以及未在所述窗口内的第二部分;当不存在所述分离数据项的时候,处理所述至少一个连续数据项;处理所有的在所述第一部分之前出现的所述至少一个连续数据项;存储所述第一部分;移动所述窗口以便包括所述第一部分和所述第二部分;将所述存储的第一部分附加到所述第二部分,从而生成一个附加的数据包;和处理所述附加的数据包;以及在基于小于32位体系结构的微处理器上实施的虚拟机,其中该虚拟机能够执行包括在所述数据包内的指令。
18.根据权利要求17所述的智能卡,其中所述虚拟机实质上是一个Java CardTM虚拟机。
全文摘要
一种用于数据通信的方法,包括接收一个包含至少一个连续数据项的数据包,规定一个初始即包括数据项(150)的开始的窗口,确定是否该窗包括分离数据项(160)的一部分,并且当不存在分离数据项的时候处理连续数据项。该方法还包括当发现分离数据项的时候,处理所有在分离数据项之前出现的数据项,存储分离数据项(170)的第一部分,移动该窗口以便包含该分离数据项(175)的两个部分,附加该存储的第一部分到第二部分,以便产生一个附加的数据包(180),并且处理该附加的数据包。
文档编号H04J3/24GK1423867SQ00818344
公开日2003年6月11日 申请日期2000年11月10日 优先权日1999年11月15日
发明者陈乔杰 申请人:太阳微系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1