一种智能卡应用的实现方法及系统的制作方法

文档序号:6443283阅读:369来源:国知局
专利名称:一种智能卡应用的实现方法及系统的制作方法
技术领域
本发明涉及智能卡虚拟机技术领域,特别涉及一种智能卡应用的实现方法及系统。
背景技术
智能卡(Smart Card)业界还没有标准的高级应用接口,应用开发者需要处理很低级的通信协议、存储管理,和其它由专门的智能卡硬件所要求的琐碎问题。当今流行中的大多数智能卡应用都是从头开发的定制应用,这是一个很费时间的过程;通常要把一个产品推向市场得化一两年的时间。要把软件升级或把应用移植到不同的平台上就特别困难,甚至不可能。因为所开发的智能卡应用只能在专用平台上运行,所以来自于不同服务提供者的应用不能在一张卡片上并存和运行。缺乏互操作性和有限的卡片功能妨碍了智能卡应用的更加广泛的推广。而虚拟机的出现就是解决智能卡这一问题的有效手段,通过虚拟机屏蔽掉底层平台的不同,方便了应用在不同平台间移植使用,且达到上层应用开发的简化。JavaCard技术是智能卡上虚拟机的典型应用。在智能卡硬件平台上,通过构建一个硬件或软件系统,以支持Java语言下载、运行。Java智能卡继承了 Java技术的平台无关性,将硬件和软件分离, 简化了应用程序开发,提高了程序移植性。基于JavaCard虚拟机(简称JCVM)的应用实现方法如

图1所示。用Java语言编写应用程序得到.java文件,Java编译器将其编译成多个.class文件,再由JavaCard转换器对这些.class文件进行处理生成一个能被JCVM执行的二进制.cap文件。将该.cap 文件下载到卡内存储空间,由JCVM执行其中的字节码,以达到实现应用功能的目的。一个CAP文件包含了一个Java包中定义的所有类和接口信息。在CAP文件定义
的每一个组件都具有如下通用的格式
component { ul tag u2 size ul info[]
}其中,1字节的tag标识了这个组件的类型,2字节的size表示info数组中的字节数。有效的tag和它们的值如表1所示。表1 CAP文件组件tag组件类型Γ
COMPONENT—HeaderT
COMPONENT—Directory~
COMPONENT—Applet3~
COMPONENT—Import~
C0MP0NENT_ConstantPool5~
C0MP0NENT—Class6~
COMPONENT—MethodT
COMPONENT—StaticField
COMPONENT—ReferenceLocation9~
COMPONENT—Export10
COMPONENT—Descriptor Γ
COMPONENT—Debug12Tag对应的info数组的内容和格式随组件类型的不同而不同,且都是变长的复杂结构。但是,由于上述JavaCard虚拟机是由Sim公司控制,使用者需要向Sim公司支付
大量费用。并且,现有技术中还存在如下问题现有技术所采用的二进制可执行文件格式设计比较复杂,增加了解析的复杂度, 给虚拟机添加了执行负担。传统的虚拟机大多支持Java等强类型编程语言,令使用主流脚本语言的网页开发者无所适从。

发明内容
本发明所要解决的技术问题是,提供一种智能卡应用的实现方法及系统,以便轻量级的虚拟机在智能卡内高效地解析其中的字节码。为了解决上述技术问题,本发明公开了一种智能卡应用的实现方法,包括事先生成二进制可执行.ρ文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用;将所生成的.ρ文件下载到智能卡存储区域中,启动任一 .ρ文件对应的智能卡应用时,智能卡虚拟机同时启动,并执行该.P文件中的字节码以实现该.P文件对应的智能卡
4应用功能。较佳地,上述方法中,生成所述二进制可执行.ρ文件的过程如下采用超级文本预处理(PHP)语言编写所需智能卡应用,以生成.php的文件,通过 PHP的扩展工具对所生成的.php文件进行处理,以获取PHP操作指令的描述文件,从所述描述文件中提取有效信息进行编码压缩,生成适合智能卡片内虚拟机处理的二进制可执行.P 文件。较佳地,上述方法中,所述二进制可执行.ρ文件至少包括文件头和函数体,其中, 所述二进制可执行.P文件中包括的函数体个数为一个或多个。较佳地,上述方法中,所述文件头至少包括文件标识信息和文件总长度信息。较佳地,上述方法中,所述函数体至少包括变量数目和指令。较佳地,上述方法中,所述指令至少包含操作码和操作数信息。较佳地,上述方法中,所述操作码对应的指令集采用PHP精简指令集。较佳地,上述方法中,所述操作数以真实值存储在所述指令中。本发明公开了一种智能卡应用的实现系统,包括可执行文件生成单元,事先生成二进制可执行.P文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用;智能卡,将所述可执行文件生成单元所生成的.ρ文件下载到智能卡存储区域中, 根据用户指令启动所存储的.P文件对应的智能卡应用;智能卡虚拟机,在所述智能卡启动任一 .ρ文件对应的智能卡应用时,执行该.P文件中的字节码以实现该.P文件对应的智能卡应用功能。较佳地,上述系统中,所述可执行文件生成单元,采用超级文本预处理(PHP)语言编写所需智能卡应用,以生成.php的文件,通过PHP的扩展工具对所生成的.php文件进行处理,获取PHP操作指令的描述文件,从所述描述文件中提取有效信息进行编码压缩,生成适合智能卡片内虚拟机处理的二进制可执行.P文件。本申请技术方案提出一种适合RAM4K,R0M32K以上CPU类型智能卡上运行的轻量级虚拟机的二进制可执行文件,该可执行文件的设计便于智能卡虚拟机的设计实现和执行,可提高智能卡虚拟机解码的效率,提高智能卡的空间利用率,并以此提升智能卡上应用的安全性和可移植性。
具体实施例方式图1为基于JavaCard虚拟机的应用开发平台流程图;图2为本实施例中智能卡上应用的实现流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。实施例1针对现有JavaCard虚拟机的付费问题,本案申请人想到可采用PHP语言编写智能卡上的应用,因为PHP语言是一种开源的,免费的语言,其可为使用者节省费用。但是,现有技术中通常是由knd引擎来实现PHP的语法,该knd引擎功能庞杂、内存消耗大、内部组织复杂,极不适用于智能卡这种资源受限的嵌入式平台开发。故本案申请人又首次提出利用VLD扩展工具对PHP文件进行处理,以得到操作指令的描述文件。再对描述文件进行编码压缩,最终生成一种简单高效的二进制可执行文件(.P文件)并存储到智能卡上。这样, 智能卡启动.P文件对应的应用时,智能卡虚拟机即可解码执行该.P文件中的字节码以实现该.P文件对应的应用功能。基于上述思想,本实施例即介绍一种智能卡应用的实现方法,该方法包括如下事先生成二进制可执行.ρ文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用,将所生成的.P文件下载到智能卡存储区域中,启动任一.P文件对应的智能卡应用时,智能卡虚拟机也启动,由智能卡虚拟机执行该.P文件中的字节码以实现该.P文件对应的智能卡应用功能。上述二进制可执行.ρ文件的生成过程如下(如图2所示)首先采用PHP (Hypertext Pr印rocessor,超级文本预处理)语言编写所需应用处理程序(即生成后缀为.Php的文件),然后通过php的VLD (Vulcan Logic Dumper)扩展工具对.Php文件进行处理,以获取php操作指令的描述文件。在得到操作指令描述文件后, 从中提取有效信息(即智能卡虚拟机实现操作指令时必须的信息)并进行编码压缩,从而生成适合智能卡片内虚拟机处理的二进制可执行文件(.P文件)。其中,上述二进制可执行.ρ文件采用最高效的以函数为单位的模式,这样可使智能卡虚拟机避免因面向对象而带来的种种弊端。即二进制可执行文件的主体部分是由一个个函数组成的。访问到该函数,首先将给出函数定义的变量个数,便于紧跟在变量信息后面的字节码在执行的过程中使用。函数体中包含指令。优选方案中,操作数以真实值存储在指令中,以避免跳转到别的区域获取操作数的过程,方便并加速指令的执行。对一些跳转操作,在指令中直接给出了跳转地址相对于该二进制可执行文件的偏移地址,可最大限度的加快.P文件的执行速度。具体的,上述二进制可执行.ρ文件至少包括文件头以及1个或多个函数体。文件头中至少包括文件标识信息(本实施例中文件标识信息占用2字节)和文件总长度信息(本实施例中文件总长度信息占用2字节)。这两种信息在文件头中的先后顺序可随意设置。函数体中至少包括变量数目(本实施例中变量数目占用1字节)以及1条或多条指令。需要说明的是,上述方法中,通过PHP的VLD扩展工具生成的操作指令的描述文件主要包括指令码、指令扩展信息、指令返回值、指令操作数1和指令操作数2。一条操作指令可能只有其中几项的信息。为了尽可能地压缩可执行文件的大小,拥有不同项信息的操作指令可区别对待。上述指令码即为指令码集合中的编码,下面即为本实施例提供的指令码集合 (不分次序,编码范围是0x00 0x43,共68个)。ASSIGNASSIGN_MUL
ASSIGNADDASSIGNSL
ASSIGN_BW_ANDASSIGNSR
ASSIGN_BW_ORASSIGN_SUB
ASSIGN_BW_XORASSIGNREFASSIGNCONCAT
ASSIGN_DIV
ASSIGN_MOD
ADDARRAYELEMENT
ADDCHAR
BOOL
BOOL_NOT
BOOLXOR
BRK
BW_AND
BW_NOT
BW_OR
BW_XOR
CONCAT
CASE
DIV
DO_FCALL ECHO
FETCHDIMR
FETCHDIMW
FETCHDIMRW
FETCH_DIM_FUNC_ARG
FREE
INITSTRING INITARRAY
8
ADD
ADDSTRING
ADDJVAR
JMPNZ_EX
JMPZEX
JMPZ
JMP
JMPZNZ
MOD
MUL
NOP
PRINT
POSTINC
POST_DEC
PREDEC
PREINC
QMASSIGN
RECY
RETURN
RECV_INIT
SENDYAR
SEND_VAL
SEND_YAR_NO_REF
SENDREFIS_EQUALSR
IS_NOT_EQUALSUB
IS SMALLERZEND ASSIGN DIM
IS_SMALLER_OR_EQUALZEND_OP_DATA本实施例中一条指令包括操作码(1字节)、扩展信息、操作数1和操作数2中的其中几项信息,且扩展信息和操作数都是可变长的,因此指令的长度并不固定。其中操作码是前面指令集的编码(0x00 0x43);指令集中有扩展信息的只有2条指令D0_FCALL和JMPZNZ ;没有操作数的指令有FREE/NOP/INIT_STRING有一个操作数的指令有ECH0/D0_FCALL/ JlP/ BRK/ RECV/ RETURN/ SEND_VAR/ SEND_VAL/ SEND_VAR_N0_REF/ SEND_REF/ BOOL/ B00L_N0T/ Bff_N0T/ INIT_ARRAY/ PRINT/ P0ST_INC/ POST_DEC/QM_ASSIGN其余的指令都有2个操作数。指令码里面没有返回值项,是因为有的指令一定有或者一定没有返回值,而对于不确定是否有返回值的指令,如果它有返回值,则操作码的最高位将置1.如果一条指令有返回值,则它的返回值类型一定是确定的。不确定是否有返回值的指令有ASSIGN/ASSIGN_ADD/ ASSIGN_BW_AND/ ASSIGN_ Bff_0R/ ASSIGN_Bff_X0R/ ASSIGN_DIV/ ASSIGN_M0D/ ASSIGN_MUL/ ASSIGN_SL/ ASSIGN— SR/ ASSIGN_SUB/ ASSIGN_C0NCAT/ ASSIGN_REF/ PRE_DEC/ PRE_INC/ FETCH_DIM_R/ ZEND_ASSIGN_DIM操作数可以是局部变量(占用1字节)例如0x00 0x7F,编号χ代表着函数中的第X个变量。或者操作数可以是字符串,该字符串长度L为0x00 0χ6Ε,其中,标识字节可占用1字节,例如0x80+L,字符串内容占用L字节(为了提高空间利用率本实施例中字符串结尾没有’ \0’)。或者字符串长度L >= 0x6F,其中,标识字节占用1字节例如OxEF, 字符串长度占用2字节,字符串内容占用L字节(为了提高空间利用率本实施例中字符串结尾没有’ \0’)。操作数还可以为空,例如0xF0。操作数可以为整数,例如0xFl 0xF4, 分别代表该整数占有了后面1 4个字节。操作数可以为布尔类型,例如0xF5 0xF6, 0xF5为布尔假,0xF6为布尔真。操作数可以为临时变量,例如0xF7。实施例2本实施例介绍一种智能卡应用的实现系统,可实现上述实施例1的方法,该系统至少包括可执行文件生成单元、智能卡以及智能卡虚拟机。可执行文件生成单元,事先生成二进制可执行.P文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用;本实施例中,可执行文件生成单元,可采用PHP语言编写所需智能卡应用,以生成.Php的文件,通过PHP的扩展工具对所生成的.php文件进行处理,以获取PHP操作指令的描述文件,从该描述文件中提取有效信息进行编码压缩,生成适合智能卡片内虚拟机处理的二进制可执行.P文件。具体地,二进制可执行.ρ文件可以包括文件头和函数体。其中,二进制可执行.P文件中包括一个或多个函数体。文件头至少包括文件标识信息和文件总长度信息。函数体至少包括变量数目和指令。智能卡,将可执行文件生成单元所生成的.ρ文件下载到智能卡存储区域中,并根据用户指令启动所存储的.P文件对应的智能卡应用;智能卡虚拟机,在智能卡启动任一 .ρ文件对应的智能卡应用时,执行该.P文件中的字节码以实现该.P文件对应的智能卡应用功能。需要说明的是,针对智能卡单线程操作的特点,并且为了避免智能卡虚拟机启动后占用空间所造成的空间浪费,因此,本实施例提出智能卡虚拟机只在执行.P文件时启动,.P文件执行结束后智能卡虚拟机即会退出。执行下一个.P文件时,智能卡虚拟机再次启动。从上述实施例可以看出,本申请技术方案所提出的二进制可执行文件中的字节码舍弃了现有技术中域、方法、类、常量池等的分区方式,而将各种类型的数据直接放在指令之中,通过编码方式的不同而区分各自的属性,函数间直接通过计算好的偏移地址而实现跳转,调用哪个本地方法也在字节码中直接给出。因此相对于JCVM cap文件中的多个分区和需要不断地计算和查找各种操作数信息,本申请技术方案所提出的二进制可执行文件更加显得简单而高效,取指、执行的操作也更加便捷,方便在智能卡上设计轻量级虚拟机来执行。其次,本申请技术方案本着最小但最有效原则,为了避免现有技术采用对象处理指令所造成的指令集大,指令执行效率低的问题,而采用了最精简而完备的指令集,简化可执行文件格式的同时,也将最大程度减小虚拟机实现的复杂度,最大限度发挥智能卡的性能。并且,面向对象导致执行效率和空间利用率低,这对于智能卡来说是一个很致命的缺陷。而本申请技术方案所提出的二进制可执行.P文件的格式令智能卡虚拟机可采用以函数为单位的面向过程方式处理,取缔了对象这一结构单位,从而为虚拟机在智能卡上运行节省了大量的内存空间,并有利于提高智能卡上虚拟机的执行效率。而且,一般的可执行文件并没有体现垃圾回收信息,因此虚拟机需要设计复杂的垃圾回收机制,往往还需要付出相当的性能代价。而本申请中的二进制可执行文件采用的指令集中包含了 FREE这一释放临时变量内存的指令,且经过PHP的VLD扩展解析后,该指令自动插入到需要释放临时变量的地方,因此大大减轻了虚拟机在垃圾回收中需要做了工作。另外,从上述实施例中可以看出,本申请技术方案中智能卡虚拟机只在执行.ρ文件时启动,.P文件执行结束后智能卡虚拟机即会退出。执行下一个.P文件时,智能卡虚拟机再次启动。这样的操作是考虑到智能卡上还有很多操作不通过虚拟机,而智能卡是单线程的。而且,这样的操作也可以节省空间,因为智能卡虚拟机启动后就要为其分配空间,即使还没开始执行字节码,也要分配空间。本领域普通技术人员可以理解上述方法中的全部或部分步骤,可通过程序来指示相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。 本申请不限制于任何特定形式的硬件和软件的结合。以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种智能卡应用的实现方法,其特征在于,该方法包括事先生成二进制可执行.P文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用;将所生成的.P文件下载到智能卡存储区域中,启动任一 .P文件对应的智能卡应用时, 智能卡虚拟机同时启动,并执行该.P文件中的字节码以实现该.P文件对应的智能卡应用功能。
2.如权利要求1所述的方法,其特征在于,生成所述二进制可执行.P文件的过程如下采用超级文本预处理(PHP)语言编写所需智能卡应用,以生成.php的文件,通过PHP 的扩展工具对所生成的.Php文件进行处理,以获取PHP操作指令的描述文件,从所述描述文件中提取有效信息进行编码压缩,生成适合智能卡片内虚拟机处理的二进制可执行.P 文件。
3.如权利要求1或2所述的方法,其特征在于,所述二进制可执行.P文件至少包括文件头和函数体,其中,所述二进制可执行.P文件中包括的函数体个数为一个或多个。
4.如权利要求3所述的方法,其特征在于,所述文件头至少包括文件标识信息和文件总长度信息。
5.如权利要求3所述的方法,其特征在于,所述函数体至少包括变量数目和指令。
6.如权利要求5所述的方法,其特征在于,所述指令至少包含操作码和操作数信息。
7.如权利要求6所述的方法,其特征在于,所述操作码对应的指令集采用PHP精简指令集。
8.如权利要求6所述的方法,其特征在于,所述操作数以真实值存储在所述指令中。
9.一种智能卡应用的实现系统,其特征在于,该系统包括可执行文件生成单元,事先生成二进制可执行.P文件,其中,所生成的每个二进制可执行.P文件对应一智能卡应用;智能卡,将所述可执行文件生成单元所生成的.P文件下载到智能卡存储区域中,根据用户指令启动所存储的.P文件对应的智能卡应用;智能卡虚拟机,在所述智能卡启动任一 .P文件对应的智能卡应用时,执行该.P文件中的字节码以实现该.P文件对应的智能卡应用功能。
10.如权利要求9所述的系统,其特征在于,所述可执行文件生成单元,采用超级文本预处理(PHP)语言编写所需智能卡应用,以生成.Php的文件,通过PHP的扩展工具对所生成的.php文件进行处理,获取PHP操作指令的描述文件,从所述描述文件中提取有效信息进行编码压缩,生成适合智能卡片内虚拟机处理的二进制可执行.P文件。
全文摘要
本发明公开了一种智能卡应用的实现方法及系统,涉及智能卡虚拟机技术领域。本发明公开的方法包括事先生成二进制可执行.p文件,其中,所生成的每个二进制可执行.p文件对应一智能卡应用;将所生成的.p文件下载到智能卡存储区域中,启动任一.p文件对应的智能卡应用时,智能卡虚拟机同时启动,并执行该.p文件中的字节码以实现该.p文件对应的智能卡应用功能。本申请技术方案可提高智能卡虚拟机解码的效率,提高智能卡的空间利用率,并以此提升智能卡上应用的安全性和可移植性。
文档编号G06F9/455GK102567020SQ20111044187
公开日2012年7月11日 申请日期2011年12月26日 优先权日2011年12月26日
发明者李小帆, 甘露 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1