CN111966443A - 一种智能卡及其工作方法 - Google Patents
一种智能卡及其工作方法 Download PDFInfo
- Publication number
- CN111966443A CN111966443A CN201910419364.6A CN201910419364A CN111966443A CN 111966443 A CN111966443 A CN 111966443A CN 201910419364 A CN201910419364 A CN 201910419364A CN 111966443 A CN111966443 A CN 111966443A
- Authority
- CN
- China
- Prior art keywords
- application
- virtual machine
- smart card
- instruction
- virtual
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000006870 function Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000011017 operating method Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种智能卡及其工作方法,包括如下步骤:响应于调用应用的命令,启动虚拟机;虚拟机将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。本申请提供的智能卡,由于使用二进制指令格式生成应用,配合特定的虚拟机工作方法进行读取和执行,从而使得此二进制格式文件可以在智能卡上被执行,发挥通用的硬件性能并以原生应用的速度运行。
Description
技术领域
本申请涉及智能卡领域,尤其涉及一种智能卡及其工作方法。
背景技术
现有的智能卡基本采用Java技术,Java卡技术已经被业界广泛接受。Java卡技术包括Java卡运行环境(Java Card Runtime Environment,JCRE)、Java卡虚拟机(Java CardVirtual Machine,JCVM)和Java卡应用编程接口(Java Card Application ProgrammingInterfaces,JCAPI)三个部分。
虚拟机是用于实现应用独立性和应用平台无关性的关键。是对真实计算机资源的一个抽象,为解释性语言提供一套完整的虚拟机接口,即定义了一个虚拟命令集合,为解释语言开发的应用程序和计算机资源之间提供一个可移植接口。在解释执行时,每次提交一个虚拟命令给虚拟机执行。Java卡虚拟机包含两部分,卡上部分包括Java卡字节码解释器。Java卡转换器是卡外部分,运行于PC或工作站。卡上和卡外部分一起实现了虚拟机的全部功能。转换器装载与预处理构成Java包的类文件和输出CAP(converted applet)文件。而后将CAP文件装载到Java智能卡中并由解释器执行。
现有的基于Java技术的智能卡系统存在执行效率较低的技术问题。
发明内容
本申请的目的在于提供一种执行效率更高、运行速度更快、同时兼具兼容性的智能卡。
本申请提供一种智能卡工作方法,包括如下步骤:响应于调用应用的命令,启动虚拟机;虚拟机将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
优选地,所述应用由多个模块组成,每个模块均由二进制字节码组成。
优选地,所述至少一条虚拟机指令组成一个虚拟机指令集,多个虚拟机指令集和组成全局指令队列。
优选地,使用虚拟上下文保存转换过程中的执行数据,在退出应用时,将虚拟上下文映射到智能卡存储器中。
优选地,虚拟机循环读取全局指令队列,执行应用相应功能。
本申请提供的智能卡工作方法具有如上所述的步骤,由于使用二进制指令格式生成应用,配合特定的虚拟机工作方法进行读取和执行,从而使得此二进制格式文件可以在智能卡上被执行,发挥通用的硬件性能并以原生应用的速度运行。
此外,本申请还提供一种智能卡,包括如下部件:存储器,存储应用;虚拟机,响应于调用应用的命令,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
优选地,所述应用由多个模块组成,每个模块均由二进制字节码组成。
优选地,所述虚拟机包括如下子部件:
虚拟上下文VM Context,用于保存转换过程中的执行数据;
初始化模块VM Init,用于在虚拟机启动时,初始化虚拟机;
退出模块VM Exit,在退出应用时,将虚拟上下文映射到智能卡存储器中;
调度器Dispatcher,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令;
执行器,循环读取虚拟机指令,执行应用相应功能。
优选地,智能卡还包括:所述至少一条虚拟机指令组成一个虚拟机指令集,多个虚拟机指令集组成全局指令队列。
优选地,智能卡中存储多个应用,通过固定存储空间大小和地址校验实现应用边界限制。
由于本申请提供的智能卡适用于以上所述的智能卡工作方法,因此,该智能卡具有和以上所述的智能卡工作方法相同的有益效果,此处不再进行赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中的智能卡的结构示意图;
图2为本申请第二实施例中的智能卡的结构示意图;
图3为应用边界示意图;
图4为本申请实施例中的虚拟机的结构示意图;
图5为本申请实施例中的智能卡的工作流程图;
图6为应用形成过程的示意图;
图7为应用生成以及在智能卡上运行的示意图;
图8为智能卡系统结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
本申请实施例提供一种智能卡,具体地,如图1所示,该智能卡100包括:存储器110,存储应用;虚拟机120,响应于调用应用的命令,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
通过该智能卡实现以二进制字节码存储的应用的运行,优选的,二进制字节码可以是WASM(WebAssembly缩写)格式存储。
实施例二
依据实施例二,智能卡100还包括如图2所示的部件:
硬件:包括CPU、存储器(ROM、EEPROM(Flash)以及RAM)、各种处理器以及输入输出电路通信。
硬件抽象层:隐藏了平台的硬件接口细节,直接和硬件通讯,为上层提供抽象支持。上层进行硬件操作时,不需要了解具体细节,从而大大减少智能卡系统理解和开发的复杂度。嵌入式平台通常遵循层次化的设计方法,易于移植。
操作系统:包括通信协议、内存管理、加密算法、虚拟机以及应用安装程序等多个模块。通信协议模块提供智能卡需要的各种通信协议转换;加密算法模块提供加密、解密以及数字签名等功能。内存管理模块为虚拟机以及应用安装程序模块提供存储支持。应用安装程序将应用安装到卡内。
API(Application Program Interface应用程序接口):为了使智能卡编程更简单而提供内置API,这些API提供的功能符合智能卡的系统架构,为应用提供服务,提供与硬件无关的统一开发接口。内置API包括加密API(Crypto API)、APDU(Application ProtocolData Unit应用协议数据单元)API、存储器API(Memory API)、事务API(Transaction API)以及算法API(Arithmetic API)等。其中加密API提供密码技术服务,如加解密、签名、随机数、摘要计算等算法相关功能;APDU API提供通信服务,即智能卡和终端交互数据,应用开发者利用APDU API中提供的方法极其容易地处理APDU命令。事务API提供事务保护服务,包括开始事务、提交事务和废弃事务等功能。算法API提供加、减、乘、除,求余数及面向位操作等算术功能,其中加、减、乘、除,求余数支持BCD格式。
应用程序:实现卡上不同功能的应用服务。智能卡为多应用智能卡,每张卡内可以下载多个实现不同功能的应用。每个应用都是通过应用标识符(AID)来唯一标识和选择的。每个应用也有自己的应用空间,由防火墙保护。应用程序不能访问其他的应用程序的空间,同理其他应用程序也不能访问该应用程序的空间,应用空间之间不能直接访问,除非通过授权机制。授权就是允许一个应用程序调用另外一个应用程序,在授权执行时,当前应用临时停止执行,开始执行授权应用程序。授权应用程序是通过AID指定的。
卡管理器:应用下载到智能卡时,卡管理器在卡上注册该应用,如图3所示,其中主要注册的数据包括应用代码以及应用数据在智能卡硬件的带电可擦可编程只读存储器EEPROM中的存储地址及长度。其中存储地址可以用于地址转换,在虚拟机中的存储地址是一个虚拟的概念,在实际的执行过程中,需要将虚拟地址转换为实际的物理地址,从而实现与硬件平台无关。应用代码长度用于确定应用代码空间大小,应用数据长度用于确定应用数据空间的大小。通过固定应用代码空间大小来校验应用代码的范围。通过固定应用数据空间大小和对应用数据空间数据访问时的地址校验来保证应用只能访问属于它自己的私有存储区。存在于随机存取存储器RAM(random access memory,RAM)的临时数据,同样可通过地址校验来保证其访问权限。通过对应用数据、应用代码和临时数据区的边界限制,从而实现应用防火墙功能。
卡内的虚拟机负责将二进制字节码转化为智能卡操作系统所能识别的本地方法集,提供了一个抽象与平台无关的运行环境,使应用开发独立于底层硬件,与硬件实现无关,提升了开发的灵活性。虚拟机是基于栈的处理器。在虚拟机的具体工作过程中,源代码中的每一条语句都会对应底层的多条虚拟机指令。源代码中每条语句对应的一簇虚拟机指令统称为一个指令集,而多个指令集组成了一个全局的指令队列。在指令队列中,虚拟机会从指令队列的队首开始依次逐条执行每一条指令。应用的字节码是一种机器可读的指令集。每个指令对应一个全局唯一的二进制形式的编码值,这些二进制编码按照特定的规则整合到应用模块的二进制文件中。当执行应用模块时,虚拟机可以根据编码值选择不同的虚拟指令操作。应用模块可用的指令有多种类型,每一种类型的指令集都对应一系列类似的虚拟机操作。
下面结合附图4介绍虚拟机的结构。虚拟机120包括如下子部件:
虚拟上下文VM Context 420,用于保存转换过程中的执行数据;
初始化模块VM Init 410,用于在虚拟机启动时,初始化虚拟机;
退出模块VM Exit 450,在退出应用时,将虚拟上下文映射到智能卡存储器中;
调度器Dispatcher 430,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令;
执行器440,循环读取虚拟机指令,执行应用相应功能。
虚拟机是执行装载的文件,虚拟机的总体结构如图4所示,示例性的,虚拟机可以执行装载的wasm文件,Wasm(WebAssembly)文件是一种基于堆栈虚拟机的二进制指令格式。多种高级语言开发的应用都可以编译成wasm文件,例如C、C++。
Wasm具有如下优点:
1)Wasm字节码类似于处理器的汇编指令,更接近机器指令,运行速度更快。
2)Wasm是一种平台独立的语言,可以在多种场景使用。
3)编写获得的应用是模块化的,代码中的基本单元是模块,模块化的设置便于分步的传输、缓存和执行,可移植性好。
优选的,本申请的二进制字节码组成的应用文件是Wasm文件。
实施例三
以上结合图1-4介绍了智能卡的结构及其内部构造,下面结合图5,介绍该智能卡的工作流程,包括如下步骤:
步骤510、响应于调用应用的命令,启动虚拟机;
步骤520、虚拟机将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
其中智能卡中存储的应用由多个模块组成,每个模块均由二进制字节码组成。应用的形成过程,如图6所示:
智能卡外编译器工作在PC或特定的工作站环境,在智能卡外将高级语言例如C/C++/Rust文件编译、汇编成由二进制字节码组成的应用文件,其中应用由多个模块组成,每个模块均由二进制字节码组成。
生成的应用由智能卡中的安装程序安装到智能卡内,由以上所述的虚拟机执行。
再进一步的,图7示意出了应用在卡外的生成过程和传输到卡内的过程。其生成过程如上所述,在此不再赘述,其中生成的由二进制字节码组成的应用文件由卡外安装程序通过卡片接收设备将其传送到智能卡内的应用安装程序中,卡内安装程序将应用安装到卡内存储器中,在启动应用时,启动虚拟机对应用进行处理。
图8示出了执行上述方法的系统结构图,一种智能卡系统800,包括如图8所示的生成设备801,用于生成由二进制字节码组成的应用文件,生成设备801将生成的应用文件发送到智能卡802中,智能卡802执行如上所述的工作方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种智能卡工作方法,包括如下步骤:
响应于调用应用的命令,启动虚拟机;
虚拟机将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
2.根据权利要求1所述的智能卡工作方法,其特征在于,所述应用由多个模块组成,每个模块均由二进制字节码组成。
3.根据权利要求1所述的智能卡工作方法,其特征在于,所述至少一条虚拟机指令组成一个虚拟机指令集和,多个虚拟机指令集和组成全局指令队列。
4.根据权利要求1所述的智能卡工作方法,其特征在于,使用虚拟上下文保存转换过程中的执行数据,在退出应用时,将虚拟上下文映射到智能卡存储器中。
5.根据权利要求3所述的智能卡工作方法,其特征在于,虚拟机循环读取全局指令队列,执行应用相应功能。
6.一种智能卡,包括如下部件:
存储器,存储应用;
虚拟机,响应于调用应用的命令,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令。
7.根据权利要求6所述的智能卡,其特征在于,所述应用由多个模块组成,每个模块均由二进制字节码组成。
8.根据权利要求6所述的智能卡,其特征在于,所述虚拟机包括如下子部件:
虚拟上下文VM Context,用于保存转换过程中的执行数据;
初始化模块VM Init,用于在虚拟机启动时,初始化虚拟机;
退出模块VM Exit,在退出应用时,将虚拟上下文映射到智能卡存储器中;
调度器Dispatcher,将应用中的由二进制字节码组成的语句转换为智能卡操作系统可识别的至少一条虚拟机指令;
执行器,循环读取虚拟机指令,执行应用相应功能。
9.根据权利要求6所述的智能卡,其特征在于,还包括:所述至少一条虚拟机指令组成一个虚拟机指令集,多个虚拟机指令集组成全局指令队列。
10.根据权利要求6-9之一所述的智能卡,其特征在于,智能卡中存储多个应用,通过固定存储空间大小和地址校验实现应用边界限制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419364.6A CN111966443B (zh) | 2019-05-20 | 2019-05-20 | 一种智能卡及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910419364.6A CN111966443B (zh) | 2019-05-20 | 2019-05-20 | 一种智能卡及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111966443A true CN111966443A (zh) | 2020-11-20 |
CN111966443B CN111966443B (zh) | 2024-02-23 |
Family
ID=73358311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910419364.6A Active CN111966443B (zh) | 2019-05-20 | 2019-05-20 | 一种智能卡及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966443B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040068653A (ko) * | 2003-01-27 | 2004-08-02 | 삼성전자주식회사 | 자바 기반의 스마트카드에서의 실행속도 향상 장치 |
CN1687862A (zh) * | 2005-06-16 | 2005-10-26 | 北京航空航天大学 | 智能卡安全环境的控制方法 |
KR100576967B1 (ko) * | 2003-12-02 | 2006-05-10 | 케이비 테크놀러지 (주) | 자바 스마트 카드 |
CN101231597A (zh) * | 2008-02-01 | 2008-07-30 | 东信和平智能卡股份有限公司 | 智能卡中java程序指令的执行方法 |
CN102567020A (zh) * | 2011-12-26 | 2012-07-11 | 大唐微电子技术有限公司 | 一种智能卡应用的实现方法及系统 |
CN102930322A (zh) * | 2012-09-29 | 2013-02-13 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
CN103530171A (zh) * | 2013-10-25 | 2014-01-22 | 大唐微电子技术有限公司 | 一种智能卡虚拟机及其实现方法 |
-
2019
- 2019-05-20 CN CN201910419364.6A patent/CN111966443B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040068653A (ko) * | 2003-01-27 | 2004-08-02 | 삼성전자주식회사 | 자바 기반의 스마트카드에서의 실행속도 향상 장치 |
KR100576967B1 (ko) * | 2003-12-02 | 2006-05-10 | 케이비 테크놀러지 (주) | 자바 스마트 카드 |
CN1687862A (zh) * | 2005-06-16 | 2005-10-26 | 北京航空航天大学 | 智能卡安全环境的控制方法 |
CN101231597A (zh) * | 2008-02-01 | 2008-07-30 | 东信和平智能卡股份有限公司 | 智能卡中java程序指令的执行方法 |
CN102567020A (zh) * | 2011-12-26 | 2012-07-11 | 大唐微电子技术有限公司 | 一种智能卡应用的实现方法及系统 |
CN102930322A (zh) * | 2012-09-29 | 2013-02-13 | 上海复旦微电子集团股份有限公司 | 智能卡和指令的处理方法 |
CN103530171A (zh) * | 2013-10-25 | 2014-01-22 | 大唐微电子技术有限公司 | 一种智能卡虚拟机及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111966443B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100713739B1 (ko) | 토큰 기반 링크 | |
EP2364481B1 (en) | Method for securing java bytecode. | |
US20020093856A1 (en) | File language verification | |
KR20020002383A (ko) | 자원-제약 장치를 위한 객체지향 명령어 세트 | |
CN116466995B (zh) | 基于复合指令的指令及其操作数的优化方法及装置 | |
Wallentowitz et al. | Potential of webassembly for embedded systems | |
JP4378459B2 (ja) | 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 | |
JP2005501334A (ja) | Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク | |
US7350193B2 (en) | Procedure invocation in an integrated computing environment having both compiled and interpreted code segments | |
CN114398029A (zh) | 基于c语言虚拟机的操作系统 | |
CN110888674B (zh) | 在Python虚拟机中执行安全计算的方法及装置 | |
Grimaud et al. | FACADE: a typed intermediate language dedicated to smart cards | |
CN111966443B (zh) | 一种智能卡及其工作方法 | |
US7065747B2 (en) | Identifying references to objects during bytecode verification | |
JP2002366914A (ja) | マルチプラットフォーム型icカード | |
US6751790B2 (en) | Frameworks for efficient representation of string objects in Java programming environments | |
CN112306632B (zh) | 一种Java Card虚拟机执行引擎装置及执行方法 | |
CN110851140A (zh) | 一种实现单片机动态库的系统及方法 | |
CN117093227B (zh) | 一种用于执行智能合约的方法及装置 | |
Hyppönen et al. | Trading-off type-inference memory complexity against communication | |
Bernardeschi et al. | Using control dependencies for space-aware bytecode verification | |
Liu et al. | Implementation of Java Card Virtual Machine | |
CN114356359A (zh) | 应用程序安装方法、装置、设备以及存储介质 | |
CN113378177A (zh) | 一种安全开放的Native多应用系统架构以及Native应用程序执行方法 | |
Grimaudl et al. | FACADE: a Typed Intermediate Languagd |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |