在这篇文章中我们将讨论一种目前较为流行的智能卡:JAVA智能卡。我们将介绍JAVA卡的基本概念和如何用它来开发一些简单的应用。我们的目的是使一些有初步JAVA语言知识的读者了解智能卡,了解JAVA智能卡,并能用JAVA卡开发一些简单的应用。我们在讨论JAVA卡和它的APPLET之前先讨论一些智能卡方面的知识。
智能卡与安全
本章主要讨论智能卡的基本知识和智能卡的安全特性。有关智能卡的基本知识的介绍主要围绕两部分进行:智能卡的概念和智能卡与外界的通信。其中关于智能卡的概念,我们将介绍智能卡的定义,类型和它的一些简单应用。在讨论智能卡与外界的通信部分,我们将介绍接触式智能卡的国际规范ISO7816,从而了解智能卡与读卡器的通信方式和协议,智能卡的文件系统,和对智能卡操作的指令系统(APDU)。关于智能卡的安全特性部分,我们将介绍智能卡使用方式的安全性和所支持的安全算法。
概述
说到智能卡,相信大家都已经看见过或使用过。例如,打IC电话的IC卡,手机里的SIM卡,银行里的IC银行卡等等。那什么是智能卡呢?简单而言,智能卡是一种芯片卡,计算芯片镶嵌在一张名片大小的塑料卡片上,从而完成数据的存储与计算。可以通过一种叫读卡器的设备访问智能卡中的数据。那为什么要使用智能卡呢?因为今天使用智能卡的系统,如银行,通信,交通等系统,都通过使用智能卡的特性获取了其他系统所没有的安全性和灵活性。
为什么使用智能卡?
正由于智能卡在当今网络系统应用中的最突出的两个特点:个人身份性和密文性。智能卡的出现大大提高了交易的方便性和安全性。
个人身份性是指智能卡可以表明持卡人的身份。当今各式各样的交易最终都要确认交易方的身份。打个比方,你欠了债要写一张欠条,债主可以让你签名来表明这是你的欠条,也可以让你画押来表明这是你的欠条。而现在智能卡通过存储在卡里的一个ID号就可以方便的表明你的身份了。既简单又安全。
密文性是指智能卡可以以密文的形式存储某些数据。有些智能卡还能利用自带的微处理器进行动态的数据加减密。
充分利用智能卡的个人身份性和密文性,就可以为任何类型网络的数据传递和身份认证提供安全性,从而能大幅度提高现行系统的安全性和便利性。
除此之外,智能卡还有:大容量性,稳定性,可携带性,兼容性好等特点。
智能卡应用
如今智能卡在以下行业内扮演着重要的角色:
电信业
智能卡在电信业中最著名的应用是:GSM中的SIM卡,和IC电话机中的IC卡。
SIM卡是GSM网络中的个人身份模块,即SIM卡中有一个ID来唯一确定该卡的身份。这个ID号会被GSM的鉴权中心,计费中心等使用。
IC电话机中的IC卡中存储着剩余话费的金额。IC电话机会依据通话时间,通话的费率对IC卡存储的金额进行扣除。
银行业
银行业是智能卡展示才华的另一舞台。离线交易是智能卡的一大卖点。通过复杂的加减密算法,和完善的密钥管理系统,POS终端的对银行智能卡进行离线的交易处理,而无须每次交易都用MODEM拨号到后台数据库进行查询。
交通运输
交通运输是智能卡另一个舞台,一种叫非接触式卡的智能卡在这一领域扮演主要角色。如香港地铁的“八达通”卡,用户进入地铁站时,只要将“八达通”卡在人口处的一个装置上晃一下,地铁人口处的门就会自动打开,同时“八达通”卡上的存储的余额就会变少。当“八达通”卡上的存储的余额变为零时,用户就需要对卡进行充值。
智能卡的类型
按嵌入的芯片种类分,智能卡可以分为以下几类:
接触式卡
这种卡需要一种叫作读卡器的装置进行信息的读写操作。与信用卡上是一个磁带条不同,这种卡的表面上镶嵌着一个小的金属片,当把卡插入读卡器时,这个小金属片就会同一个电子接头相接触,通过这个电子接头对芯片读写数据。从卡的结构来分,接触式卡主要分为以下两类卡:
存储卡
存储卡不包含复杂的处理器,它不能动态的管理文件。存储卡与读卡器的通信是同步通信。IC电话机中的IC卡就是存储卡。
微处理器卡
微处理器卡是我们在这要主要讨论的。她与存储卡的最大的区别就是:她具有动态处理数据的功能。微处理器卡的系统结构有的象PC机。她也有ROM,RAM,CPU和EEPROM。以下的讨论如无特别指出,讨论的对象都是微处理器卡。象SIM卡,银行卡等都是微处理器卡。
非接触式卡
另一种是非接触式智能卡,这种卡看上去和普通的塑料信用卡很相似,但却在卡体中内嵌了一个天线和一个微电子芯片,当把它放近读卡器的天线时,它们之间就可以完成一次信息交换。这使其不用与耦合感应器做任何接触,就可与之交换信息,并且处理时间极短,这一特性,使非接触式智能卡在一些象高速公路收费站这样要求大批量超快速运转的场所成为理想的解决方案。
国际标准
智能卡能在世界各地推广,在不同系统中发挥她的作用,国际规范的制定是必不可少的。例如,智能卡的尺寸是由ISO7810标准规定的。ISO7816标准规定了卡用塑料的一些物理特性,包括温差范围、弹性、电子触点的位置以及内置微芯片和外界进行信息交换的方式等。
例如根据智能卡规范(ISO7816.1),接触式智能卡共有8个触点,定义如下图。智能卡正是通过这8个触点与外界进行通信的。 触点 定义 触点 定义 C1 Vcc 供电电压 C5 GND 接地 C2 RST 重置信号 C6 Vpp 编程电压 C3 CLK 时钟信号 C7 I/O 数据输入/ 输出 C4 保留 C8 保留
其中ISO7816是接触式卡智能卡必须遵循的国际规范。目前ISO7816已经陆续发布了9个部分:
ISO7816-1:接触式卡智能卡的物理特性
ISO7816-2:接触式卡智能卡触点的尺寸与位置
ISO7816-3:接触式卡智能卡的电信号和传输协议
ISO7816-4:接触式卡智能卡与外界交互的接口
ISO7816-5:接触式卡智能卡应用的命名方式与注册系统
ISO7816-6:接触式卡智能卡与外界交互的数据对象
ISO7816-7:接触式卡智能卡的结构化查询语句
ISO7816-8:接触式卡智能卡与安全有关的指令
ISO7816-9:接触式卡智能卡附加指令与安全参数
从ISO7816规范的发展,我们可以清楚地看到接触式智能卡的从简单到复杂慢慢完善的发展轨迹。ISO7816是研究接触式智能卡的基础,如果你对接触式智能卡感兴趣,那ISO7816可是必不可缺的资料。
针对某些特殊的应用,如数字蜂窝式移动电话、信用卡(象Europay卡、Mastercard卡和 Visa卡)、电子钱夹(象Visacash、Multos与Proton)也制订了一系列相应的标准。例如,在中国应用最多最广泛的GSM系统中的SIM卡就得遵循GSM11.11, GSM11.14, GSM03.40等一系列规范。
而我们这次讨论的主题JAVA卡,她首先遵循ISO7816的规范,除此之外,她还遵循JAVA卡的一些规范:
Java Card 2.1.1 Runtime Environment Specification
Java Card 2.1.1 Virtual Machine Specification
Java Card 2.1.1 Application Programming Interfaces Specification
读卡器与终端
在讨论读卡器之前,我们先搞清“读卡器”这一概念。广义来讲,“读卡器”指所有可以对卡进行读写的设备。不过,在智能卡业,“读卡器”是指那种必须与电脑相连,接受电脑发出相应指令来控制完成对卡的操作的设备。与“读卡器”对应的设备,我们称之为“终端”。“终端”是指那种能独立对卡进行操作的设备,而无需电脑的帮助。读卡器和终端都可以完成对智能卡的读写。
由于读卡器比终端更依赖于电脑,从而她比终端拥有更多的灵活性。最简单的使用读卡器的方式就是与PC相连。一般PC可以通过RS232串口,USB接口,PCMCIA接口,软盘接口,并口,红外线口等与读卡器取得联系。PC通过这些接口向读卡器发出ISO指令,读卡器收到指令后即对卡进行指令命令的读写,当卡完成这次读写操作后,回给读卡器一个指令成功与否的相应,而读卡器收到卡的相应后即告诉PC,PC这时根据相应的结果进行下一个ISO指令的操作。有关对智能卡的详细操作指令,请参阅[智能卡的接口协议]。一般我们对智能卡进行编程,大多选用读卡器来完成对卡的操作。
一种最常见的终端就是商场和宾馆中使用的POS机。她最大的特点:拥有自己的操作平台和开发系统,能对卡进行独立的读写,有Modem功能和打印交易功能。一般还有磁卡读写功能。
智能卡的文件系统
智能卡的文件系统有的象DOS的树形文件系统。按ISO7816.4规定,智能卡的文件分为:DF(Dedicated File )和EF(Elementary File)。DF包含一些控制信息,它可以成为EF或DF的父文件。这有的象DOS中的目录文件。EF是数据单位的集合,它不能成为任何文件的父文件。这有的象DOS中的TXT文件。
一般而言,智能卡文件系统都有一个必须的根文件(ROOT)。它是DF文件。一般叫它MF(Master File主文件)。
每个文件(包括DF和EF)都有一个文件的ID(两个字节)。如ROOT的ID一般为“3F00”。如要对文件进行读写操作,就必须先用“选择”(Select)命令来选择该文件的ID。
EF的文件类型有:透明EF,线性定长EF,线性变长EF,循环EF。对后三种EF文件的操作需通过对它们所包含的记录进行操作。如你有兴趣希望进一步了解智能卡的文件结构,请参阅ISO7816。
智能卡的接口协议
一般而言,智能卡自身是没有电源,显示器,键盘,哪它是如何与外界进行通信的呢?在上面的文章中,我们已经知道:智能卡是通过它的8个触点与读卡器进行通信的。那它们是如何进行通信的呢?我们知道当两台PC进行通信时,进行数据交换时,它们必须服从一定的通信协议。卡与读卡器的通信也是如此。根据ISO7816.4规定,智能卡与外界的通信数据接口为:APDU(Application Protocol DataUnits,应用协议数据单元)。APDU既制定了命令格式,也制定了响应格式。在卡的领域中,卡始终处在“主仆”关系中的“仆”的地位,即智能卡只能等待读卡器或终端向它发送APDU,收到APDU后,智能卡执行APDU中的命令,而后返回APDU响应。通过APDU命令和它的响应,卡就完成了与读卡器或终端的通信。以下就是APDU的格式: Command APDU(APDU 命令) Mandatory Header(强制部分) Conditional Body(非强制部分) CLA INS P1 P2 Lc Data field Le
“强制部分”表明这是APDU命令必须包括的部分,它包括: class (CLA)-, instruction (INS), and parameters 1 and 2 (P1 and P2). 每部分有一个字节。“非强制部分”表明并不是所有的APDU都有这些部分。
其栏位所表示的意义分别为:
CLA - Class Byte,用於识别applet
INS - Instruction Byte ,下达给applet之指令
P1 - 第一个指令参数
P2 - 第二个指令参数 (P1,P2 根据INS不同,也有不同的含义)
Lc - Data Field之长度
Data Field - 资料栏位
Le - 回传资料之长度
Response APDU (APDU 响应) Conditional Body(非强制部分) Mandatory Trailer(强制部分) Data field SW1 SW2
其栏位所表示的意义分别为:
Data Field - return之资料栏位
SW1 - 执行状态参数1 (1 字节)
SW2 - 执行状态参数2 (1字节)
一般SW1 + SW2 =“9000”表明指令执行成功。
一个例子:
如果我们要选择(Select)SIM卡的ROOT文件,则APDU命令的格式如下: CLA INS P1 P2 Lc Data A0 A4 00 00 02 3F00 A0 代表这是SIM卡、A4代表这是Select指令、P1,P2在Select指令中没有用、Lc说明Data的长度为2个字节、Data=3F00,是ROOT的文件ID
而APDU响应为:9F1A,说明指令成功完成,而且你可以用Get Response命令得到1A长度的响应数据。关于对SIM卡的操作,请参考GSM11.11文档。
智能卡的安全性
安全
由于智能卡采用了不同的安全机理,这种安全机理主要体现在以下两方面:其中用于微处理器卡的比用于只读存储器卡的要复杂一些。
从卡上信息的读取方面来控制:
限制智能卡用户的范围
有些智能卡,任何人都可以读取卡上信息,象记录病人姓名和血型的医疗卡,这种智能卡一般不设密码,只要拿到卡的人都可以读取卡上信息。 这时卡体本身就是一种保护。
对于只许持卡人读取信息的智能卡通常采用一种叫PIN(个人识别码)的密码形式来保护卡上的信息,一般PIN由4至8位数字组成,通过键盘输入读卡器,它允许持卡人输入三次密码,如果三次输的都不对,卡就会被锁住,只有PIN码对了,用户才能对卡进行操作。当前也有一些更高级的密码形式在开发研制之中。
对于只许第三方读取信息的智能卡便只有发卡人才能读取卡上信息。(譬如只有发卡行可以改写电子钱夹上的信息)。这时这些智能卡由16-32位数字的密码来保护。
限制读取智能卡信息的的方式(只读、可添加、可修改或可擦写)。存储在智能卡上的信息一般被划分为若干个部分:
只读信息
只可添加的信息
只可更新的信息
无法读取的信息
这样有些密码信息可以存储在无法读取的存储区域中。
从卡的结构和支持的加密算法来控制
如上所述只有知道密码的人才能使权使用智能卡,但如果需要通过无线电或电话线将卡上的信息向异地传送,就还必须要有额外的防护手段。
防护手段之一就是加密,这就好象把要传送的信息翻译成了谁也看不懂的外语。微处理器智能卡有加密和解密(把看不懂的东西再翻译回来)的功能,使得在传送存储在卡上的信息的同时,也不用担心会发生泄密。
通过加密,智能卡可以把信息翻译成数以亿计的“外语”,并且在须要通信时,可以随机地选择其一。这种防范机制可以确保所用的卡和计算机都真实有效,使得几乎没有可能半路窃取传送的信息。
安全算法
加密技术按照密钥的公开与否可以分为两种:对称密钥算法和公开密钥算法(又称:不对称加密算法)。对称密钥算法和公开密钥算法的区别是:加减密密钥的一致与否。
对称密钥算法,这里加密密钥匙和解密密钥是相同的。为了安全性,密钥要定期的改变。对称算法速度快,所以在处理大量数据的时候被广泛使用,其关键是保证密钥的安全。
公开密钥算法,分别存在一个公钥和私钥,公钥公开,私钥保密。公钥和私钥具有一一对应的关系,用公钥加密的数据只有用私钥才能解开,其效率低于对称密钥算法。其中最著名的两种:DES(对称密钥算法)和RSA(公钥加密算法)。有关DES算法和RSA算法的具体实现过程,不是本次讨论的内容,请大家自己参阅有关资料。目前微处理器智能卡一般都能支持DES算法和RSA算法,象Gemplus公司的GPK卡,Schlumberger公司的CryptoFlex.
附:数字签名 - RSA 算法的一个应用
数字签名采用RSA算法,数据发送方采用自己的私钥加密数据,接受方用发送方的公钥解密,由于私钥和公钥之间的严格对应性,使用其中一个只能用另一个来解,保证了发送方不能抵赖发送过数据,完全模拟了现在生活中的签名。
由于微处理器智能卡带有微处理器,同时又支持对称密钥算法和公开密钥算法,同时它的尺寸大小极方便于携带,所以它必然成为网络数据传递和身份认证极佳的安全模块。有关微处理器智能卡的具体应用,我们将在以后详细讨论。
本人摘自http://www.jspcn.net/htmlnews/11049308793751386.html 如有版权问题请联系本人。
分享到:
相关推荐
Java卡API_V2.2.1 Java卡API_V2.2.1是Java卡应用程序接口(API)的规范,提供了Java卡平台API的中文译本。下面是Java卡API_V2.2.1的详细知识点: 1. 概述 Java卡API_V2.2.1是Java卡平台的应用程序接口规范,提供...
GP卡(JAVA卡)规范是一套由GlobalPlatform组织制定的标准,用以指导多应用智能卡的设计和实现。这种智能卡广泛应用于银行和电信领域,其中包含了银行卡(如EMV2000标准卡)和多种电信运营商使用的多应用卡。Global...
### JAVA卡的APPLET #### 知识点概述 本文主要介绍了JAVA卡的基本概念、结构以及生命周期,并重点探讨了JAVA卡上的APPLET及其工作原理。此外,还通过一个简单的示例来帮助理解JAVA卡APPLET的开发过程。 #### JAVA...
**JAVA卡GP规范详解** **一、什么是GlobalPlatform(GP)规范?** GlobalPlatform(简称GP)是一个由支付、通信、政府和供应商等行业的领军企业共同建立的组织,旨在推动智能卡在全球范围内的多行业应用。GP的目标...
### Java卡技术体系结构与程序员指南 #### 一、引言 随着信息技术的快速发展,智能卡作为一项重要的安全技术,在金融、身份验证等多个领域发挥着关键作用。Java卡技术作为一种在智能卡上运行Java应用程序的技术,...
根据提供的文件信息,本文将详细阐述Java卡技术以及基于Java卡技术开发的全新操作系统相关知识点。 Java卡技术是一种基于Java语言的智能卡技术,它允许开发者使用Java语言为智能卡编写应用程序,这些应用程序运行在...
在信息技术领域中,Java卡技术作为一种智能卡的解决方案,其对象共享机制是实现多应用共存的关键技术。然而,这种机制同样伴随着安全风险。本文旨在分析Java卡对象共享机制的安全问题,并提出了相应的解决策略。 ...
《JAVA卡GP规范最新版 v2.3.1(附录部分中英对照版)》是全球平台(GlobalPlatform)针对Java Card技术发布的一份详细规范,旨在为智能卡和微控制器安全应用提供一个标准框架。该规范的版本2.3.1包含了最新的功能和...
1,在宝塔软件商店找到java项目一键部署3.2并安装 2.安装好后进入java找到容器管理安装tomcat8安装版本 3.web项目管理添加项目,项目域名填写你的域名,项目端口为8085 4.创建后进去项目路径,上传源码并解压,创建...
Java卡是一种特殊的智能卡技术,它的核心是一个基于Java语言的小型操作系统,具有动态更新的功能,因此广泛应用于金融、移动通信、身份认证等领域。Java卡技术的关键之处在于Java卡虚拟机(Java Card VM),它使得...
### 中国联通基于UICC平台的Java卡互操作性技术规范V2.0 #### 一、概述 中国联通基于UICC平台的Java卡互操作性技术规范V2.0旨在规范中国联通GSM/WCDMA数字蜂窝移动通信网络中Java卡的技术实现与互操作性要求。该...
### JAVA卡开发技术详解 #### 一、JAVA卡应用结构的优化 Java卡作为一种智能卡技术,因其灵活性和可扩展性被广泛应用。Java卡应用的开发与其他软件开发类似,但也有其独特之处。一个Java卡应用的核心是一个继承自`...
【Java卡报文摘要生成程序】是一个用于智能卡的Java应用程序,主要目的是实现SHA-1散列算法,生成报文摘要。SHA-1是一种广泛应用于数据完整性验证的安全算法,其特点是能够将任意长度的输入(报文)转换为固定长度的...
JAVA卡是一种基于Java技术的智能卡,主要用于存储和处理安全敏感信息,如金融交易、身份认证等。在本文中,我们将深入探讨JAVA卡相关的规范,包括EMV规范、GP规范以及JAVA卡的基本原理。 首先,EMV(Europay, ...
Java卡的应用不仅仅局限于银行卡、SIM卡、身份证等,随着Java技术的不断演进,Java卡的应用前景变得愈加广阔,为智能卡行业带来了革命性的变革。 以银行卡为例,Java卡技术使得银行卡的应用程序可以轻松地进行更新...
【Java卡】 Java卡是一种基于Java技术的智能卡,其特点是平台无关性,这意味着Java卡可以在各种不同的硬件平台上运行,无需重新编译或修改代码。这种特性使得Java卡在移动通信、电子支付、身份验证等领域广泛应用。...
在IT行业中,尤其是在智能卡应用领域,JAVA卡和M1卡是常见的技术概念。M1卡,全称为MiFare One卡,是一种基于射频识别(RFID)技术的非接触式智能卡,广泛用于门禁、公交卡、校园卡等应用场景。而JAVA卡则是一种运行...
Java卡应用系统的开发是针对智能卡技术的一种编程实践,它主要涉及到使用Java语言来构建卡片上的应用程序。Java卡,作为一种安全、便携的微型计算平台,广泛应用于金融、交通、身份验证等多个领域。它们通常拥有有限...
【Java卡开发手册概述】 Java卡,又称为Java智能卡,是一种使用Java语言进行应用程序开发的特殊卡片。这种卡片常用于安全领域,如SIM卡、银行卡等,因为它们提供了安全的执行环境和加密功能。本手册是针对Java卡...