许多关于无线 Java 站点的文章都以 J2ME 平台为重点。本系列文章(共分为两部分)将介绍另一种重要的移动 Java 技术:支持智能卡编程的 Java Card 。
简介
什么是智能卡?
智能卡不是什么新鲜事物。早在 20 年前,欧洲就以(非智能形式)内存卡的形式引入了智能卡的概念,使用它保存重要的电话信息,其作用是减少盗打付费电话的可能。
智能卡技术由一项国际标准组织(ISO)和国际电工委员会 (IEC)组成的联合技术委员会(JTC1) 定义并管理的工业标准。1987年推出的ISO/IEC 7816国际标准系列在2003年推出了它的最新的升级版本,界定了智能卡的方方面面,包括物理特性、物理接触界面、电子信号和传输协议、命令、安全体系、应用程序标识符和公用数据元素等。
智能卡是一个含有嵌入式集成电路(IC)的塑料卡片。类似于一张信用卡。当用作 SIM 卡时,这个塑料卡片很小,但大小刚好能插入手机中。智能卡从设计上保证高度安全性,窜改一点点内容都会导致毁坏它所包含的信息。
在智能卡使用的某些领域中,它们仅仅提供受保护的非易失性存储。更高级的智能卡还有用于安全处理和存储的微处理器和内存,可以用于使用公钥或共享密钥算法的安全应用程序。智能卡上的非易失性存储是最宝贵的资源,可以用于保存安全密钥和数字证书。一些智能卡有单独的加密协处理器,支持象 RSA、AEC 和 (3)DES 这样的算法。
智能卡不含电池,只有在和智能卡读取器相连时才被激活。当被连接时,在执行完一段复位序列后,智能卡仍保持被动状态,等待接受从客户机(主机)应用程序发来的命令请求。
智能卡可以是 接触式的 或者 非接触式的。正如其名称所暗示的,接触式智能卡通过介于智能卡读取器与智能卡 8 触点之间的物理接触进行通信并工作;而非可接触式智能卡依靠在小于 2 英尺的一般距离之内的射频信号进行通信。非接触式智能卡的射频通信基于类似于用于保存反盗窃和记录清单的 无线射频识别(Radio Frequency ID,RFID)标记 技术。图 1 描述了接触式和非接触式智能卡:
图 1a.接触式智能卡
图 1b.非接触式智能卡
Java Card 技术也存在不同于智能卡的外形规格,例如智能按钮和 USB 令牌(如图 2 所示)。它们可以同智能卡一样验证用户或传送敏感信息。智能按钮包括一块电池而且是基于可接触模式,而 USB 令牌则可以直接插入到个人计算机的 USB 端口,而无需使用接触式或非接触式读取器。这两种类型的 Java Card 均提供与智能卡相同的编程功能,并具有防篡改特性。
图 2a.带有 Java 功能的智能按钮
图 2b.带有 Java 功能的 USB 令牌