CN1759376A - 用于加载到一装置上的程序数据的排序 - Google Patents

用于加载到一装置上的程序数据的排序 Download PDF

Info

Publication number
CN1759376A
CN1759376A CN200480006697.8A CN200480006697A CN1759376A CN 1759376 A CN1759376 A CN 1759376A CN 200480006697 A CN200480006697 A CN 200480006697A CN 1759376 A CN1759376 A CN 1759376A
Authority
CN
China
Prior art keywords
program
program element
apdu
unit
master
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200480006697.8A
Other languages
English (en)
Other versions
CN1759376B (zh
Inventor
爱德华·K·德容
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1759376A publication Critical patent/CN1759376A/zh
Application granted granted Critical
Publication of CN1759376B publication Critical patent/CN1759376B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data

Abstract

本发明是关于程序数据在一装置上的最优化加载,其包含:接收一包括多个程序单元的程序,其中至少一个程序单元为一主程序单元。获得所述程序的使用图,其中使用图的根节点代表所述根节点与一个或多个代表所述至少一个主程序单元的节点的接合。至少部分地基于对所述使用图的深度优先遍历来排序所述多个程序单元,而且将该有序程序传送到该装置。

Description

用于加载到一装置上的程序数据的排序
相关申请案交叉参考
本申请案与下列各案有关:
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“System for Communicating Program Data Between a First Device and aSecond Device”的美国专利申请案第10/346,581号,于此共同转让。
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“Signing Program Data Payload Sequence in Program Loading”的美国专利申请案第10/346,230号,于此共同转让。
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“Usinga Digital Fingerprint to Commit Loaded Data in a Device”的美国专利申请案第10/346,238号,于此共同转让。
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“Optimized Representation of Data Type Information in Program Verification”的美国专利申请案第10/346,227号,于此共同转让。
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“RunTime Code Integrity Checks”的美国专利申请案第10/346,243号,于此共同转让。
以发明者Eduard de Jong的名义于2003年1月16日申请的标题为“Linking of Virtual Methods”的美国专利申请案第10/346,579号,于此共同转让。
技术领域
本发明涉及计算机科学领域。更特定而言,本发明涉及用于加载到一装置上的程序数据的排序。
背景技术
图1是一个说明一个用于在主计算机与智能卡之间传送程序数据的典型机制的方块图。智能卡110通常经由APDU(应用协议数据单元)与其它计算机100进行通信。APDU协议在国际标准ISO/IEC 7816-3中加以规定。APDU包括命令115或响应120消息。智能卡110从主计算机100接收命令APDU 115,执行在命令115中规定的指令,并以响应APDU 120来回复主计算机100。命令APDU 115与响应APDU 120在卡110与主计算机100之间交替地互换。
根据APDU协议,APDU消息包含两种结构。一种结构是被一加载终端上的主应用程序使用以发送命令到卡。另一种结构是被卡使用以将响应发送回主应用程序。前者被称为命令APDU(C-APDU),而后者被称为响应APDU(R-APDU)。图2A及图2B中分别说明了这两种结构。某些C-APDU组件为可选的。
Java CardTM技术使得用JavaTM程序设计语言编写的程序能在智能卡和其它资源受限装置上运行。Z.Chen的Java CardTM Technology for Smart Cards(2000)中描述了Java CardTM技术。
现转向图3,展示了一个说明加载转换过的小应用程序(ConvertedApplet,CAP)文件的方块图。Java CardTM虚拟计算机(JCVM)包含一个包括Java CardTM字节码解释程序345的卡上部分,及一个被称为转换程序310的卡外部分。解释程序345和转换程序310一起实施所有的虚拟计算机功能,包括加载JavaTM类别文件300和用特定语义集来执行这些文件。转换程序310加载且预处理类别文件300,所述类别文件300包含可为一个或多个数据包结构化的Java CardTM程序,并产生一个CAP(转换过的小应用程序)文件350。接着,CAP文件350加载到启用Java CardTM技术的智能卡330上,并由解释程序345执行。CAP文件350包括JavaTM数据包350中类别的可执行二进制表示。Java CardTM解释程序345提供对JavaTM语言执行模块的运行时间支持。
在Java CardTM技术中,用于下载及安装CAP文件350的机制包含于一个被称为安装程序340的单元中。Java CardTM安装程序340位于卡330内。其与卡外安装程序320合作。卡外安装程序320经由加载终端325,将CAP文件350中的可执行二进制及可能其它的数据传送到在卡330上运行的安装程序340。安装程序340将二进制写入到智能卡存储器中,使其与已置于卡330上的其它类别链接,并产生和初始化由Java CardTM运行时间环境内部使用的任何数据结构。在通过字节码解释程序345解释下载码之前,可选的卡上验证程序335执行下载码的字节码验证。
APDU协议将净荷或数据字段(图2的参考数字240)的大小限制为一个由RAM的限定大小决定的较小数目的字节(通常小于128)。大于所述限制的数据结构必须拆分于多个APDU的净荷部分之间。此拆分的执行通常与数据内容无关。举例来说,一特定APDU可包含一个数据结构的一部分和另一数据结构的一部分。这将在下文参考图4作更详细的阐释。
现转向图4,展示了一个说明从加载终端的角度加载CAP文件的方法的流程图。在步骤400中,接收一CAP文件。在步骤405中,在多个APDU间拆分CAP文件和相关认证数据。在步骤410中,根据APDU协议将APDU传输到目标智能卡。
现转向图5,展示了一个说明从智能卡的角度加载CAP的流程图。在步骤500中,在智能卡中重组CAP文件。在步骤505中,解密经重组的CAP文件。在步骤510中,认证经过解密的CAP文件数据。在另一解决方案中,CAP文件经认证且接着被解密。在又一解决方案中,所述CAP文件不经加密进行通信。在步骤515中,将经认证的CAP文件的内容安装于智能卡上。
现转向图6,展示了一个说明在智能卡中重组CAP文件的流程图。在步骤600中,接收一APDU。在步骤605中,将APDU存储于一个永久可变存储器中,例如EEPROM(电子可抹除可编程只读存储器)。或者,APDU净荷不存储于永久可变存储器中。在步骤610中,确认APDU的接收。在步骤615中,作出关于是否需要处理另一APDU的判定。从步骤600开始,处理另外的APDU。
现转向图7,展示了一个说明修改具有链接数据的存储程序以解析静态引用的流程图。卡存储器700代表在使用内嵌链接数据(704、712、728)链接可执行代码段(702、706、708、710、712、716、718、720、722、724、726、728、732)之前的卡存储器。卡存储器750代表在使用内嵌链接数据(704、712、728)链接可执行代码段(702、706、708、710、712、716、718、720、722、724、726、728、732)之后的卡存储器。参看卡存储器700,方法“A1A”代码702调用方法“A1C”708,方法“A2A”代码712调用方法“B1A”720,且方法“B2A”代码728调用方法“B1D”726。方法“A1A”链接数据704包含一个如何解析对方法“A1C”708的引用的指示。方法“A1A”链接数据704可额外地包含必须如何修改方法“A1A”代码702的指示。同样,方法“A2A”链接数据714包含如何解析对方法“B1A”720的引用的指示。方法“A2A”链接数据714可另外包含必须如何修改方法“A2A”代码712的指示。另外,方法“B2A”链接数据730包含如何解析对方法“B1D”726的引用的指示。方法“B2A”链接数据730可额外地包含必须如何修改方法“B2A”代码728的指示。参考图7的卡存储器750,用所调用的方法的地址来替代所调用的方法的符号引用且不存储链接数据。
遗憾的是,在一个永久可变存储器中存储重新创建的CAP文件及接着处理该CAP文件内容以创建所链接的可执行代码,需要大量的可用存储器而且很耗时。
因此,现有技术需要一种用于在主计算机与智能卡之间传送程序数据的相对有效的方法和装置。还需要这样一种相对安全的解决方案。另外还需要检测程序数据何时受到窜改的解决方案。
发明内容
本发明是关于在一装置上的程序数据的最优化加载,其包含:接收一包括多个程序单元的程序,其中至少一个程序单元为一主程序单元。获得所述程序的使用图,其中所述使用图的根节点代表所述根节点与一个或多个代表至少一个主程序单元的节点的接点。所述多个程序单元是至少部分地基于所述使用图的深度优先遍历而排序,而所述有序程序被传送到所述装置。
附图说明
并入本说明书中并构成本说明书的一部分的附图说明了本发明的一个或多个实施例,而且与具体实施方式一起用于解释本发明的原理和实施。
在图中:
图1是说明在主计算机与智能卡之间传送程序数据的典型机制的方块图。
图2A是说明典型命令应用协议数据单元(C-APDU)的方块图。
图2B是说明典型响应应用协议数据单元(R-APDU)的方块图。
图3是说明加载转换过的小应用程序(CAP)文件的方块图。
图4是说明从加载终端的角度加载CAP文件的流程图。
图5是说明从智能卡的角度加载CAP文件的流程图。
图6是说明在智能卡中重组CAP文件的流程图。
图7是说明修改具有链接数据以解析静态引用的存储程序的方块图。
图8是适用于实施本发明的若干方面的计算机系统的方块图。
图9是说明用于根据本发明的一个实施例,在主计算机与智能卡之间传送程序数据的系统的方块图。
图10是说明根据本发明的一个实施例,从主计算机传送程序数据到智能卡的高级流程图。
图11是说明根据本发明的一个实施例,从主计算机传送程序数据到智能卡的低级流程图。
图12是说明根据本发明的一个实施例,从主计算机的角度将程序数据从主计算机传送到加载终端的方法的流程图。
图13是说明根据本发明的一个实施例,将CAP文件划分为一个或多个逻辑APDU的流程图。
图14为说明根据本发明的一个实施例,使用程序单元类型映射信息的方法的流程图。
图15A为说明包含数据包结构化数据的CAP文件的方块图。
图15B是对应于图15A的CAP文件内的程序的使用图。
图15C是说明根据本发明的一个实施例,基于图15B的使用图而排序的图15A的CAP文件的方块图。
图16是说明根据本发明的一个实施例,对用于最优化验证的程序单元排序和链接的方法的流程图。
图17A是说明包含数据包结构化数据的CAP文件的方块图。
图17B是对应于图17A的CAP文件内的程序的使用图。
图17C是说明根据本发明的一个实施例,基于图17B的使用图而排序的图17A的CAP文件的方块图。
图18是说明根据本发明的一个实施例,将CAP文件分解为一个或多个逻辑APDU的方法的流程图。
图19是说明根据本发明的一个实施例,将CAP文件分解为包括包含有验证数据的APDU的一个或多个逻辑APDU的方法的流程图。
图20A是说明根据本发明的一个实施例,用于计算APDU数据流上的认证指纹的方法的流程图,其中所述指纹中包括验证APDU。
图20B是说明根据本发明的一个实施例,用于计算APDU数据流上的认证指纹的方法的流程图,其中所述指纹中不包括验证APDU。
图21是说明根据本发明的一个实施例,从加载终端的角度将程序数据从主计算机传送到加载终端的方法的流程图。
图22是说明根据本发明的一个实施例,将扩充的CAP文件分解为一个或多个逻辑APDU的方法的流程图。
图23是说明一种用于根据本发明的一个实施例,将一个包括验证数据的扩充的CAP文件分解成包括包含验证数据的APDU的一个或多个逻辑APDU的方法的流程图。
图24是说明根据本发明的一个实施例,将一个不包括验证数据的扩充的CAP文件分解成包括包含验证数据的APDU的一个或多个逻辑APDU的方法的流程图。
图25是说明根据本发明的一个实施例,将一个扩充CAP文件分解成包括包含链接数据的APDU的一个或多个逻辑APDU的方法的流程图。
图26是说明根据本发明的一个实施例,将一个包括验证数据的扩充CAP文件分解成包括包含验证数据的APDU和包含链接数据的APDU的一个或多个逻辑APDU的方法的流程图。
图27是说明根据本发明的一个实施例,将一个不包括验证数据的扩充的CAP文件分解成包括包含验证数据的APDU和包含链接数据的APDU的一个或多个逻辑APDU的方法的流程图。
图28是说明根据本发明的一个实施例,创建一个或多个方法链接APDU的方法的流程图。
图29是说明根据本发明的一个实施例,从智能卡的角度将程序数据从加载终端传送到智能卡的方法的流程图。
图30是说明根据本发明的一个实施例,从智能卡的角度使用HMAC认证指纹将程序数据从加载终端传送到智能卡的方法的流程图。
图31是说明根据本发明的一个实施例,执行加载初始化的方法的流程图。
图32是说明根据本发明的一个实施例,处理逻辑APDU流的方法的流程图。
图33是说明根据本发明的一个实施例,计算认证指纹的方法的流程图。
图34是说明根据本发明的一个实施例,处理逻辑APDU的方法的流程图。
图35是说明根据本发明的一个实施例,用于链接包括虚拟方法的程序的数据结构的流程图。
图36是说明根据本发明的一个实施例,修改具有链接数据以解析动态引用的存储程序的方块图。
图37是说明根据本发明的一个实施例,修改具有链接数据以解析动态引用的存储程序的流程图。
图38是说明根据本发明的一个实施例,程序单元提交(commitment)指纹的层级的方块图。
图39是说明根据本发明的一个实施例,包括程序码和程序单元提交指纹的数据结构的方块图。
图40是说明根据本发明的一个实施例,包括程序码和加载存储提交指纹的数据结构的方块图。
图41是说明根据本发明的一个实施例,使用程序单元提交指纹来判定一程序单元是否可使用的流程图。
图42是说明根据本发明的一个实施例,判定存储程序单元数据是否有效的方法的流程图。
图43是说明根据本发明的一个实施例的智能卡的方块图,其被配置成确保一被调用的方法在执行之前已经被验证。
图44是说明根据本发明的一个实施例,确保所调用的方法在执行之前已经被验证的方法的流程图。
具体实施方式
本文所描述的实施例是关于用于加载到一装置上的程序数据的排序。所属领域的技术人员将认识到本发明的下列具体实施方式仅为说明性的而不欲以任何方式进行限制本发明。受益于本揭示,所属领域的技术人员将不难发现本发明的其它实施例。现将详细参考如附图中所说明的本发明的实施方式。在所有附图和下文具体实施方式中使用相同的参考指示符来指示相同或相似部件。
为清晰起见,并不展示和描述本文中所述的实施例的所有常规特征。当然,应理解在任何这些实际实施方式的发展中,应作出若干实施方式特定的决策以达成开发者的特定目标,例如符合与应用及商业相关的限制,而且这些特定目标将因各实施方式和各开发者而不同。此外,应理解,这样的开发工作可能较复杂而且费时,但受益于本揭示的所属领域的技术人员而言这不过是一项常规任务。
根据本发明的一个实施例,可通过使用各种类型的操作系统(OS)、计算平台、固件、计算机程序、计算机语言和/或通用机器来实施组件、处理步骤和/或数据结构。所述方法可运行于编程程序在处理线路上运行时。处理线路可采用处理器和操作系统的各种组合或独立装置的形式。
所述处理可实施为由硬件、独立硬件或其任意组合执行的指令。软件可存储于机器可读取的程序存储装置上。
此外,所属领域的技术人员将认识到,在不偏离本文所揭示的发明概念的范畴和精神的情况下,还可以使用具有较小通用特征的装置,例如,硬连线装置、包括现场可编程闸极阵列(FPGA)和复杂可编程逻辑装置(CPLD)的现场可编程逻辑装置(FPLD)、特殊应用集成电路(ASIC)或类似装置。
根据本发明的一个实施例,所述方法可于运行下述操作系统的数据处理计算机如个人计算机、工作站计算机、大型计算机或高性能服务器上实施,例如可从加利福尼亚圣克拉拉的Sun Microsystems,Inc.获得的Solaris、从华盛顿雷蒙德的Microsoft Corporation获得的MicrosoftWindowsXP和Windows2000,或例如可从许多厂商获得的Unix操作系统的各种版本,例如Linux。所述方法还可实施于多处理器系统、或包括用于从处理器传输数据或将数据传输到处理器的多个外围设备(例如,输入装置、输出装置、显示器、指示符、存储器、存储装置、媒体介面等)的计算环境。此外,此一计算机系统或计算环境可局部连网或通过因特网连接。
在本发明的上下文中,术语“网络”包括局域网、广域网、因特网、电缆电视系统、电话系统、无线电信系统、光纤网络、ATM网络、帧中继网络、卫星通信系统等。这些网络在此项技术中已为人所熟知,因而在此将不再描述。
在本发明的上下文中,如果对所有x和y而言h(x,y)=h(y,x),那么散列函数h是可交换的。换句话说,散列函数的结果与自变量阶次无关。
在本发明的上下文中,术语“指纹”被定义为识别或检测位组序列的一个或更多变化的函数的结果。例如,指纹可以包含具有任意位组序列的非交换散列或具有一个或更多位组序列的序列的非交换散列。又例如,指纹可以包含CRC(循环冗余码)、消息摘要等。在Knuth,D.The Art of ComputerProgramming,卷2:Seminumerical Methods,第五章,Addison Wesley,1981中描述了这些函数。
在本发明的上下文中,术语“认证码”被定义为数字签字或使用分组密码的消息认证码(MAC)。举例来说,可使用DES运算法则(FederalInformation Processing Standards Publication 46-3,Data Encryption Standard(DES),1999年10月25日;Federal Information Processing StandardsPublication 197,Advanced Encryption Standard(AES),2001年11月26日)、Rijndael运算法则(J.Daemen和V.Rijmen,AES Proposal:Rijndael,AESAlgorithm Submission,1999年9月3日)或类似运算法则来产生认证码。作为键入的散列函数的结果而产生的认证码是一个认证码实例,它同时也是指纹。
在本发明的上下文中,键入的基于散列的消息认证码(HMAC)被定义为结合散列函数使用密钥的MAC。HMAC既是指纹又是MAC。
在本发明的上下文中,术语“经过认证的指纹”被定义一个成至少部分地基于指纹的认证码。
在本发明的上下文中,术语“认证指纹”被定义为一个用于产生经过认证的指纹的指纹。
在本发明的上下文中,术语“会话期”或“用户会话期”被定义为从当用户将一个例如智能卡或类似物的安全便携式装置插入到一个例如加载终端或卡接收装置(CAD)的通信装置中时开始,到当该安全便携式装置从通信装置移出时结束的时期。“会话期ID”用于描述一个独特地识别这一会话期的识别符。一个或更多会话期ID可以用于独特地识别相同的会话期。
在本发明的上下文中,术语“数据包结构化数据”被定义为使用类似JavaTM的命名约定以参考外部程序单元的可执行码。举例来说,用于外类的JavaTM命名约定包括后面跟有类别名的数据包名称。
在本发明的上下文中,术语“验证APDU”被定义为包含命令和验证数据的APDU。验证数据位于APDU的数据字段(图2的参考数字240)内。
在本发明的上下文中,术语“链接APDU”被定义为包含命令和链接数据的APDU。链接数据位于APDU的数据字段(图2的参考数字240)内。
在本发明的上下文中,术语“程序单元”被定义为程序动作的可识别单元。更高级程序单元可包括一个或多个更低级程序单元。举例来说,一个JavaTM类别可以包括一个或多个方法。
图8描述了适合于实施本发明的各方面的计算机系统800的方块图。如图8中所示,计算机系统800包括一个总线802,其与例如中央处理器804、系统存储器806(通常为RAM)、输入/输出(I/O)控制器808、例如经由显示适配部件812连接的显示屏810、串行端口814和816、键盘818、硬盘驱动器820、用以接收软盘824的软盘驱动器822和用以接收CD-ROM 828的CD-ROM播放器826的外部装置的主要子系统互相连接。可以连接许多其它装置,例如经由串行端口814连接的指示装置830(例如,鼠标)和经由串行端口816连接的调制解调器832。调制解调器823可以经由电话链接提供对服务器的直接连接或经由POP(存在点)提供直接连接对互联网的直接连接。或者,网络接口适配器834可以用于连接(interface)到利用所属领域的技术人员已知的任何网络界面系统的局域网或广域网(例如,Ethernet,xDSL,AppleTalkTM)。
可以以相似方式连接许多其它装置或子系统(未图示)。同样,如下文所讨论,不需要存在图8中所示的所有装置来执行本发明。此外,可以以不同于图8中所示的方式来与这些装置和子系统互相连接。如图8中所示的计算机系统的操作在此项技术中已为已知的,因此在本申请案中不再加以赘述,以简化本文的讨论。实施本发明的代码可以可操作地置于系统存储器806中或存储于例如硬盘820、软盘824或CD-ROM 828的存储媒体上。
卡加载的签字协议
现转向图9,展示了一个说明根据本发明的一个实施例在主计算机与智能卡之间传送程序数据的系统的方块图。系统900包含一个主计算机910、加载终端985和智能卡950。主计算机910包含一个卡外安装程序915,用于扩充包含数据包结构化数据905的CAP文件980,以产生包含数据包结构化数据925、认证指纹940、一个或多个加载终端认证码930和一个或多个目标智能卡认证码935的扩充的CAP文件920。扩充的CAP文件920还可以包含验证CAP文件内容的验证数据945。在源自数据包结构化数据925的逻辑APDU的净荷部分之上计算认证指纹945。下文将参看图13更详细地说明逻辑APDU。如下文更详细地阐释,主计算机910、加载终端985和目标智能卡950用以计算认证指纹的方法的相似性保证了如果APDU净荷保持相同,则不管执行计算的实体如何,都将产生相同的认证指纹。相反,如果APDU净荷在每个实体执行计算之间发生变化,那么将产生不同指纹,发送一净荷变化信号。
根据本发明的一个实施例,一个或多个加载终端认证码930和目标智能卡认证码935至少部分地基于认证指纹940。根据本发明的另一实施例,认证指纹940包含一个键入的基于散列的信息认证码(HMAC)。根据本发明的另一实施例,不考虑逻辑APDU,一个或多个加载终端认证码930和目标智能卡认证码935包含一个在扩充的CAP文件920上计算的数字签字。
根据本发明的实施例,一个逻辑程序单元APDU可以在提供验证信息(验证APDU)和/或链接信息(链接APDU)的一个或多个APDU之后和/或之前。验证数据可嵌于CAP文件中。或者,验证数据可以由加载终端计算得。如果验证数据包括于CAP文件中,那么其可用于计算认证指纹。链接数据还可以由加载终端计算得。链接数据可以基于从卡上获得的数据,从环球网(Web)上获得的数据,在CAP文件的数据或者其任何组合。
仍然参看图9,加载终端985被配置成接收扩充的CAP文件920、从数据包结构化数据925创建一个或多个逻辑APDU、至少部分地基于加载终端认证码930来认证CAP文件、创建包含一选定目标智能卡认证码935和认证指纹940的一个或多个APDU以及传送所述一个或多个APDU到目标智能卡950。
根据本发明的一个实施例,主计算机910传送不具有验证数据的扩充CAP文件。根据本发明的另一实施例,主计算机910传送具有验证数据的扩充CAP文件。
根据本发明的一个实施例,加载终端985接收不具有验证数据的扩充CAP文件920、计算验证数据并创建一个或多个验证APDU。根据本发明的另一实施例,加载终端985接收具有验证数据的扩充CAP文件920并且创建一个或多个验证APDU。根据本发明的另一实施例,加载终端985计算链接数据并且创建一个或多个链接APDU。
根据本发明的一个实施例,智能卡950包含一安全便携式装置,例如启用Java CardTM技术的智能卡或类似物。
根据本发明的一个实施例,智能卡950包含一启用CDMA技术的智能卡。Smart Card Stage I Description,第1.1版,CDMA Development Group-Smart Card Team Document(1996年5月22日)中描述了启用CDMA技术的智能卡。
根据本发明的另一实施例,智能卡950包含一个SIM(subscriber identitvmodule,用户识别模块)卡。术语“SIM卡”指用于GSM(全球移动通信系统)移动电话的智能卡。SIM包括用户的个人密码识别密钥和其它信息,例如电话的当前位置和经常呼叫的号码的地址簿。SIM在1998年发行的Digitalcellular telecommunications system(phase 2+);Specification of the SubscriberIdentity Module-MobileEquipment(SIM-ME)interface,ETSI,GSM 11.11第7.4.0版中有描述。
根据本发明的另一实施例,智能卡950包含一WIM(无线接口模块)。WIM是用于WAP(无线应用协议)电话智能卡。其在2001年7月12的Wireless Identity Module Part:Security,WAP-260-WIM-20010712-a,WirelessApplication Protocol Forum中有描述。
根据本发明的另一实施例,智能卡950包含USIM(通用用户识别模块)。USIM是用于3GPP(第三代合作伙伴计划)移动电话的智能卡。其在3rdGeneration Partnership Project;Technical Specification Terminals;USIM andIC card requirements,第4次发行,3GPP TS 21.111第4.0.0版(2001-03)中加以描述。
根据本发明的另一实施例,智能卡950包含一个UIM(user identitymodule用户识别模块)。UIM是一个用于3GPP计划2(3GPP2)移动电话的智能卡。在当智能卡为可分离时使用术语“R-UIM”。UIM是SIM的超集并且允许基于CDMA(码分多址)的手机用户穿越地理和装置界限漫游。由第三代合作伙伴计划2(3GPP2)发布的并且题为3rd Generation PartnershipProject 2;Removable User Identity Module(R-UIM)for cdma2000 SpreadSpectrum Systems,3GPP2 C.S0023-0,2000年7月9的说明书中描述了R-UIM。
不欲以任何方式来限制以上关于各移动电话技术的说明内容。所属领域的技术人员将认识到可以使用其它使用者装置。
现转向图10,展示了说明根据本发明的一个实施例从主计算机传送程序数据到智能卡的高级流程图。在步骤1020中,准备了扩充CAP文件。扩充CAP文件可以包含数据包结构化数据和在包含数据包结构化数据的APDU数据流上计算得的认证指纹。或者,扩充CAP文件可以包含数据包结构化数据和至少一个至少部分地基于认证指纹的认证码。
根据本发明的一个实施例,在判定用于最优化验证和链接的程序元素(program element)的加载次序(1015)之后,准备扩充CAP文件(1020)。在步骤1020中,可以使用步骤1015中使用的加载次序,以判定在计算认证指纹中的逻辑APDU的次序。在JavaTM环境中,判定用于一个或多个类别的加载次序、类别中的方法或方法中的字段。可至少部分地基于CAP文件中的程序的使用图来排序程序元素。方法的“使用”可以包含(例如)调用所述方法。字段的“使用”可以包含(例如)访问所述字段。还可以至少部分地基于为所述程序而定义的类型映射信息来排序程序元素。下文将参看图14更详细地阐释类型映射。下文中将参看图15A-15C更详细地阐释程序元素的排序。
仍然参看图10,在步骤1025中,将扩充CAP文件传送到加载终端。在步骤1030中,加载终端接收扩充的CAP文件并且初始化applet小应用程序的加载。在步骤1035中,将认证的applet小应用程序代码加载到目标智能卡上。在步骤1040中,初始化applet小应用程序。在步骤1045中,处理从目标智能卡接收的加载的证据,以判定并记录所述加载是否成功。
仍然参看图10,智能卡1050接收来自加载终端的加载请求。在步骤1055中,智能卡处理从加载终端接收的逻辑APDU。处理包括在APDU净荷上计算认证指纹。在步骤1060中,从加载终端接收的初始化数据用于初始化智能卡。在步骤1065中,将加载的证据发送到加载终端。
现转向图11,其展示了说明根据本发明的一个实施例从主计算机传送程序数据到智能卡的低级流程图。图11为图10提供了更多细节。更详细地来说,图11的参考数字1106-1116、1118-1136和1140-1150分别对应于图10的参考数字1020-1025、1030-1045和1050-1065。在步骤1106中,主计算机将CAP文件分解成逻辑数据单元,并且将逻辑数据单元划分成一个或多个APDU。在步骤1108中,如下文中参考图20A和图20B所描述,在APDU数据流上计算认证指纹。在步骤1110中,创建一个或多个加载终端认证码。在步骤1112中,创建一个或多个目标智能卡认证码。在步骤1114中,用认证码、指纹或其两者扩充CAP文件。在步骤1116中,将扩充CAP文件传送到加载终端。
仍然参看图11,在步骤1118中,加载终端接收包括扩充CAP文件、Applet小应用程序ID(AID)或其类似物、初始化指令和初始化数据的加载请求。数据“AID”由国际标准化组织(ISO)标准ISO-IEC 7816-3定义。在步骤1120中,起始Applet小应用程序的加载。起始可以包括将任何认证码和指纹从扩充CAP文件中分离并且获得链接信息。视需要,在步骤1121中,判定用于最优化验证和链接的程序元素的加载次序。如关于图10的参考数字1015所述,可判定程序元素的加载次序。或者,可依据存储于一扩充CAP文件的指示符来判定次序。在步骤1122中,将扩充CAP文件分解成一个或多个逻辑APDU。在步骤1124中,基于加载终端认证码认证扩充CAP文件。在步骤1126中,基于目标智能卡从扩充CAP文件中的目标智能卡认证码中选择一目标认证码。在步骤1128中,将一个或多个逻辑APDU传送到目标智能卡。在步骤1130中,将指纹或基于指纹的认证码发送到智能卡。在步骤1132中,将目标智能卡认证码发送到智能卡。在步骤1134中,将初始化指令和加载数据发送到目标智能卡。在步骤1136中,从目标智能卡接收加载的证据。
根据本发明的实施例,在过程1126、1128和1130之前执行过程1122和1124。然而,可以改变过程1126、1128和1130相互之间的次序。
仍然参看图11,在步骤1140中,目标智能卡从加载终端接收加载请求并且执行加载初始化。加载初始化可以包括接收步骤1130发送的指纹或基于指纹的认证码。在步骤1142中,处理从加载终端接收的逻辑APDU。所述处理包括在逻辑APDU净荷上计算认证指纹。所述处理还可包括接收步骤1130发送的指纹或基于指纹的认证码。在步骤1144中,基于目标智能卡认证码来认证所接收的内容。所述认证可包括接收步骤1130发送的指纹或指纹的认证码。在步骤1146中,如果所接收的指纹和所计算得的指纹相匹配,并且如果所接收的内容经过适当认证,那么将所接收的内容提交到智能卡上的存储器。在步骤1148中,从加载终端接收的初始化数据用于初始化所述卡。在步骤1150中,将加载的证据发送到加载终端。
或者,可以在不使用加载终端认证码和/或目标智能卡认证码的情况下执行图10和图11所说明的过程。使用或不使用认证码的决策可以至少部分地基于对主计算机1100、加载终端1105和/或智能卡1110的信任级别。举例来说,如果加载终端被信任,那么可无需加载终端认证码而执行图10和图11中所说明的过程。因此,如果卡发行者使用其自己的终端来更新卡,那么由于卡发行者可以信任发行者所控制的终端,不需要终端认证码。但是,如果远离卡发行者的销售点处的第三方终端用于更新卡,并且所述卡已为使用者所拥有,因为卡发行者可以对终端具有很少(如果有的话)的控制,那么可能需要终端认证码。相似地,如果信任目标智能卡,那么可无需目标智能卡认证码而执行图10和图11中所说明的过程。
此外,所属领域的技术人员将了解,可使用用于创建终端认证码的其它机制。
根据本发明的一个实施例,主计算机100和加载终端1105包含相同的装置。
主计算机
现转向图12,展示了用于根据本发明的一个实施例,从主计算机的角度从主计算机传送程序数据到加载终端的方法的流程图。图12为图10的参考数字1015-1025和图11的参考数字1106-1116提供了更多细节。在步骤1200中,接收CAP文件。在步骤1205中,将CAP文件分解成一个或多个逻辑APDU。在步骤1210中,在APDU数据流上计算认证指纹。或者,可以在创建逻辑APDU(意即,作为CAP文件分解过程1205的一部分)时计算认证指纹。在步骤1215中,将CAP文件扩充为包括认证指纹,至少部分地基于该认证指纹的至少一个数据认证码或其任何组合。在步骤1220中,将扩充CAP文件传送到加载终端。
现转向图13,展示了说明根据本发明的一个实施例,将CAP文件划分成一个或多个逻辑APDU的方块图。图13为图12的参考数字1205提供了更多细节。将CAP文件1300划分成包含用于CAP文件中的任何数据包的数据包定义数据1305的一个或多个APDU。数据包定义数据可包含一数据包标识符。将数据包内的类别划分成包含用于数据包中的任何类别的类别定义数据1310的一个或多个APDU。类别定义数据可以包含:例如,类别标识符、基类别标识符和一个或多个接口标识符。对一个类别中的任何方法而言,将方法划分成包含方法定义数据1315的一个或多个APDU和包含方法代码数据1320的一个或多个APDU。对一个类别中的任何字段而言,将所述字段划分成包含字段定义数据1325的一个或多个APDU。对静态字段而言,将所述字段划分成包含字段初始化数据1330的一个或多个APDU。
方法定义数据1315可以包含(例如)方法标识符、返回类型标识符、一个或多个参数类型标识符和一个或多个抛弃式(throwable)异常类型标识符。方法代码数据1320可以包含(例如)可执行的字节码。字段定义数据1325可以包含(例如)字段计数和包括于该字段计数中的每个字段的字段类型标识符。字段初始化数据1330可以包含(例如)用于初始化恒定数据的数据。
根据本发明的实施例,包含验证数据的一个或多个APDU与例如数据包、类别或方法等的程序单元相联系。验证信息由主计算机或加载终端在卡外计算,并且加载到卡上以用于在加载时间使用,并且可能用于程序执行期间。在相应的逻辑程序单元APDU之前,将一个或多个验证APDU插入到APDU数据流中。在相应逻辑程序单元APDU之后还可以将一个或多个验证APDU插入到APDU数据流中。在执行期间,验证数据包括用于预知程序动作的信息。验证数据可以包括(例如)原始数据类型信息,例如属于特定数据类型的数值的边界值。验证数据还可以包括程序栈状态信息,例如在相关方法代码的模拟执行期间程序栈上的条目的数据类型。程序栈状态信息还可以包括对类别(复合数据类型)的一个或多个引用。
根据本发明的一个实施例,类别验证APDU补充用于特定类别中的方法的方法验证APDU中的验证数据。举例来说,当执行每方法(per-method)验证时一个特定加载次序导致不完整的验证信息可用性时,可使用这些类别验证APDU。
根据本发明的另一实施例,数据包验证APDU补充用于特定数据包中的类别的类别验证APDU中的验证数据。举例来说,当执行每方法验证时一个特定加载次序导致不完整的验证信息可用性时,可使用这些数据包验证APDU。
类型映射信息
根据本发明的另一实施例,使用一个或多个类型映射来浓缩验证信息。所述一个或多个类型映射是指与特定程序单元相关的成组类型。所述一个或多个类型映射是指在相应代码的模拟执行期间操作数栈上或寄存器堆中的条目的数据类型。类型映射允许使用相对较小的数目的验证最优化,将预定组的类型称为相应代码中所使用的类型。这提供了在程序单元的验证期间需要校验的类型的相对浓缩的表示。这将在下文中参看图14加以更详细的阐释。
现转向图14,展示了说明根据本发明的一个实施例使用程序单元类型映射信息的方法的流程图。在步骤1400中,接收一个程序单元。以JavaTM技术为例,接收方法、类别或数据包。在步骤1405中,判定程序单元所使用的类型。在步骤1410中,创建这些类型的映射。在步骤1415中,将程序单元映射信息用于程序单元的验证信息。根据本发明的一个实施例,使用程序单元类型映射信息以代表程序单元中的所有类型信息。根据本发明的另一实施例,程序单元类型映射信息用于代表程序单元中的类型信息的子集。举例来说,类型映射可以用于代表程序单元中的最常使用的类型。
根据本发明的一个实施例,一个类型映射包含位映射,其中每个位的类型映射代表一个特定的数据类型。举例来说,16位类型映射可以用于代表16个类型。
根据本发明的另一实施例,用于低级程序单元的类型映射信息相对于高级程序单元的类型映射信息是累积的。举例来说,数据包级4位类型映射可以用于代表数据包中的16个最常用的类型。类级4位类型映射可以用于代表类中的16个最常用的类型,由数据包级类型映射代表的16个类型除外。作为另一实例,位映射之数据包级4位类型映射可以用于代表数据包中的4个最常用的类型。位映射之类级4位类型可以用于代表类别中的4个最常用的类型,由数据包级类型映射代表的4个类型除外。
根据本发明的一个实施例,尾部(trailer)APDU表示与程序单元相关联的最后一个APDU。根据本发明的另一实施例,头部APDU领先于与程序单元相关联的一个或多个APDU,并且指定逻辑程序单元APDU要遵循的预期序列。
程序元素次序
图15A至17C说明根据本发明的一个实施例,判定CAP文件中的程序元素的次序。图15A至17C为图10的参考数字1015和图11的参考数字1121提供了更多细节。图15A说明在排序之前的CAP文件。图15B说明图15A的CAP文件中的程序元素的使用图,而且图15C说明至少部分地基于图15B的使用图的原始CAP文件中的程序元素的排序。根据本发明的一个实施例,原始CAP文件是至少部分地基于相应的使用图而进行排序的。将经过排序的文件传送到目标装置。根据本发明的另一个实施例,修改原始CAP文件以包括一个指示CAP文件内容的加载次序的次序指示符。将经过修改的CAP文件传送到目标装置。根据本发明的另一个实施例,将原始CAP文件和指示CAP文件内容的加载次序的次序指示符传送到目标装置。
现转向图16,展示了一个说明根据本发明的一个实施例,对最优化验证的程序单元排序和链接的方法的流程图。在步骤1600中,接收一个程序,包括多个针对例如智能卡等的装置的程序单元。在步骤1605中,获得所述程序的使用图。在步骤1610中,对程序单元排序,以创建一个有序程序。排序是至少部分地基于在步骤1605中所获得的使用图。在步骤1615中,将该有序程序传送到所述装置。
根据本发明的一个实施例,遵循用于排序程序元素的“深度优先”(depth-first)方法。以图15A至图15C为例,方法A.B.C(1540)是主要方法,且其调用方法A.B.A(1542)。方法A.B.A(1542)首先调用方法A.B.B(1544),其次调用方法A.A.B(1546)。方法A.B.B(1544)和方法A.A.B(1546)均不调用其它方法。方法A.B.C(1540)还调用方法A.A.A(1548),随后调用方法A.A.C(1550)。按照图15B的使用图,继续以深度优先、从左到右的方式进行,所得到的次序是:A.B.B(1544)、A.A.B(1546)、A.B.A(1542)、A.A.A(1548)、A.A.C(1550)、A.B.C(1540)。这是在图15C中说明的有序数据包中所反映的次序。
图17A至图17C说明基于使用图判定CAP文件内容的次序,以创建更扁平的有序CAP文件。图17A至图17C与图15A至图15C相似,但是图15C的有序CAP文件1502保持原始CAP文件1500的类别结构,而图17C的有序CAP文件1702已经扁平化而因此并未保持CAP文件1700中的原始类别结构。图17A说明包含数据包结构化数据的CAP文件。图17B说明对应于图17A的CAP文件内的程序的使用图。图17C说明根据本发明的一个实施例,基于图17B的使用图而排序的图17A的CAP文件。
如图17C中所示,首先使用的方法是方法A.B.B 1754。方法A.B.B 1754的使用需要类别A.B数据1724和类别A.B字段1726,因此将此信息置于有序CAP文件1702中的方法A.B.B 1728之前。下一个使用的方法是方法A.A.B 1756。方法A.A.B 1756的使用需要类别A.A数据1730和类别A.A字段1733。因为所需要的类别和字段数据不会较早地出现于有序CAP文件中,所以将所需要的类别和字段数据置于有序CAP文件1702中的方法A.A.B1734之前。随后的方法在有序CAP文件1702中的放置是根据使用次序来进行的,而与方法属于哪一类别无关。在本实例中,不需要再加载其它类别或字段数据,因为用于存在于原始CAP文件1700中的仅两个类别的类别和字段数据已被置于有序CAP文件1702中。
图15A至图17C中所示的程序元素和使用图仅为说明的目的。所属领域的技术人员将了解,使用图可以被用于代表一个程序的其它部分的使用。举例来说,使用图还可以代表字段或其它程序结构的使用。此外,可以以类似于图17C中所示的方式的方式来排序来自不同数据包的程序的部分,其中在所述数据包的任何程序单元之前将用于特定数据包的数据包数据置于所得文件中。同样,所属领域的技术人员将了解,程序元素的许多组合和在这些程序元素之间的调用关系都是可能的。
根据本发明的另一个实施例,任意地排序APDU,而每个APDU包括上下文信息。举例来说,APDU可以包括识别APDU内容的信息,作为第二类别的第四方法。在APDU中包括上下文信息有利于首先加载所有静态数据(所有字段、类别和名称)再加载所有方法,确保在验证和链接中使用的方法所用的信息是首先可用的。
根据本发明的一个实施例,一个主计算机在含有程序数据的扩充CAP文件中插入一个排序指示符。加载终端使用所述排序指示符来判定由于CAP文件分解过程而创建的APDU的排序。根据本发明的一个实施例,排序指示符是至少部分地基于该程序的使用图。举例来说,类型映射信息可以在加载过程中相对较晚地加载,由此最小化所需要的存储器的量。或者,类型映射信息可以在加载过程中相对较早地加载,由此增加当引用所述类型时类型信息将驻留于卡上的可能性。
根据本发明的一个实施例,在一个特定类别的任何相应方法定义APDU1315或方法代码APDU 1320之前处理对应于所述特定类别的一个或多个字段定义APDU 1325和字段初始化APDU 1330。
CAP文件分解
图18和图19是说明根据本发明的实施例,从主计算机的角度将CAP文件分解为逻辑APDU的流程图。图18说明分解不包括验证数据的CAP文件,而图19说明分解包括验证数据的CAP文件。
现转向图18,展示了说明根据本发明的一个实施例,将CAP文件分解成逻辑APDU的方法的流程图。对每个数据包执行在框1800内说明的过程。在步骤1805中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行在框1810内说明的过程。在步骤1815中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤1820中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框1825内说明的过程。在步骤1835中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤1840中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤1830中,创建一个或多个数据初始化APDU。
根据本发明的实施例,可以为程序单元创建验证数据。可为例如数据包、类别、方法或类似物或其组合的程序单元创建验证数据。如前所述,可以在相应的程序单元代码APDU或程序单元定义APDU之前将程序单元的验证数据插入到APDU流中。在一个实施例中,直接在相应的程序单元代码APDU或程序单元定义APDU之前插入验证数据。或者,可以在相应的程序单元代码APDU或程序单元定义APDU之后将程序单元的验证数据插入到APDU流中。在一个实施例中,直接在相应的程序单元代码APDU或程序单元定义APDU之后插入验证数据。这将在下文中参看图19加以更详细地阐释。
现转向图19,展示了一个说明根据本发明的一个实施例,将CAP文件分解成包括含有验证数据的APDU的逻辑APDU的方法的流程图。图19类似于图18,但是图19中包括参考数字1940、1945和1955处所表示的验证数据。对每个数据包执行在框1900内说明的过程。在步骤1905中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行框1910内说明的过程。在步骤1915中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤1920中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框1925内说明的过程。在步骤1930中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤1935中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤1940中,为一个方法创建一个或多个包含方法验证数据的方法验证APDU。在步骤1945中,为一个类别创建一个或多个包含类别验证数据的类别验证APDU。在步骤1950中,创建一个或多个数据初始化APDU。在步骤1955中,为一个数据包创建一个或多个包含数据包验证数据的数据包验证APDU。
根据本发明的实施例,在相应的一个或多个代码或定义APDU之前和/或之后,将一个或多个验证APDU插入APDU流中。以图19为例,可以在插入相应的一个或多个数据包定义APDU(1905)之后,将一个或多个数据包验证APDU插入到APDU流(1955)中。或者,可以在插入相应的一个或多个数据包定义APDU之前,将一个或多个数据包验证APDU插入到APDU流中。类似地,可以在插入相应的一个或多个类别定义APDU(1915)之后将一个或多个类别验证APDU插入到APDU流中(1945)。或者,可以在插入相应的一个或多个类别定义APDU之前,将一个或多个类别验证APDU插入到APDU流中。作为另一个实例,可以在插入相应的一个或多个方法定义APDU(1930)之后,将一个或多个方法验证APDU插入到APDU流中(1940)。或者,可以在插入相应的一个或多个方法定义APDU之前,将一个或多个方法验证APDU插入到APDU流中。在相应的一个或多个代码或定义APDU之前或之后的验证APDU可以包括(例如)一个或多个类型映射。
图20A和图20B是说明根据本发明的实施例,在一个APDU数据流上计算认证指纹的方法的流程图。图20A和图20B为图11的参考数字1108提供了更多细节。图20A说明当验证APDU用于判定认证指纹时,计算一个认证指纹。图20B说明当验证APDU不用于判定认证指纹时,计算一个认证指纹。如下文所述,由图20A和图20B说明的过程与加载终端(图11的参考数字1128和1130)和目标智能卡(图11的参考数字1142)用以计算认证指纹的过程相同。
现转向图20,展示了一个说明根据本发明的实施例,在一个APDU数据流上计算验证指纹的方法的流程图。参看图20A,在步骤2000中,初始化一个认证指纹。在步骤2005中,接收一个逻辑APDU。在步骤2010中,在逻辑APDU净荷上计算指纹。指纹计算使用先前所计算得的指纹的结果。在步骤2015中,作出关于另一逻辑APDU是否留待处理的判定。在步骤2005中,继续对额外APDU的处理。
参看图20B,在步骤2020中,初始化一个认证指纹。在步骤2025中,接收一个逻辑APDU。在步骤2030中,作出关于所述APDU是否为验证APDU的判定。如果所述APDU不是验证APDU,那么在步骤2035中在逻辑APDU净荷上计算指纹。指纹计算利用了先前计算出的指纹的结果。在步骤2040中,作出关于另一个逻辑APDU是否留待处理的判定。在步骤2025中,继续对额外APDU的处理。
加载终端
现转向图21,展示了一个说明根据本发明的一个实施例,从加载终端的角度从主计算机传送程序数据到加载终端的方法的流程图。图21为图10的参考数字1030至1045和图11的参考数字1118至1136提供了额外细节。在步骤2100中,接收一个扩充CAP文件。在步骤2105中,将任何认证码和指纹与扩充CAP文件分离开。在步骤2110中,获得链接信息。所述链接信息包含用以链接方法所需要的信息,例如卡当前可调用的例行程序和如何对它们进行引用。链接信息可以从外部信源(external source)获得。举例来说,加载终端可以通过环球网与具有特定目标智能卡的链接信息的知识的中心库通信。作为从外部源程序获取链接信息的另一实例,加载终端可以从目标智能卡自身获得所述信息。
仍然参看图21,在步骤2115中,扩充CAP文件分解成一个或多个逻辑APDU。在步骤2120中,将一个或多个逻辑APDU传输到智能卡,并在APDU净荷上计算认证指纹。步骤2115与步骤2120中的过程类似于上述由主计算机执行的图12中的过程1205和1210,以及下述由目标智能卡执行的图29中的过程2905和图30中的过程3005。所述过程的相似性确保了如果APDU净荷保持相同,那么不管执行所述计算的实体为何,都创建相同的认证指纹。相反地,如果APDU净荷在每个实体执行计算之间发生改变,将产生不同的指纹,发送一净荷变化信号。
仍然参看图21,当CAP文件视需要包括一个认证指纹时,过程2125适用。如果CAP文件包括一个认证指纹,那么作出关于从步骤2105中的扩充CAP文件提取的指纹是否与在步骤2120中计算得出的指纹相匹配的判定。如果所述指纹匹配,那么在步骤2130中,从CAP文件提取适合特定目标智能卡的目标智能卡认证码。在步骤2135中,将指纹、认证码或这两者发送到目标智能卡。在步骤2140中,执行初始化指令,并且加载所得到的数据。在步骤2145中,从智能卡接收加载证据。根据本发明的一个实施例,加载证据包含存储提交指纹(storage commitment fingerprint)。
如图21中说明,加载终端将扩充CAP文件分解成逻辑APDU(2115),并且接着在将逻辑APDU传输到目标智能卡(2120)时在逻辑APDU净荷上计算一个认证指纹。或者,认证指纹的计算可以与分解过程(2115)交错。作为另一个选择,APDU至目标智能卡的传输和认证指纹的计算两者可以与分解过程(2115)交错。
如前文所述,由加载终端所接收的扩充CAP文件可以包括验证数据。加载终端还可以接收不含验证数据的CAP文件,计算验证数据,创建一个或多个包含数据的APDU,并将所述一个或多个APDU发送到目标智能卡。关于在认证指纹计算中是否包括验证数据的判定是基于由加载终端所接收的CAP文件是否包括验证数据,并且是基于目标智能卡是否需要验证数据。如果所接收的CAP文件包括验证数据,那么认证指纹额外在验证数据上计算。如果所接收的CAP文件不包括验证数据,那么不在验证数据上计算认证指纹,不管加载终端是否产生被发送到目标智能卡的验证数据。
加载终端还可以接收CAP文件,计算链接数据,创建一个或多个包含数据的APDU,并且将所述一个或多个APDU发送到目标智能卡。图22至图27说明根据本发明的实施例,从加载终端的角度将一个扩充CAP文件分解成一个或多个逻辑APDU的方法。图22至图27为图21的参考数字2115提供更多细节。如前文所述,在图22至图27中说明的分解过程之前,待分解的CAP文件的程序元素可以经过排序以用于最优化验证和链接(图11的参考数字1121)。图22说明将一个扩充CAP文件分解成一个或多个逻辑APDU。图23说明将一个包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU的逻辑APDU。图24说明将不包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU的逻辑APDU。图25说明将一个扩充CAP文件分解成一个或多个包括含有链接数据的APDU的逻辑APDU。图26说明将一个包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU和含有链接数据的APDU的逻辑APDU。图27说明将一个不包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU和含有链接数据的APDU的逻辑APDU。
现转向图22,展示了一个说明根据本发明的一个实施例,将扩充CAP文件划分为一个或多个逻辑APDU的方法的流程图。图22类似于图18中所说明的由主计算机执行的过程。对每个数据包执行在框2200内说明的过程。在步骤2205中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行在框2210内说明的过程。在步骤2215中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2220中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框2225内说明的过程。在步骤2230中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2235中,为所述方法创建包含方法代码的一个或多个代码APDU。在步骤2240中,创建一个或多个数据初始化APDU。
现转向图23,展示了一个说明根据本发明的一个实施例,将一个包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU的逻辑APDU的方法的流程图。图23类似于图19中说明的由主计算机执行的过程。对每个数据包执行在框2300内说明的过程。在步骤2305中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行在框2310内说明的过程。在步骤2315中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2320中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框2325内说明的过程。在步骤2330中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2335中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤2340中,为一个方法创建一个或多个包括方法验证数据的方法初始化APDU。在步骤2345中,为一个类别创建一个或多个包含类别验证数据的类别验证APDU。在步骤2350中,创建一个或多个数据初始化APDU。在步骤2355中,为一个数据包创建一个或多个包含数据包验证数据的数据包验证APDU。
现转向图24,展示了一个说明根据本发明的一个实施例,将一个不包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU的逻辑APDU的方法的流程图。图24类似于图23,但是在图24中,计算验证数据(2440、2445、2455),而在图23中,从扩充CAP文件中提取用于创建一个或多个验证APDU(2340、2345、2355)的验证数据。对每个数据包执行在框2400内说明的过程。在步骤2405中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行框2410内说明的过程。在步骤2415中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2420中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框2425内说明的过程。在步骤2430中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2435中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤2440中,计算方法验证数据,并为一个方法创建一个或多个包含方法验证数据的方法验证APDU。在步骤2445中,计算类别验证数据,并为一个类别创建一个或多个包含类别验证数据的类别验证APDU。在步骤2450中,创建一个或多个数据初始化APDU。在步骤2455中,计算数据包验证数据,并为一个数据包创建一个或多个包含数据包验证数据的数据包验证APDU。
现转向图25,其展示了一个说明根据本发明的一个实施例将一个扩充CAP文件分解成一个或多个逻辑APDU的方法的流程图,所述逻辑APDU包括多个含有链接数据的APDU。图25类似于图22,但是在图25中创建了每方法(per-method)链接APDU(2540)。对每个数据包执行框2500内所说明的过程。在步骤2505申,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行框2510内所说明的过程。在步骤2515中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2520中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行框2525内所说明的过程。在步骤2530中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2535中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤2540中,创建每方法链接APDU。在步骤2545中,创建一个或多个数据初始化APDU。
现转向图26,其展示了一个说明根据本发明的一个实施例将一个包括验证数据的扩充CAP文件分解成一个或多个逻辑APDU的方法的流程图,所述逻辑APDU包括含有验证数据的APDU和含有链接数据的APDU。图26代表图23和图25的结合。对每个数据包执行框2600内所说明的过程。在步骤2605中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行框2610内所说明的过程。在步骤2615中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2620中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行框2625内所说明的过程。在步骤2630中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2635中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤2640中,为一个方法创建一个或多个包含方法验证数据的方法验证APDU。在步骤2645中,创建每方法链接APDU。在步骤2650中,为一个类别创建一个或多个包含类别验证数据的类别验证APDU。在步骤2655中,创建一个或多个数据初始化APDU。在步骤2660中,为一个数据包创建一个或多个包含数据包验证数据的数据包验证APDU。
现转向图27,展示了一个说明根据本发明的一个实施例,将一个不包括验证数据的扩充CAP文件分解成一个或多个包括含有验证数据的APDU和含有链接数据的APDU的逻辑APDU的方法的流程图。图27代表图24和图25的结合。对每个数据包执行在框2700内说明的过程。在步骤2705中,为一个数据包创建一个或多个包含数据包定义数据的数据包定义APDU。对每个类别执行框2710内说明的过程。在步骤2715中,为一个类别创建一个或多个包含类别定义数据的类别定义APDU。在步骤2720中,为所述类别创建一个或多个包含字段定义数据的字段定义APDU。对每个方法执行在框2725内说明的过程。在步骤2730中,为一个方法创建一个或多个包含方法定义数据的方法定义APDU。在步骤2735中,为所述方法创建一个或多个包含方法代码的代码APDU。在步骤2740中,计算方法验证数据,并为一个方法创建包含一个或多个方法验证数据的方法验证APDU。在步骤2745中,创建每方法链接APDU。在步骤2750中,计算类别验证数据,并为一个类别创建一个或多个包含类别验证数据的类别验证APDU。在步骤2755中,创建一个或多个数据初始化APDU。在步骤2760中,计算数据包验证数据,并为一个数据包创建一个或多个包含数据包验证数据的数据包验证APDU。
现转向图28,展示了一个说明根据本发明的一个实施例,创建一个或多个方法链接APDU的方法的流程图。图28为图25的参考数字2540、图26的参考数字2645和图27的参考数字2745提供更多细节。在步骤2800中,基于来自卡的信息和逻辑存储器布局计算可验证链接指令。如上文中关于图21的参考数字2110所述,加载终端可以已经预先获得此信息。在步骤2805中,创建包括可验证链接指令的链接APDU。
智能卡
现转向图29,展示了一个说明根据本发明的一个实施例,从智能卡的角度从加载终端传送程序数据到智能卡的方法的流程图。图29为图10的参考数字1050至1065和图11的参考数字1140至1150提供额外的细节。在步骤2900中,执行加载初始化。在步骤2905中,处理一个或多个逻辑APDU,以在其字段中准备数据用于加载。所述处理包含计算一个认证指纹。在步骤2910中,接收一个认证指纹APDU。或者,可以接收认证指纹作为加载初始化(2600)的一部分,或作为处理APDU(2605)的一部分。
仍然参看图29,在步骤2915中,作出关于所接收的认证指纹是否与在步骤2905中计算出的认证指纹相匹配的判定。如果所接收的认证指纹与所计算出的认证指纹不匹配,那么在步骤2945中给出一个故障指示。如果所接收的认证指纹与所计算出的认证指纹相匹配,那么在步骤2920中接收目标智能卡认证码,并在步骤2925中基于目标智能卡认证码执行认证。在步骤2930中,作出关于认证是否成功的判定。如果认证不成功,那么在步骤2945中作出故障指示。如果认证成功,那么在步骤2935中将程序数据提交到智能卡存储器,并在步骤2940中提供加载证据。可以通过使程序数据与在最终存储的程序数据上计算出的存储提交指纹相关联来将程序数据提交到智能卡存储器。根据本发明的一个实施例,加载证据包含存储提交指纹。根据本发明的另一个实施例,加载证据包含一个至少部分地基于存储提交指纹的认证码。
现转向图30,展示了一个说明根据本发明的一个实施例,使用一个HMAC认证指纹从智能卡的角度从加载终端传送程序数据到智能卡的方法的流程图。图30类似于图29,但是图29中的判定2930和2915等同于图30中的判定3015。由于HMAC既是指纹又是信息认证码,所以当所接收的认证指纹与所计算出的认证指纹相匹配时,可将程序数据传送到智能卡存储器。在步骤3000中,执行加载初始化。在步骤3005中,处理一个或多个逻辑APDU,以在其数据字段中准备数据用于加载。所述处理包含计算一个认证指纹。在步骤3010中,接收一个认证指纹APDU。或者,可以接收认证指纹作为加载初始化(2600)的一部分,或作为处理APDU(2605)的一部分。
仍然参看图30,在步骤3015中,作出关于所接收的认证指纹是否与在步骤3005中所计算出的认证指纹相匹配的判定。如果所接收的认证指纹与所计算出的认证指纹不匹配,那么在步骤3030中给出一个故障指示。如果所接收的认证指纹与所计算出的认证指纹相匹配,那么在步骤3020中将程序数据提交到智能卡存储器,并在步骤3025中提供加载证据。可以通过使程序数据与在最终存储的程序数据上计算的存储提交指纹相关联来将程序数据提交到智能卡存储器。根据本发明的一个实施例,加载证据包含存储提交指纹。根据本发明的另一个实施例,加载证据包含一个至少部分地基于存储提交指纹的认证码。
现转向图31,展示了一个说明根据本发明的一个实施例,执行加载初始化的方法的流程图。图31为图29的参考数字2900和图30的参考数字3000提供更多细节。在步骤3100中,接收加载请求。在步骤3105中,认证该请求以判定是否应该进行加载过程。在步骤3110中,作出关于步骤3105中的认证是否成功的判定。如果认证不成功,那么此过程在步骤3130中以失败告终。如果认证成功,那么在步骤3115中基于卡和待加载的程序数据的已知特征,校验加载参数以判定加载是否能够成功。举例来说,如果卡具有少于待加载的程序数据所需要的存储器,那么作出加载将失败的指示。此外,如果待加载的程序数据需要不存在于卡上并且不是待加载的程序数据的一部分的类别,那么作出加载将失败的指示。在步骤3120中,基于过程3115的结果,作出关于加载是否能成功的判定。如果加载能够成功,那么在步骤3125中作出加载准备。例示性准备包括初始化一个或多个认证指纹和一个或多个存储提交指纹。如果加载不能够成功,那么加载过程在步骤3130中以失败告终。
或者,可以交换过程3105和3115的次序,使得在过程3105之前执行过程3115。然而,如果过程3105和3115都失败了,那么加载初始化在步骤3130中以失败告终。
现转向图32,展示了一个说明根据本发明的一个实施例,处理APDU流的方法的流程图。图32为图29的参考数字2905和图30的参考数字3005提供更多细节。在步骤3200中,接收一个逻辑APDU。在步骤3205中,预处理该逻辑APDU。举例而言,如果当前APDU是另一程序单元的第一APDU,那么所述预处理可以包括结束前一程序单元的处理。所述预处理还可以包括(例如)解密。预处理的结果是关于逻辑APDU是否有效的指示。在步骤3210中,作出关于逻辑APDU是否有效的判定。如果逻辑APDU无效,那么在步骤3215中中断加载。如果逻辑APDU有效,那么在步骤3210中计算认证指纹,并在步骤3225中处理接收到的逻辑APDU,以在逻辑APDU数据字段中准备数据用于存储。所述理可以包括(例如)解析对其它程序单元的引用。在步骤3230中,作出关于是否需要所存储的结果的判定。某些APDU可以不需要持久存储。举例来说,仅仅包括关于在先或后继的APDU的信息的APDU可无需持久存储。如果需要所存储的结果,那么在步骤3225中存储结果。在步骤3240中,使用先前计算出的存储提交指纹的结果,在所存储的结果上计算存储提交指纹。
现转向图33,展示了一个说明本发明的一个实施例,计算认证指纹的方法的流程图。图33为图32的参考数字3220提供更多细节。在步骤3300中,作出关于APDU是否为链接APDU的判定。如果APDU不是链接APDU,那么在步骤3305中作出关于APDU是否为验证APDU的判定。如果APDU是验证APDU,那么在步骤3310中作出关于验证APDU是否为验证指纹的一部分的判定。如果APDU不是链接APDU或验证APDU,或如果APDU是验证APDU并且验证APDU是认证指纹的一部分,那么在步骤3315中,使用预先计算出的认证指纹的结果在逻辑APDU净荷上计算认证指纹。
如图32中说明,逻辑APDU的接收(3200)与认证指纹的计算(3220)和存储提交指纹的计算(3240)交错。或者,智能卡可以接收一个或多个逻辑APDU,并接着在一个或多个所接收到的APDU上计算认证指纹和存储提交指纹。
现转向图34,展示了一个说明根据本发明的一个实施例,处理逻辑APDU的方法的流程图。图34为图32的参考数字3225提供了更多细节。在步骤3400中,接受验证信息。在步骤3405中,验证信息用于验证一个逻辑APDU。在步骤3410中,作出关于逻辑APDU是否被成功地验证的判定。如果逻辑APDU被成功验证,则在步骤3415中接受链接信息,并且在步骤3420中,将链接信息用于链接。
虚拟方法跳转表
关于图7所述的数据结构说明与静态方法或具有单一调用地址的方法的链接。例如JavaTM语言的面向对象语言支持虚拟方法,或可能具有多份复制的方法。在JavaTM语言中,可以在一个类别中声明(declare)一个虚拟方法,并且所述类别的一个子类别可以用虚拟方法的其自身的实例覆盖(override)或取代该虚拟方法。所述子类别的一个实例将引用在子类别中被覆盖的方法的版本,而所述类别的实例将引用在所述类别中声明的虚拟方法。
根据本发明的一个实施例,链接虚拟方法的能力是通过为每个关于经过至少一次覆盖的虚拟方法创建一个跳转表来提供。所述跳转表包括一个虚拟方法的每个实例的地址。对象构造函数被重写以接受一个“类型”参数,构造函数调用被重写以提供类型信息,并且虚拟方法程序调用被重写以包括关于所调用的对象的当前类型的指示。当前类型的指示被用作对相应虚拟方法跳转表的索引,其中获得适当虚拟方法代码的地址。下文中将参考图35至图37做更详细的描述。
现转向图35,展示了根据本发明的一个实施例,用于连接包括虚拟方法的程序的数据结构。如图35中所示,子类别N(3505)扩展类别M(3500)并且不覆盖方法A(3525)或B(3530)。子类别O(3510)扩展类别M(3500)并且覆盖方法A(3525)。对方法O.A(3550)的任何调用实际上调用方法O.A(3550),而不是方法M.A(3525)。跳转表3320由类别实例数据中的类型标识符的值索引。跳转表3520的每个条目包括对应于所述索引的虚拟方法实例的地址,因为一个类别中的每个虚拟方法具有至少一个实例。对已经被覆盖的方法M.A(3525)的每次调用包括一个类型指示符。类别指示符被用作跳转表3320中的一个索引,以获得对应于该虚拟方法实例的代码的地址。子类别N(3505)和子类别O(3510)中的调用被重写以用类型指示符进行调用。在将程序加载到智能卡上之前,例如当产生扩充CAP文件时,所述调用可由主计算机或加载终端进行重写。或者,所述调用可以由加载终端进行重写。在已加载程序数据之后,目标智能卡还可以重写所述调用。从所调用的对象3515中的“对象当前类型”字段3345获得类型标识符。
因此,可以通过为每个子类型和每个方法给定一个类型标识符,使适当虚拟方法实例的搜索更确定。通过使用图35中说明的实例,当类别“M”(3500)或类别“N”(3505)对象被实例化时,用值为0的类型标识符来实例化这两个对象。当“O”(3510)对象被实例化时,与所述实例相关联的类型标识符的值是1。当对象“O”(3510)调用虚拟方法时,类型标识符被用作对跳转表3520的索引,以判定调用哪一个虚拟方法实例,由此消除执行对适当虚拟方法实例的穷尽搜索的需要。
现转向图36,展示了说明根据本发明的一个实施例,修改具有链接数据以解析动态引用的存储程序的方块图。图36类似于图7,但是图36包括用于每个具有至少一个虚拟方法实例的虚拟方法的跳转表(3676、3680、3682)之外。参考卡存储器3600,用于方法A1A(3602)、A2A(3612)和B2A(3628)的代码分别包括对虚拟方法A1C(3608)、B1A(3602)和B1D(3626)的调用。参考被修改的卡存储器3650,用于方法A1A(3652)、A2A(3660)和B2A(3674)的代码被修改,以引用与被调用的虚拟方法(3676、3680、3682)相关联的跳转表和被调用的对象的类型指示符。
现转向图37,展示了一个说明根据本发明的一个实施例,修改具有链接数据以解析动态引用的存储程序的流程图。在步骤3700中,接收一个程序。在步骤3705中,列举在所述程序中的类别。对每个类别执行框3710。在步骤3720中,对象构造函数(object constructor)调用被重写,以提供类型信息。在步骤3725中,对象构造函数被重写,以接受一个“类型”参数。对一个类别中的每个虚拟方法执行框3715。在步骤3730中,作出关于虚拟方法是否已经被所述虚拟方法实例覆盖的判定。如果所述虚拟方法已被覆盖,则在步骤3735中,为具有至少一个虚拟方法实例的虚拟方法创建一个虚拟方法跳转表。在步骤3740中,重写对虚拟方法的程序调用,以引用与被调用的虚拟方法相关联的跳转表和被调用的对象的类型指示符。如果所述虚拟方法尚未被覆盖,那么所述虚拟方法可以以与静态方法相同的方式进行链接。
根据本发明的一个实施例,对经过至少一次覆盖的虚拟方法的调用被一个调用指令所取代,其中所述调用指令使用被调用的对象的类型指示符作为对位于带调用指令的指令流内联(inline)中的表的索引。
程序单元存储提交指纹
根据本发明的实施例,一个程序单元存储提交指纹与程序单元相关联。程序单元存储提交指纹可以用于指示程序单元的提交。换句话来说,程序单元存储提交指纹可以用于指示已被最终加载到目标智能卡上的程序单元。程序单元存储提交指纹还可以被用于指示所述程序单元数据是否已被窜改又或者不适合于执行。程序单元存储提交指纹在程序单元数据上计算,并在程序单元被最终存储于永久可变存储器中并准备投入使用时与程序单元相关联。程序单元存储提交指纹可以被存储于与相关程序数据毗邻的存储器区域中。或者,对程序单元提交指纹的引用可以与相关程序数据一起存储。另一选择是,程序单元可以以表格形式存储,其中每个条目包括一个存储单元和相应的指纹。所属领域的技术人员将了解,用于使程序单元与提交指纹相关联的其它技术也是可以的。
在使用程序单元之后,将最初与程序单元相关联的程序单元存储提交指纹与在程序单元数据上计算一个存储提交指纹的结果相比。失配则表示所述程序单元数据已经被窜改又或者不适于执行。
一个程序单元可以包含任何逻辑程序结构。以JavaTM技术为例,一个程序单元可以包含一个数据包、类别、方法或其任何组合。此外,一个程序单元可以被存储于非毗邻的存储器中。
根据本发明的一个实施例,程序单元的“使用”包含执行程序单元。根据本发明的另一实施例,程序单元的“使用”包含至少部分地基于所述程序单元创建另一程序单元的实例。以JavaTM技术为例,程序单元的“使用”可以包含对象实例化(object instantiation)。根据本发明的另一实施例,程序单元的“使用”包含读取程序单元数据。
分级程序单元存储提交指纹
根据本发明的实施例,一个较高级程序单元的存储提交指纹可以至少部分地基于一个较低级程序单元的至少一个存储提交指纹。下文中将就图38加以说明。
现转向图38,展示了一个说明根据本发明的一个实施例的程序单元提交指纹的层次的方块图。参考数字3800至3808代表类别;参考数字3810至3812代表数据包,并且参考数字3814代表包含一个或多个数据包的加载。类别存储提交指纹3818至3826通过计算分别在类别3800至3808中的类级数据上的指纹,和分别在类别3800至3808中的方法存储提交指纹的集合而形成。数据包存储提交指纹3828至3830通过计算分别在类别3810至3812中的类级数据上的指纹,和分别在类别3810至3812中类别存储提交指纹的集合而形成。加载存储提交指纹3816通过计算在加载3814中的数据包存储提交指纹的集合上的指纹而形成。
或者,较高级程序单元的一个或多个存储提交指纹可以基于一个较低级程序单元的数据。以JavaTM技术为例,一个类别存储提交指纹可以基于属于所述类别的方法的类级数据和方法级数据。
现转向图39,展示了一个说明根据本发明的一个实施例的包括程序码和程序单元提交指纹的数据结构的方块图。卡存储器3900包含一个用于一个包含数据包“A”3904和数据包“B”3906的加载单元3902的存储区域。数据包3904和3906分别包含类别3908-3910和3912-3914。类别3908、3910、3912和3914分别包含方法3916-3922、3924-3926、3928-3934和3936-3938。方法存储提交指纹3940-3964分别在方法代码3916-3938上加以计算。类别存储提交指纹3966、3968、3970和3972分别在方法存储提交指纹3940-3946、3948-3950、3954-3960和3962-3964上加以计算。类别存储提交指纹3966、3968、3970和3972还可以在为各类别的一部分的任何字段定义和初始化静态数据上加以计算。数据包存储提交指纹3974和3976分别在类别存储提交指纹3966-3968和3970-3972上加以计算。加载单元存储提交指纹3978在数据包存储提交指纹3974和3976上加以计算。
现转向图40,展示了一个说明根据本发明的一个实施例包括程序码和加载存储提交指纹的数据结构的方块图。图40类似于图39,但是图40不包括类别存储提交指纹或数据包存储提交指纹。加载单元存储提交指纹4042在数据包“A”4004和数据包“B”4006中所存储的方法代码4016-4040上加以计算。
运行时间完整性校验
根据本发明的实施例,程序单元提交指纹用于校验一个程序单元在运行时间下的完整性。图41和图42说明此运行时间完整性校验的一般情况。图43和44说明本发明的使用一个分派机制来执行运行时间完整性校验的实施例。
图41是一个说明用于根据本发明的一个实施例使用程序单元提交指纹来判定是否可使用一个程序单元的流程图。在步骤4100中,接收一程序单元的使用请求。根据本发明的一个实施例,“使用”包含至少部分地基于该程序单元创建一个实例。根据本发明的另一个实施例,“使用”包含执行程序单元代码。根据本发明的另一个实施例,“使用”包含读取程序单元数据。
根据本发明的实施例,一个程序单元可以是一个程序、数据包、类别、方法、实例变量或类别变量。然而,关于JavaTM技术的程序单元的说明不欲以任何方式作为限制性的。所属领域的技术人员将了解,一个程序可以以许多方式加以划分。
仍然参看图41,在步骤4105中,作出关于在当前会话中是否是第一次接收到所述程序单元使用请求的判定。如果在当前会话中所述程序单元使用请求已不是第一次接收,那么在步骤4130中使用已经存储的关于程序单元数据有效性的判定。如果在当前会话中所述程序单元使用请求是第一次被接收到,那么在步骤4135中作出在当前会话中已经使用该程序单元的指示。在步骤4110中,作出关于所存储的程序单元数据是否有效的判定。在步骤4115中,校验此判定的结果。如果所存储的程序单元数据无效,那么在步骤4120中作出一个故障指示。如果所存储的程序单元数据有效,那么在步骤4125中使用所述程序单元。
根据本发明的另一个实施例,接收到程序单元的使用请求时,判定所存储的程序单元的有效性,而不考虑在当前会话期间是否先前接收到同一程序单元的使用请求。
根据本发明的一个实施例,一个指纹装置被配置成用于计算认证指纹、程序存储提交指纹或其两者。根据本发明的另一个实施例,一个指纹装置包含计算存储提交指纹的计算单元。所述计算单元被链接到专用于存储提交数据的存储器。所述计算单元可以与包含所述存储器的存储器装置成为一体。或者,所述计算单元可以是一个与包含所述存储器的存储器装置通信的独立装置。根据本发明的一个实施例,所述计算单元被配置成在检测到一个对存储器的写入操作时自动且增量地计算用于存储器的指纹。
根据本发明的一个实施例,所述计算单元被配置成在使用存储器中的数据之前(例如在检测到对存储器的读取操作时)自动且增量地计算用于存储器的指纹。举例来说,在接收到对存储在由一个存储器范围指定的存储器地址处的数据的读取请求时,所述计算单元在存储在由存储器范围指定的存储器地址处的数据之上计算指纹。
现转向图42,展示了一个说明根据本发明的一个实施例,判定存储程序单元数据是否有效的方法的流程图。图42为图41的参考数字4110提供了更多细节。在步骤4200中,在程序单元数据上计算指纹。在步骤4205中,作出关于计算出的指纹是否与所存储的指纹相匹配的判定。如果计算出的指纹与所存储的指纹不相匹配,那么在步骤4210中作出所存储的程序单元数据无效的指示。如果所计算的指纹与所存储的指纹相匹配,那么在步骤4215中作出所存储的程序单元数据有效的指示。
分派表
在本发明的上下文中,术语“网关分派器”被定义成一个被配置成在调用所述方法之前判定一个被调用的方法的可执行代码是否有效的程序单元。一个网关分派器可以是一个虚拟机的一部分或一个较低级例行程序。
根据本发明的实施例,与被调用的例行程序的链接可以为硬编码的。根据本发明的其它实施例,与一个保护单元相关联的分派表包括由保护单元保护的方法的条目。一个保护单元中的方法的调用程序通过引用保护单元和表中的索引来调用所述方法。在调用所述方法之前,所述参考判定一个被调用的方法的可执行代码是否有效(已经被验证)。如果保护单元分派表已被加载但保护单元尚未被验证,那么一个网关分派器验证保护单元。如果保护单元分派表尚未被加载,那么网关分派器加载分派表并验证保护单元。下文中将参考图43和图44做更详细的阐释。
现转向图43,展示了一个说明根据本发明的一个实施例,被配置成确保一个被调用的方法在执行之前已经被验证的智能卡的方块图。图43说明用于实施先前关于图41的参考数字4125而论述的“使用程序单元”过程的数据结构。根据本发明的一个实施例,在加载时间预先计算一个类别或数据包的入口点。所述入口点触发一个测试来判定被调用的方法是否已经被验证。通过重写含有对所述方法的调用的代码来将调用链接到这些入口点。
如图43中所示,一个保护单元中的每一个可调用的例行程序有一个分派表条目。每一个条目包括一个校验位和一个例行程序地址。一旦被初始化,一个保护单元内的方法或例行程序可以彼此调用。调用保护单元外部的方法是通过一个分派表(4300、4305、4310)来达成这个目的。如果对应于被调用的例行程序的分派表条目的校验位指示一个校验状态,那么分派表条目的例行程序地址用于调用所述例行程序。如果校验位指示一个未校验状态,那么执行对所述代码的验证。在一个非永久可变存储器(例如RAM 4345)中存储分派表(4300、4305、4310)并使值0与一个未验证状态相关联确保了在初始化时所述校验位指示一个未验证状态。换句话来说,确保程序代码的验证是基于会话的,因为在每个会话之后RAM 1345的内容将遭破坏且下一会话将从指示未验证状态的校验位开始。
每个条目具有一个校验位允许所述表是毗邻的;引用一个条目仅需要所述表的基地址和一个偏移量(offset)。此外,每个条目包括一个校验位,因为对应的例行程序可以是待被调用的保护单元内的第一个例行程序。
根据本发明的一个实施例,校验位包含最高有效位,并且方法地址包含分派表条目的最低有效位。如果网关分派器读取指示一个未校验状态的校验位值,那么分派表条目的最低有效位用于调用例行程序。这个机制消除了对用于获取方法地址的第二存储器存取的需要。
根据本发明的另一实施例,每个表具有一个指示所述表是否被有效初始化的每表(per-table)校验位。每个表条目包含一个方法地址。
根据本发明的一个实施例,保护单元是针对每个数据包的。根据本发明的另一个实施例,保护单元是针对每个类别的。根据本发明的另一个实施例,保护单元是针对每个方法的。
根据本发明的另一个实施例,由保护单元保护的程序单元对应于一个存储提交指纹中所包括的程序单元。举例来说,如果存储提交指纹在一个类别中的方法上加以计算,那么保护单元是针对每个类别的。作为另一个实例,如果存储提交指纹在一个数据包中的类别上加以计算,那么保护单元是针对每个数据包的。
下一个基于RAM的分派表的地址以及用于其它加载单元的分派表的当前数目和尺寸是卡能为上文中关于图21的参考数字2110而提及的链接过程提供的信息类型的实例。
根据本发明的实施例,程序代码被重写,以替代对在具有对网关分派器的调用的保护单元外部的例行程序的调用。根据本发明的一个实施例,当创建CAP文件时,在转换时间重写代码。根据本发明的另一实施例,在CAP文件分解时间重写代码。根据本发明的另一个实施例,代码在加载时间或在目标智能卡中的链接时间被重写。
当对保护单元外部的例行程序进行调用时,必须判定是否也校验所调用的区域。网关分派器检查属于被调用的方法的表,以判定其是否可以直接跳至例行程序,或者所调用的例行程序是否必须首先加以验证。在图43中说明的实例中,为0的校验位值用于指示一个未校验状态。在这种情况下,0值可以指示条目已坏。其还可以指示所述条目是有效的但是代码尚未被验证。因此,如果校验位具有一个指示未校验状态的值,那么从例如EEPROM的永久可变存储器获得分派表模板,并且被调用的例行程序得到验证。下文中将参看图44有更详细的展示。
现转向图44,展示了一个说明根据本发明的一个实施例,用于确保被调用的方法在执行之前已经得到验证的方法的流程图。图44假定程序代码已经被重写,使得在保护单元之间的调用已经被对网关分派器的调用所取代。图44还假定指向用于每个条目的实际方法的分派表模板在链接过程中被置于在EEPROM中。图44还假定在复位(reset)或第一次使用分派表中的任何条目时,将分派表模板复制到例如RAM的非永久可变存储器中的预先分配的空间。
在本发明的上下文中,如果使用单元与保护单元不相同,那么保护单元是集合的。举例来说,如果使用单元是方法并且保护单元是方法,那么保护单元不是集合的。但是如果使用单元是方法但是保护单元是类别,那么保护单元是集合的。
仍参看图44,在步骤4400中作出关于调用方法和被调用的方法是否在同一保护单元内的判定。作出这个判定,作为代码重写过程的一部分。如果这两种方法在同一保护单元内,那么在步骤4405中所述调用方法直接调用被调用的方法。如果这两种方法不在同一保护单元内,那么代码重写过程用对网关分派器的调用来替代对被调用的例行程序(B)的调用。如果代码已经以这种方式加以重写,那么在步骤4410中所述调用方法调用网关分派器。在步骤4415中,网关分派器判定与被调用的方法的保护单元相关联的分派表。在步骤4420中,作出关于保护单元是否已经被校验的判定。如果保护单元尚未被校验,那么其在步骤4425中加以校验。在步骤4430中,从例如EEPROM的永久可变存储器中获取对应于保护单元的分派表,并且将其加载到例如RAM的非永久可变存储器中。在步骤4435中,作出关于保护单元是否是集合的判定。如果保护单元是集合的,那么在步骤4440中令保护单元中的校验位指示一个未校验状态。一旦保护单元已经被校验,那么在步骤4445中检验对应于被调用的方法的分派表条目。在步骤4450中,作出关于表条目的校验位是否具有一个指示校验状态的值的判定。如果校验位具有一个指示校验状态的值,那么在步骤4465中通过使用表条目中的地址来调用被调用的方法。如果校验位值指示未校验状态,那么在步骤4455中执行对包含所述方法的保护单元的验证,并且在步骤4460中令保护单元中的方法的校验位指示一个校验状态。在步骤4465中,通过使用表条目中的地址来调用所调用的方法。
对本发明的关于Java CardTM技术的实施例的说明是用于说明的目的而不意欲以任何方式作为限制性的。可以使用包含程序数据的任何程序文件来取代包含结构化程序数据的CAP文件。举例来说,可以使用例如JavaTM档案(JAR)文件的档案文件。此外,可以使用界定协议数据单元的任何通信协议来取代APDU协议。此外,可以使用以JavaTM语言之外的其他语言编写的程序的程序数据。而且,目标装置不必是智能卡。目标装置可以是能接收协议数据单元并且至少部分地基于所接收的数据来执行一个程序的任何装置。
虽然已经展示并描述了本发明的实施例和应用,但受益于本揭示内容,所属领域的技术人员将了解可在不偏离本文的发明概念的情况下,作出比上文所描述的内容更多的修改。因此,本发明仅受限于随附权利要求书的精神范畴。

Claims (75)

1.一种用于将程序数据最优化加载在一装置上的方法,所述方法包含:
接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中每一个主程序单元的母节点;
排序所述程序内的所述至少一个程序单元以创建一个有序程序,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
存储所述有序程序。
2.根据权利要求1所述的方法,其进一步包含将所述有序程序传送到所述装置。
3.根据权利要求1所述的方法,其中所述装置包含一智能卡。
4.根据权利要求1所述的方法,其中所述使用包含执行所述至少一个程序单元。
5.根据权利要求1所述的方法,其中所述使用包含实例化所述至少一个程序单元。
6.根据权利要求1所述的方法,其中所述使用包含读取所述至少一个程序单元。
7.根据权利要求1所述的方法,其中所述程序包含一JavaTM程序。
8.根据权利要求7所述的方法,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
9.一种用于将程序数据最优化加载在一装置上的方法,所述方法包含:
用于接收一包含至少一个程序单元的程序的步骤,所述至少一个程序单元包括至少一个主程序单元;
用于获得所述程序的一使用图的步骤,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
用于排序所述程序内的所述至少一个程序单元以创建一有序程序的步骤,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
用于存储所述有序程序的步骤。
10.根据权利要求9所述的方法,其进一步包含将所述有序程序传送到所述装置的步骤。
11.根据权利要求9所述的方法,其中所述装置包含一智能卡。
12.根据权利要求9所述的方法,其中所述使用包含执行所述至少一个程序单元。
13.根据权利要求9所述的方法,其中所述使用包含实例化所述至少一个程序单元。
14.根据权利要求9所述的方法,其中所述使用包含读取所述至少一个程序单元。
15.根据权利要求9所述的方法,其中所述程序包含一JavaTM程序。
16.根据权利要求15所述的方法,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
17.一种机器可读取的程序存储装置,其包含(embody)一个可由所述机器执行的指令程序以执行一用于接收一包含至少一个程序单元的程序的方法,所述至少一个程序单元包括至少一个主程序单元,所述方法包含:
接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
排序所述程序内的所述至少一个程序单元以创建一有序程序,所述排序是至少部分地基于所述使用图的一深度优先遍历;和
存储所述有序程序。
18.根据权利要求17所述的程序存储装置,所述方法进一步包含将所述有序程序传送到所述装置。
19.根据权利要求17所述的程序存储装置,其中所述装置包含一智能卡。
20.根据权利要求17所述的程序存储装置,其中所述使用包含执行所述至少一个程序单元。
21.根据权利要求17所述的程序存储装置,其中所述使用包含实例化所述至少一个程序单元。
22.根据权利要求17所述的方法,其中所述使用包含读取所述至少一个程序单元。
23.根据权利要求17所述的方法,其中所述程序包含一JavaTM程序。
24.根据权利要求23所述的方法,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
25.一种用于将程序数据最优化加载在一装置上的设备,所述设备包含:用于接收一包含至少一个程序单元的程序的构件,所述至少一个程序单元包括至少一个主程序单元;
用于获得所述程序的一使用图的构件,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
用于排序所述程序内的所述至少一个程序单元以创建一有序程序的构件,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和用于存储所述有序程序的构件。
26.根据权利要求25所述的设备,进一步包含用于将所述有序程序传送到所述装置的构件。
27.根据权利要求25所述的设备,其中所述装置包含一智能卡。
28.根据权利要求25所述的设备,其中所述使用包含执行所述至少一个程序单元。
29.根据权利要求25所述的设备,其中所述使用包含实例化所述至少一个程序单元。
30.根据权利要求25所述的设备,其中所述使用包含读取所述至少一个程序单元。
31.根据权利要求25所述的设备,其中所述程序包含一JavaTM程序。
32.根据权利要求31所述的设备,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
33.一种用于将程序数据最优化加载在一装置上的设备,所述设备包含:
一存储器,其用于存储所述程序数据;和
一卡外安装程序,其经配置以:
接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
排序所述程序内的所述至少一个程序单元以创建一有序程序,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
存储所述有序程序。
34.根据权利要求33所述的设备,其中所述卡外安装程序经进一步配置以将所述有序程序传送到所述装置。
35.根据权利要求33所述的设备,其中所述装置包含一智能卡。
36.根据权利要求33所述的设备,其中所述使用包含执行所述至少一个程序单元。
37.根据权利要求33所述的设备,其中所述使用包含实例化所述至少一个程序单元。
38.根据权利要求33所述的设备,其中所述使用包含读取所述至少一个程序单元。
39.根据权利要求33所述的设备,其中所述程序包含一JavaTM程序。
40.根据权利要求39所述的设备,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
41.一种用于将程序数据最优化加载在一装置上的方法,所述方法包含:接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
判定所述程序内的所述至少一个程序单元的一排序,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
将所述程序和所述排序传送到所述装置。
42.根据权利要求41所述的方法,其中所述装置包含一智能卡。
43.根据权利要求41所述的方法,其中所述使用包含执行所述至少一个程序单元。
44.根据权利要求41所述的方法,其中所述使用包含实例化所述至少一个程序单元。
45.根据权利要求41所述的方法,其中所述使用包含读取所述至少一个程序单元。
46.根据权利要求41所述的方法,其中所述程序包含一JavaTM程序。
47.根据权利要求46所述的设备,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
48.一种用于将程序数据最优化加载在一装置上的方法,所述方法包含:
用于接收一包含至少一个程序单元的程序的步骤,其中所述至少一个程序单元包括至少一个主程序单元;
用于获得所述程序的一使用图的步骤,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
用于判定所述程序内的所述至少一个程序单元的一排序的步骤,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
用于将所述程序和所述排序传送到所述装置的步骤。
49.根据权利要求48所述的方法,其中所述装置包含一智能卡。
50.根据权利要求48所述的方法,其中所述使用包含执行所述至少一个程序单元。
51.根据权利要求48所述的方法,其中所述使用包含实例化所述至少一个程序单元。
52.根据权利要求48所述的方法,其中所述使用包含读取所述至少一个程序单元。
53.根据权利要求48所述的方法,其中所述程序包含一JavaTM程序。
54.根据权利要求53所述的方法,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
55.一种机器可读取的程序存储装置,其包含(embody)一可由所述机器执行的指令的程序以执行一用于接收一包含至少一个程序单元的程序的方法,所述至少一个程序单元包括至少一个主程序单元,所述方法包含:
接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
判定所述程序内的所述至少一个程序单元的一排序,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
将所述程序和所述排序传送到所述装置。
56.根据权利要求55所述的程序存储装置,其中所述装置包含一智能卡。
57.根据权利要求55所述的程序存储装置,其中所述使用包含执行所述至少一个程序单元。
58.根据权利要求55所述的程序存储装置,其中所述使用包含实例化所述至少一个程序单元。
59.根据权利要求55所述的程序存储装置,其中所述使用包含读取所述至少一个程序单元。
60.根据权利要求55所述的程序存储装置,其中所述程序包含一JavaTM程序。
61.根据权利要求60所述的程序存储装置,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
62.一种用于将程序数据最优化加载在一装置上的设备,所述设备包含:
用于接收一包含至少一个程序单元的程序的构件,所述至少一个程序单元包括至少一个主程序单元;
用于获得所述程序的一使用图的构件,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述程序包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
用于判定所述程序内的所述至少一个程序单元的一排序的构件,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
用于将所述程序和所述排序传送到所述装置的构件。
63.根据权利要求62所述的设备,其中所述装置包含一智能卡。
64.根据权利要求62所述的设备,其中所述使用包含执行所述至少一个程序单元。
65.根据权利要求62所述的设备,其中所述使用包含实例化所述至少一个程序单元。
66.根据权利要求62所述的设备,其中所述使用包含读取所述至少一个程序单元。
67.根据权利要求62所述的设备,其中所述程序包含一JavaTM程序。
68.根据权利要求67所述的设备,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
69.一种用于将程序数据最优化加载在一装置上的设备,所述设备包含:
一存储器,其用于存储所述程序数据;和
一卡外安装程序,其经配置以:
接收一包含至少一个程序单元的程序,所述至少一个程序单元包括至少一个主程序单元;
获得所述程序的一使用图,所述使用图包含复数个节点,每个节点代表所述至少一个程序单元中的一个程序单元,如果所述程序包含一个主程序单元,那么所述复数个节点进一步包含一代表一主程序单元的根节点,如果所述数据包含复数个主程序单元,那么所述根节点代表一用于复数个主程序单元中的每一个主程序单元的母节点;
判定所述程序内的所述至少一个程序单元的一排序,所述排序是至少部分地基于对所述使用图的一深度优先遍历;和
将所述程序和所述排序传送到所述装置。
70.根据权利要求69所述的设备,其中所述装置包含一智能卡。
71.根据权利要求69所述的设备,其中所述使用包含执行所述至少一个程序单元。
72.根据权利要求69所述的设备,其中所述使用包含实例化所述至少一个程序单元。
73.根据权利要求69所述的设备,其中所述使用包含读取所述至少一个程序单元。
74.根据权利要求69所述的设备,其中所述程序包含一JavaTM程序。
75.根据权利要求74所述的设备,其中所述至少一个程序单元包含数据包、类别、方法、实例变量和类别变量中的两者或更多者。
CN200480006697.8A 2003-01-16 2004-01-14 用于加载到一装置上的程序数据的排序 Expired - Lifetime CN1759376B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/346,586 US7272830B2 (en) 2003-01-16 2003-01-16 Ordering program data for loading on a device
US10/346,586 2003-01-16
PCT/US2004/001055 WO2004066072A2 (en) 2003-01-16 2004-01-14 Ordering program data for loading on a device

Publications (2)

Publication Number Publication Date
CN1759376A true CN1759376A (zh) 2006-04-12
CN1759376B CN1759376B (zh) 2010-05-12

Family

ID=32712184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200480006697.8A Expired - Lifetime CN1759376B (zh) 2003-01-16 2004-01-14 用于加载到一装置上的程序数据的排序

Country Status (5)

Country Link
US (1) US7272830B2 (zh)
EP (1) EP1588258A2 (zh)
JP (1) JP2006518499A (zh)
CN (1) CN1759376B (zh)
WO (1) WO2004066072A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592033A (zh) * 2014-12-30 2016-05-18 中国银联股份有限公司 可信服务管理系统和方法

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305700B2 (en) 2002-01-08 2007-12-04 Seven Networks, Inc. Secure transport for mobile communication network
US7917468B2 (en) 2005-08-01 2011-03-29 Seven Networks, Inc. Linking of personal information management data
US7853563B2 (en) 2005-08-01 2010-12-14 Seven Networks, Inc. Universal data aggregation
US8468126B2 (en) 2005-08-01 2013-06-18 Seven Networks, Inc. Publishing data in an information community
US8010082B2 (en) 2004-10-20 2011-08-30 Seven Networks, Inc. Flexible billing architecture
US7441271B2 (en) 2004-10-20 2008-10-21 Seven Networks Method and apparatus for intercepting events in a communication system
US7706781B2 (en) 2004-11-22 2010-04-27 Seven Networks International Oy Data security in a mobile e-mail service
FI117152B (fi) 2004-12-03 2006-06-30 Seven Networks Internat Oy Sähköpostiasetusten käyttöönotto matkaviestimelle
US7877703B1 (en) 2005-03-14 2011-01-25 Seven Networks, Inc. Intelligent rendering of information in a limited display environment
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US7796742B1 (en) 2005-04-21 2010-09-14 Seven Networks, Inc. Systems and methods for simplified provisioning
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US7895603B1 (en) * 2005-07-20 2011-02-22 Oracle America, Inc. Mechanism for enabling virtual method dispatch structures to be created on an as-needed basis
US8069166B2 (en) 2005-08-01 2011-11-29 Seven Networks, Inc. Managing user-to-user contact with inferred presence information
JP4815938B2 (ja) * 2005-08-16 2011-11-16 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP4871598B2 (ja) * 2006-01-19 2012-02-08 キヤノン株式会社 画像処理装置および画像処理装置の起動方法およびプログラム
US7769395B2 (en) 2006-06-20 2010-08-03 Seven Networks, Inc. Location-based operations and messaging
US8239878B2 (en) * 2007-05-31 2012-08-07 Red Hat, Inc. Verification of loadable objects
US8693494B2 (en) 2007-06-01 2014-04-08 Seven Networks, Inc. Polling
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8364181B2 (en) 2007-12-10 2013-01-29 Seven Networks, Inc. Electronic-mail filtering for mobile devices
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8793305B2 (en) 2007-12-13 2014-07-29 Seven Networks, Inc. Content delivery to a mobile device from a content service
US8107921B2 (en) 2008-01-11 2012-01-31 Seven Networks, Inc. Mobile virtual network operator
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US8078158B2 (en) 2008-06-26 2011-12-13 Seven Networks, Inc. Provisioning applications for a mobile device
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US9043731B2 (en) 2010-03-30 2015-05-26 Seven Networks, Inc. 3D mobile user interface with configurable workspace management
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US9077630B2 (en) 2010-07-26 2015-07-07 Seven Networks, Inc. Distributed implementation of dynamic wireless traffic policy
JP5676762B2 (ja) 2010-07-26 2015-02-25 セブン ネットワークス インコーポレイテッド モバイルアプリケーショントラフィック最適化
WO2012061430A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
US8204953B2 (en) 2010-11-01 2012-06-19 Seven Networks, Inc. Distributed system for cache defeat detection and caching of content addressed by identifiers intended to defeat cache
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
WO2012060996A2 (en) 2010-11-01 2012-05-10 Michael Luna Caching adapted for mobile application behavior and network conditions
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US9330196B2 (en) 2010-11-01 2016-05-03 Seven Networks, Llc Wireless traffic management system cache optimization using http headers
US8166164B1 (en) 2010-11-01 2012-04-24 Seven Networks, Inc. Application and network-based long poll request detection and cacheability assessment therefor
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
CN103404193B (zh) 2010-11-22 2018-06-05 七网络有限责任公司 调校数据传输以优化为通过无线网络的传输建立的连接
EP2636268B1 (en) 2010-11-22 2019-02-27 Seven Networks, LLC Optimization of resource polling intervals to satisfy mobile device requests
EP2661697B1 (en) 2011-01-07 2018-11-21 Seven Networks, LLC System and method for reduction of mobile network traffic used for domain name system (dns) queries
US9084105B2 (en) 2011-04-19 2015-07-14 Seven Networks, Inc. Device resources sharing for network resource conservation
EP2621144B1 (en) 2011-04-27 2014-06-25 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
EP2702500B1 (en) 2011-04-27 2017-07-19 Seven Networks, LLC Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US9239800B2 (en) 2011-07-27 2016-01-19 Seven Networks, Llc Automatic generation and distribution of policy information regarding malicious mobile traffic in a wireless network
CN102521626B (zh) * 2011-11-30 2014-12-24 北京握奇数据系统有限公司 一种智能卡的多应用管理方法和系统
WO2013086214A1 (en) 2011-12-06 2013-06-13 Seven Networks, Inc. A system of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US8918503B2 (en) 2011-12-06 2014-12-23 Seven Networks, Inc. Optimization of mobile traffic directed to private networks and operator configurability thereof
EP2788889A4 (en) 2011-12-07 2015-08-12 Seven Networks Inc FLEXIBLE AND DYNAMIC INTEGRATION SCHEMES OF A TRAFFIC MANAGEMENT SYSTEM WITH VARIOUS NETWORK OPERATORS TO REDUCE NETWORK TRAFFIC
WO2013086447A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
WO2013090212A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system
WO2013090834A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic
US8861354B2 (en) 2011-12-14 2014-10-14 Seven Networks, Inc. Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization
EP2801236A4 (en) 2012-01-05 2015-10-21 Seven Networks Inc DETECTION AND MANAGEMENT OF USER INTERACTIONS WITH FRONT PANEL APPLICATIONS ON A MOBILE DEVICE IN DISTRIBUTED CACHE STORES
US9203864B2 (en) 2012-02-02 2015-12-01 Seven Networks, Llc Dynamic categorization of applications for network access in a mobile network
WO2013116852A1 (en) 2012-02-03 2013-08-08 Seven Networks, Inc. User as an end point for profiling and optimizing the delivery of content and data in a wireless network
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
WO2013155208A1 (en) 2012-04-10 2013-10-17 Seven Networks, Inc. Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network
WO2014011216A1 (en) 2012-07-13 2014-01-16 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9241314B2 (en) 2013-01-23 2016-01-19 Seven Networks, Llc Mobile device with application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
USD732371S1 (en) * 2014-04-17 2015-06-23 Kwikset Corporation Padlock jacket
US9495138B1 (en) * 2016-01-04 2016-11-15 International Business Machines Corporation Scheme for verifying the effects of program optimizations
CN108334368B (zh) * 2017-09-04 2021-06-08 祖龙(天津)科技股份有限公司 一种基于Unity引擎的更新文件打包方法及打包工具
US11036705B2 (en) 2019-02-27 2021-06-15 International Business Machines Corporation Traversal of dispersed lockless concurrent index nodes
US11016889B1 (en) 2019-12-13 2021-05-25 Seagate Technology Llc Storage device with enhanced time to ready performance

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421016A (en) * 1991-12-12 1995-05-30 International Business Machines Corporation System and method for dynamically invoking object methods from an application designed for static method invocation
US6131159A (en) * 1992-05-08 2000-10-10 Paradyne Corporation System for downloading programs
EP0666550B1 (en) * 1994-02-08 1997-05-02 Belle Gate Investment B.V. Data exchange system comprising portable data processing units
US6006033A (en) * 1994-08-15 1999-12-21 International Business Machines Corporation Method and system for reordering the instructions of a computer program to optimize its execution
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US6948070B1 (en) * 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5764991A (en) 1995-06-30 1998-06-09 Canon Kabushiki Kaisha Processing object oriented code and virtual function code
PT757336E (pt) * 1995-08-04 2001-04-30 Belle Gate Invest B V Sistema de intercambio de dados que inclui unidades portateis de processamento de dados
US5721781A (en) * 1995-09-13 1998-02-24 Microsoft Corporation Authentication system and method for smart card transactions
US5812662A (en) * 1995-12-18 1998-09-22 United Microelectronics Corporation Method and apparatus to protect computer software
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
US5889999A (en) * 1996-05-15 1999-03-30 Motorola, Inc. Method and apparatus for sequencing computer instruction execution in a data processing system
WO1997045817A1 (en) 1996-05-24 1997-12-04 Eduard Karel De Jong System with and method of cryptographically protecting communications
US5781723A (en) * 1996-06-03 1998-07-14 Microsoft Corporation System and method for self-identifying a portable information device to a computing unit
US5761513A (en) * 1996-07-01 1998-06-02 Sun Microsystems, Inc. System and method for exception handling in dynamically linked programs
US6463581B1 (en) * 1996-10-03 2002-10-08 International Business Machines Corporation Method for determining reachable methods in object-oriented applications that use class libraries
CN1183449C (zh) 1996-10-25 2005-01-05 施卢默格系统公司 用微控制器使用高级程序设计语言
US6202060B1 (en) * 1996-10-29 2001-03-13 Bao Q. Tran Data management system
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6081800A (en) * 1997-02-28 2000-06-27 Oracle Corporation Creating bitmaps from multi-level identifiers
US6141681A (en) * 1997-03-07 2000-10-31 Advanced Micro Devices, Inc. Method of and apparatus for transferring and interpreting a data package
US5950009A (en) * 1997-03-10 1999-09-07 International Business Machines Coporation Method and apparatus for profile-based reordering of program portions in a computer program
US6005942A (en) * 1997-03-24 1999-12-21 Visa International Service Association System and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US5910988A (en) * 1997-08-27 1999-06-08 Csp Holdings, Inc. Remote image capture with centralized processing and storage
US6314562B1 (en) * 1997-09-12 2001-11-06 Microsoft Corporation Method and system for anticipatory optimization of computer programs
US6233733B1 (en) * 1997-09-30 2001-05-15 Sun Microsystems, Inc. Method for generating a Java bytecode data flow graph
US5991774A (en) * 1997-12-22 1999-11-23 Schneider Automation Inc. Method for identifying the validity of an executable file description by appending the checksum and the version ID of the file to an end thereof
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6332218B1 (en) 1998-06-30 2001-12-18 Sun Microsystems, Inc. System and method for automatically instantiating classes in a virtual machine
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
GB2341249A (en) 1998-08-17 2000-03-08 Connected Place Limited A method of generating a difference file defining differences between an updated file and a base file
US6161217A (en) * 1998-09-14 2000-12-12 Sun Microsystems, Inc. Accurate method for inlining virtual calls
US6223340B1 (en) * 1998-10-09 2001-04-24 Sun Microsystems, Inc. Method for directly inlining virtual calls without on-stack replacement
EP1125262A1 (en) * 1998-10-27 2001-08-22 Visa International Service Association Delegated management of smart card applications
EP1129417A4 (en) * 1998-12-04 2004-06-30 Technology Enabling Company Ll DATA ORGANIZATION SYSTEMS AND METHODS
US6272674B1 (en) 1998-12-14 2001-08-07 Nortel Networks Limited Method and apparatus for loading a Java application program
EP1022638A3 (en) 1999-01-12 2001-05-02 International Business Machines Corporation Method and system for securely handling information between two information processing devices
US6961664B2 (en) * 1999-01-19 2005-11-01 Maxygen Methods of populating data structures for use in evolutionary simulations
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US20010037454A1 (en) 2000-05-01 2001-11-01 Botti John T. Computer networked system and method of digital file management and authentication
US6526571B1 (en) * 1999-03-16 2003-02-25 International Business Machines Corporation Method for identifying calls in java packages whose targets are guaranteed to belong to the same package
FI114434B (fi) * 1999-05-11 2004-10-15 Nokia Corp Viestintälaitteet
US6487714B1 (en) * 1999-05-24 2002-11-26 International Business Machines Corporation Mechanism for dynamic selection of an object's method
US6507946B2 (en) * 1999-06-11 2003-01-14 International Business Machines Corporation Process and system for Java virtual method invocation
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6981212B1 (en) * 1999-09-30 2005-12-27 International Business Machines Corporation Extensible markup language (XML) server pages having custom document object model (DOM) tags
US6792536B1 (en) * 1999-10-20 2004-09-14 Timecertain Llc Smart card system and methods for proving dates in digital files
US6595856B1 (en) 2000-01-04 2003-07-22 Sigma Game, Inc. Electronic security technique for gaming software
US6643652B2 (en) * 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US6974437B2 (en) * 2000-01-21 2005-12-13 Medtronic Minimed, Inc. Microprocessor controlled ambulatory medical apparatus with hand held communication device
FR2805059A1 (fr) * 2000-02-10 2001-08-17 Bull Cp8 Procede de chargement d'une piece de logiciel dans une carte a puce, notamment du type dit "applet"
US6895581B1 (en) * 2000-03-30 2005-05-17 Microsoft Corporation Replaceable classes and virtual constructors for object-oriented programming languages
FR2809200B1 (fr) * 2000-05-17 2003-01-24 Bull Cp8 Procede de securisation d'un langage du type a donnees typees, notamment dans un systeme embarque et systeme embarque de mise en oeuvre du procede
US6880086B2 (en) 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
US7587368B2 (en) * 2000-07-06 2009-09-08 David Paul Felsher Information record infrastructure, system and method
US20030028811A1 (en) * 2000-07-12 2003-02-06 Walker John David Method, apparatus and system for authenticating fingerprints, and communicating and processing commands and information based on the fingerprint authentication
JP3707727B2 (ja) * 2000-10-30 2005-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US7506175B2 (en) * 2000-11-06 2009-03-17 International Business Machines Corporation File language verification
US6807561B2 (en) * 2000-12-21 2004-10-19 Gemplus Generic communication filters for distributed applications
US20020147918A1 (en) * 2001-04-05 2002-10-10 Osthoff Harro R. System and method for securing information in memory
US7263597B2 (en) 2001-04-19 2007-08-28 Ciena Corporation Network device including dedicated resources control plane
US6836884B1 (en) * 2001-06-04 2004-12-28 Microsoft Corporation Method and system for editing software programs
US7844055B2 (en) 2001-06-26 2010-11-30 Link Us All, Llc Detecting and transporting dynamic presence information over a wireless and wireline communications network
US6828960B2 (en) * 2001-09-28 2004-12-07 Hewlett-Packard Development Company, L.P. Electronic writing instrument with fingerprint scanner
US20030095690A1 (en) * 2001-11-16 2003-05-22 Acer Inc. Wireless fingerprint identity apparatus and method
US6865659B2 (en) * 2002-06-07 2005-03-08 Sun Microsystems, Inc. Using short references to access program elements in a large address space
US20040083469A1 (en) * 2002-10-23 2004-04-29 Ping-Sheng Chen Method for updating firmware of optical disk system
US20040088562A1 (en) * 2002-10-31 2004-05-06 Schlumberger Malco, Inc. Authentication framework for smart cards

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105592033A (zh) * 2014-12-30 2016-05-18 中国银联股份有限公司 可信服务管理系统和方法
CN105592033B (zh) * 2014-12-30 2018-12-25 中国银联股份有限公司 可信服务管理系统和方法

Also Published As

Publication number Publication date
US20040143831A1 (en) 2004-07-22
CN1759376B (zh) 2010-05-12
EP1588258A2 (en) 2005-10-26
WO2004066072A3 (en) 2005-03-24
WO2004066072A2 (en) 2004-08-05
JP2006518499A (ja) 2006-08-10
US7272830B2 (en) 2007-09-18

Similar Documents

Publication Publication Date Title
CN1759376A (zh) 用于加载到一装置上的程序数据的排序
CN1154071C (zh) 数据处理单元及包括该数据处理单元的数据交换系统
CN1266560C (zh) 数据通信网络中增强的身份识别质量的方法和装置
CN1159669C (zh) 卡式记录媒体和其存取控制方法
CN1130629C (zh) 带管理一个虚拟存储器装置的芯片卡及相应的通信方法
CN1682513A (zh) 用于数字内容存取控制的系统
CN1783019A (zh) 用于创建web服务并与其交互的接口基础结构
CN1271448A (zh) 用于安全通信系统的便携式电子装置以及参量初始化的方法
CN1776704A (zh) 安全系统、认证服务器、认证方法和程序
CN1682488A (zh) 在电子装置上装载数据
CN1386385A (zh) 在具体使用gsm标准的移动电话网络上处理和发送数字数据的方法和嵌入式微芯片系统
CN1873652A (zh) 保护数字内容的装置和方法,处理受保护的数字内容的装置和方法
CN1269084C (zh) 从智能卡配置应用程序的方法和系统
CN1866260A (zh) 向用户可操作设备提供程序的方法和系统
CN1370294A (zh) 管理协议、验证和转换下载程序片断的方法及对应的系统
CN1208193A (zh) 信息处理设备和方法及记录载体
US8473417B2 (en) Signing program data payload sequence in program loading
CN1820260A (zh) 信息管理设备和信息管理方法
WO2004066129A2 (en) System for communicating program data between a first device and a second device
CN1577300A (zh) 信息处理器和信息处理终端
CN1848734A (zh) 通信系统,通信设备,以及通信方法
CN1766777A (zh) 数据处理装置
CN1231838C (zh) 用于一种嵌入式系统的代码变换器的检验方法
EP1584017A2 (en) Run time code integrity checks
US7165246B2 (en) Optimized representation of data type information in program verification

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20100512