JavaCard概述

JavaCard概述


Java Card是指一种软件技术,它允许基于Java的Applet在智能卡等类似的小内存设备上运行。 Java Card 是面向嵌入式设备的最小 Java 平台。Java Card 使开发者能够对设备开发特定的应用程序。它广泛用于智能卡卡。1996 年,Schlumberger的卡片部门推出了第一款 Java Card,该部门后来与Gemplus合并形成Gemalto。Java Card 产品是基于 Java Card Platform 规范开发的Sun Microsystems公司(后来成为Oracle的子公司)。许多 Java 卡产品还依赖 GlobalPlatform 规范对卡上的Applet进行安全管理(下载、安装、个性化、删除)。

Java Card 技术的主要设计目标是可移植性和安全性。

可移植性


Java Card 旨在定义一个标准的智能卡计算机环境,允许同一个 Java Card 小程序运行在不同的智能卡上,就像 Java 小程序运行在不同的计算机上一样。与 Java 一样,这是通过使用虚拟机(Java Card Virtual Machine)和定义良好的运行时库来实现的,后者在很大程度上从智能卡之间的差异中抽象出小程序。内存大小、性能和运行时支持(例如,对于通信协议或加密算法)的问题仍然降低了可移植性。

安全性


Java Card 技术最初是为了保护存储在智能卡上的敏感信息而开发的。安全性由该技术的各个方面决定:

        数据封装

        数据存储在应用程序中,Java Card 应用程序在与底层操作系统和硬件分离的隔离环境(Java Card VM)中执行。

        Applet防火墙

        与其他 Java VM 不同,Java Card VM 通常管理多个应用程序,每个应用程序都可能有自己的敏感数据。因此,不同的应用程序通过防火墙相互隔离,该防火墙限制和检查应用程序对非本应用的数据访问。

        密码学

支持常用的对称密钥算法(如DES、TDES、AES)和非对称密钥算法(如RSA、SM)以及其他加密服务(如签名、密钥生成和密钥交换)。

其他语言特性


在语言级别,Java Card 是 Java 的一个子集:Java Card 的所有语言结构都存在于 Java 中并且行为相同。这意味着Java Card 程序能被 Java 编译器编译成 Java 类文件,类文件由特定于 Java Card 平台的工具进行后续的处理。

但是Java Card 不支持许多 Java 语言功能(特别是 char、double、float 和 long 类型;transient限定符;枚举;多维数组;对象的finalization;对象克隆;线程)。此外,许多实际的智能卡(特别是 type int,它是 Java 表达式的默认类型;以及对象的垃圾收集)在运行时没有提供 Java 的一些公共特性。

 字节码

由 Java Card 虚拟机运行的 Java Card字节码是由标准 Java 虚拟机运行的Java字节码的功能子集,但具有不同的编码以优化大小。因此与通过编译相同 Java 源代码获得的 Java 小程序相比,Java Card 小程序通常使用更少的字节码。这节省了内存,这是资源受限设备(如智能卡)的必需品。作为设计权衡,不支持某些 Java 语言功能(如上所述)和大小限制。存在克服大小限制的技术,例如将应用程序的代码分成低于 64 K限制的包 。

库和运行时

标准 Java Card 类库和运行时支持与 Java 中的有很大不同,公共子集很少。例如,Java Card 不支持 Java Security Manager 类,其中安全策略由 Java Card 虚拟机实现,和瞬态(可以是类成员的非持久性、快速 RAM 变量)通过 Java Card 类库得到支持,而它们在 Java 中具有本机语言支持。

具体功能

Java Card 运行时和虚拟机还支持特定于 Java Card 平台的功能:

持久化

使用 Java Card,对象默认存储在持久内存中(智能卡上的 RAM 非常稀缺,它仅用于临时或对安全敏感的对象)。因此,运行时环境和字节码已被调整为管理持久对象。

原子性

由于智能卡由外部供电并依赖持久内存,因此持久更新必须是原子的。因此,由单个字节码指令和 API 方法执行的单个写入操作是原子性的,并且 Java Card Runtime 包括有限的事务机制。

小程序隔离

Java Card 防火墙是一种将卡上的不同小程序相互隔离的机制。它还包括一个共享机制,允许小程序显式地使对象可用于其他小程序。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值