`
qinya06
  • 浏览: 600092 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaCard 之 程序元素

阅读更多

完整的Java Card应用程序由
一个后端应用程序和系统、
一个主机(卡外)应用程序、
一个接口设备(读卡器)和
卡上小应用程序、用户证书和支持软件组成。
所有的这些元素共同组成一个安全的端到端应用程序:

  一个典型的Java Card应用程序不是孤立的,而是包含卡端、读取端和后端元素。让我们更详细的讲述一下每个元素。
  后端应用程序和系统

  后端应用程序提供了支持卡上Java小应用程序的服务。 例如,一个后端应用程序可以提供到安全系统和卡上的证书的连接,提供强大的安全性。在一个电子付款系统中,后端应用程序可以提供到信用卡及其他付款信息的访问。

  读取端主应用程序

  主应用程序存在于一个例如个人计算机这样的台式机或者终端、电子付款终端、手机或者一个安全子系统中。

  主应用程序处理用户、Java Card小应用程序和供应商的后端应用程序之间的通讯。

  传统的读取端应用程序是使用C编写的。近来J2ME技术的广泛普及有望使用Java实现主应用程序;例如,它可以在一台支持MIDP和安全信赖服务应用编程接口(Security and Trust Services API)手机上运行。
智能卡供应商一般不仅提供开发工具箱,而且提供支持读取端应用程序和Java Card小应用程序的应用程序编程接口。例如OpenCard Framework http://www.opencard.org/,就是一个基于Java的应用程序编程接口集,隐藏了来自不同供应商的读取器的一些细节,并且提供了Java Card远程方法调用分布式对象模型和安全信任服务应用编程接口(SATSA),我在本文后面一部分讨论它们。

  读取端卡片接受设备

  卡片接受设备(CAD)是处于主应用程序和Java Card设备之间的接口设备。一个CAD为卡片提供电力,以及与之进行电子或者射频通信。一个CAD可能是一个使用串行端口附于台式计算机的读卡器,或者可能被整合到终端内,例如饭店或者加油站内的电子付款终端。接口设备从主应用程序到卡片转送应用程序协议数据单元( Application Protocol Data Unit,简称APDU)命令(在后面讨论),并且从卡片向主应用程序转送响应。一些CAD有用于输入个人识别号码的键盘,有的可能还有显示屏。

  卡片端小应用程序和环境

  Java Card平台是一个多应用程序环境。在图4中我们可以看到,卡片上可能存在一个或多个Java Card小应用程序,还有支持软件--卡片的操作系统和Java Card运行时环境(JCRE)一起。JCRE由Java Card虚拟机、Java Card Framework和应用程序编程接口以及一些扩展应用程序编程接口组成。

  所有的Java Card小应用程序扩展Applet基本类,并且必须实现install()和process()方法;JCRE在安装小应用程序的时候调用install(),并且在每次有一个进入的用于小应用程序的APDU的时候调用process()。
Java Card小应用程序在被装载的时候实例化,并且在断电的时候保持运行。Java Card小应用程序起一个服务器的作用,并且是无源的。在一张卡片被加电以后,每个小应用程序都保持非运行的状态直到它被选择,在此时可能会做初始化。小应用程序只有在一个APDU被发送给它以后才被激活。一个小应用程序如何激活(被选择)在"一个Java Card小应用程序的生命周期"一节中描述。

  与Java Card小应用程序通讯(访问智能卡)

  你可以使用两种模型中的任何一种来在一个主应用程序和一个Java Card小应用程序之间通信。第一个模型是基本消息传送模型,第二种是基于Java Card远程方法调用(JCRMI),这是J2SE RMI分布式对象模型的一个子集。此外,SATSA通过一个基于更加抽象的应用编程接口的普通连接框架(Generic Connection Framework,简称GCF)应用编程接口,让你要么使用消息传递要么使用JCRMI来访问智能卡。


分享到:
评论

相关推荐

    javacard_v2.2.1.rar

    这个"javacard_v2.2.1.rar"压缩包包含了Java Card开发的核心规范和相关文档,对于初学者来说是一份非常宝贵的学习资源。 1. **GP规范**:GP,全称GlobalPlatform,是一个开放的国际标准,定义了如何在智能卡或其他...

    java card 代码

    Java Card 代码 ...Java Card 应用程序元素: * 后端应用程序和系统 * 主机(卡外)应用程序 * 接口设备(读卡器) * 卡上小应用程序 * 用户证书和支持软件 所有这些元素共同组成一个安全的端到端应用程序。

    基于JavaCard和NFC技术的手机钱包关键技术研究.

    1. **安全元素集成**:将JavaCard作为安全元素嵌入到智能手机中,负责存储用户支付相关的敏感信息,如银行卡号、CVV码等,并执行加密交易流程。 2. **NFC支付**:利用NFC技术,当用户将手机靠近POS机时,NFC芯片会...

    javacard_cap文件.doc

    `javacard_cap文件`是Java Card应用程序的主要打包格式,它包含了用于在Java Card设备上运行的类和资源。本文将深入探讨Java Card应用程序开发过程以及与之相关的知识点。 1. **Java Card开发流程** - **编写源...

    Visa GlobalPlatform 2.1.1 -Guidelines for Developing Java Card Applets.pdf

    ### Visa GlobalPlatform 2.1.1 - Guidelines for Developing Java Card Applets #### 1. 引言 本文档旨在为开发人员提供基于Visa GlobalPlatform 2.1.1版本开发Java Card Applets的指南。它涵盖了GlobalPlatform ...

    Java Applet

    在描述中提到的“JCOP插件”可能是指Javacard Operating System (JCOP),这是NXP公司提供的一种特定的Java Card实现,它支持Java Card应用的开发和管理。 这个应用包含了以下关键组件和概念: 1. **Applet类**:这...

    java卡开发

    NXP是智能卡芯片的主要供应商之一,他们的产品如JCOP(Java Card Operating System)被广泛应用于智能卡开发。IBM则在早期参与了Java Card技术的开发,并提供了相关的软件和服务。 总的来说,Java卡开发涉及的技术...

    java面板多线程发牌程序

    现在,我们来看一下`Card.java`这个文件。这个文件很可能是定义牌类的源代码,包含了牌的属性(如花色、点数)以及可能的方法(如比较大小、绘制到屏幕等)。在多线程环境中,为了防止并发访问导致的数据不一致,...

    JAVA扑克牌发牌程序

    根据给定的JAVA扑克牌发牌程序代码及描述,我们可以从中提炼出以下几个关键知识点: ### 1. 类的定义与使用 #### `player` 类 该类代表了玩家,每个玩家持有13张牌。 - **成员变量**: - `private int[] card = ...

    secure-channel-srp6a-applet:用于SRP-6a的经过密码验证的安全通道的Java卡小程序,可保护元素智能卡

    尽管Java Card 2.2 API的安全元素通常配备有必要的硬件,以计算SRP中使用的模运算,但是标准Java Card 2.2 API的局限性阻止了对必需密码原语的直接访问。 因此,这给以可接受的性能实施SRP带来了挑战。 但是,通过...

    JCGPTestSuite

    CAP文件是Java Card应用程序的二进制格式,包含了运行在智能卡上的应用程序代码和数据。 Java Card是一种在智能卡上运行的Java平台,它允许在有限的资源环境中执行安全且可靠的程序。Java Card技术基于Sun ...

    java 扑克牌程序

    在 Java 程序中,`Card` 类主要用于表示扑克牌,并且包含了洗牌 (`washCard`) 和发牌 (`sendCard`) 的功能。 #### 1.1 **属性** - `int[] poker`: 存储所有扑克牌的数组,长度为 104,包含了两副扑克牌。 - `Random...

    java applet应用实例

    Java Applet是Java技术在早期Web开发中的一个重要应用,它允许开发者创建能在浏览器中运行的小型Java程序,为用户提供互动体验。本应用实例主要展示了如何使用Java Applet开发小游戏和小应用,帮助开发者深入理解...

    secure-channel-ec-srp-applet:Java卡小程序,用于SRP的椭圆曲线变体(基于IEEE 1368.2-2008中的SRP-5),以提供经过密码验证的安全通道来保护元素智能卡。 https

    尽管Java Card 2.2 API的安全元素通常配备有必要的硬件,以计算SRP中使用的模运算,但是标准Java Card 2.2 API的局限性阻止了对必需密码原语的直接访问。 因此,这给以可接受的性能实施SRP带来了挑战。 但是,通过...

    Java实现模拟洗牌的程序

    该算法通过遍历数组并随机交换当前元素与未遍历元素之一的位置来达到打乱顺序的目的。`java.util.Random`类可以用来生成随机索引。 - 首先,创建一个`Random`实例。 - 然后,从最后一个元素开始遍历数组,对每个...

    蜘蛛纸牌JAVA程序

    JAVA是一种纯面向对象的语言,游戏中的每个元素如牌、堆栈、玩家状态等都可以被设计为类。例如,`Card`类可以表示单张牌,包含牌的值和花色;`Stack`类用于管理牌堆,包括添加、移除牌的操作;`Player`类则用来记录...

    发纸牌程序 java

    Java是面向对象的语言,因此可以创建一个`Card`类来封装每张牌的信息,包括花色、牌面和状态(已发或未发)。同时,可以创建一个`Player`类来存储玩家的姓名和手里的牌。这些类之间的关系可以通过继承、封装和多态...

    扑克牌图片 Java程序开发

    在Java中,可以创建一个`Card`类,包含花色(如红桃、黑桃、梅花、方块)和点数(如2到Ace)的属性,以及相关的比较和操作方法。 4. **集合框架**: 存储和管理扑克牌时,Java的集合框架(如ArrayList、LinkedList或...

    JAVA程序蜘蛛纸牌

    【JAVA程序蜘蛛纸牌】是一种基于JAVA编程语言开发的桌面游戏,它实现了经典的蜘蛛纸牌玩法。蜘蛛纸牌是一款单人益智游戏,通常由八副扑克牌组成,玩家的目标是通过合理的移动将所有牌按照花色从A到K依次排列。在此...

    JAVA程序包

    【JAVA程序包】是一个集合,其中包含了多个基于JAVA语言实现的项目源代码,如纸牌游戏、吃豆人游戏以及中国象棋等经典的游戏或应用。这些源代码为学习者提供了深入了解Java编程语言及其在实际应用中的用法的宝贵资源...

Global site tag (gtag.js) - Google Analytics