基于Java Card的校园一卡通的应用设计
文章出处:http://www.ifyousmell.com 作者:李明江 人气: 发表时间:2010年06月23日
随着计算机技术、网络技术、信息技术的高速发展,高等院校也向数字化、信息化、网络化迈进,普遍使用计算机信息系统来进行各个部门的管理工作。但由于各部门的管理信息系统起步不同、平台不同,造成各部门的系统相对独立,数据信息无法兼容互通,各个部门形成相对独立的数据孤岛,这样一些公共基础信息的准确性和及时f生都无法保障。特别有些部门已逐步建立起自己的智能卡应用系统,造成了学生(学生证、考试卡、借书证、饭卡、上网卡)和教职工身上持有多张卡,造成不方便的同时,也让资源不能合理配置和共享,使整个学校的管理水平下降。
校园一卡通是以智能卡为信息载体,适用于校园消费和管理的网络系统,并能实现与校园网的对接。智能卡中的硬件资源是非常有限的。一个最普通的智能卡具有256字节的RAM ,16K字节的ROM和4K一8K字节的EEPROM;而最高档次的智能卡当前也只有4K字节的RAM,64K字节ROM和64K字节的EEPROM;更多智能卡的硬件配置位于二者之间。另一方面,智能卡对安全性、执行效率、事件处理等方面的要求也是很高的。智能卡应用程序在开发时都以汇编语言外加C语言为主,需要对智能卡硬件有很深的专业知识,编程复杂,开发速度慢,成本高。
在智能卡的生命周期中,可能会受到各种各样的攻击,有些可能是无意识的误操作,更多的是蓄意的行为。影响智能卡安全的有以下一些基本问题:
(1)智能卡和接口设备之间的信息流通。这些信息可以被截取分析,从而可被复制或插入假信号。
(2)模拟智能卡(或伪造智能卡)。模拟智能卡与接口设备之间的信息,使接口设备无法判断出是合法的还是模拟的智能卡。
(3)在交易过程中更换智能卡。在授权过程中使用的是合法的智能卡,而在交易数据写入之前更换成另一张卡,从而将交易数据写入替代卡中。
(4)修改信用卡中控制余额更新的日期。信用卡使用时需要输入当天日期,以供卡判断是否是当天第一次使用,即是否应将有效余额项更新为最高授权余额(允许一天内支取的最大金额),如果修改控制余额更新的日期(即上次使用的日期),并将它提前,则输入当天日期后,接口设备会误认为是当天第一次取款,于是将有效余额更新为最高授权余额,因此利用窃来的卡可取定最高授权的金额。
(5)商店雇员的作弊行为。接口设备写入卡中的数据不正确,或雇员私下将一笔交易写成两笔交易,因此接口设备不允许被借用、私自拆卸或改装。
1 Java Card的构架
1.1 Java Card介绍
Java智能卡技术就是将智能卡技术和Java语言的开发和应用技术相结合的一门集软件、安全和加密、单机和网络以及有关社会管理、金融和商贸专业知识和技术的综合技术。Java CARD充分利用了Java“一次编写,随处运行”的能力,使Java也能在智能卡和其他存储容量相对匮乏的设备上得以应用。Java卡是一种能运行Java语言程序的智能卡,它在有限资源环境下的智能卡中支持Java语言的一个子集,是Java嵌入到智能卡中的一种新的应用。它以其多应用的支持、良好的安全特性、主流的面向对象的编程环境、应用程序在线动态下载等众多优点进一步推动了智能卡技术在网络时代的应用和发展。同时,Intemet和移动计算技术的发展也对Java卡技术提出了更高的需求。
Java智能卡开发人员不必象原来的IC卡或智能卡开发人员那样,要对IC卡或智能卡的硬件有很深的专业知识,需要对芯片编写6805和8051的汇编语言程序。Java智能卡开发人员能从供应商那里获得现成的Java智能卡产品以及集成Java开发环境,使Java智能卡开发人员能集中主要精力在应用细节、方法扩充、库及创新上。运用Java Card技术可以使卡上应用程序的开发工作更加容易,同时也能加强运作于不同厂商的智能卡跨平台作业能力。Java Card可以使许多以前由于卡片COS限制无法实现的想法得以实现。Java卡的API规范为智能卡制定了一个Java语言的特殊子集,目前的版本为2.2。Java卡的特色:
(1)平台独立:Java卡Applet能够在不同卡片的JCRE上执行,即通过JVM的机制来达到跨平台的能力;
(2)一卡多用:在同一个Java卡中能够存放多个Java卡Applet,并且也能够下载新的Applet,从而达到“一卡多用”的目的;
(3)复用:可以根据需要删除Java卡上的应用或增加新的应用,而无需更换新的智能卡,这样大大增强智能卡的灵活性;
(4)与现有智能卡兼容:Java卡能与国际标准IS07816(智能卡标准)以及工业界标准(如Europay/Master Card/Visa,EMV)相容;
(5)应用开发简单快速:开发人员无需了解复杂的智能卡硬件和智能卡专用的技术,就可以进行智能卡应用的开发,从而大大减少开发时间和降低开发难度;
(6)开发环境和开发人员丰富:开发人员可以任意选择他们所熟悉和喜欢的开发工具,几乎当今所有流行的Java开发环境都可以被用来进行Java卡的开发。
1.2 java Card体系结构
符合JavaCard2.2的Java Card体系结构如图1所示,其中,Java Card ROM 中的最底层代码是访问存储器(包括RAM、ROM和EEPROM)和I/0的设备驱动程序,根据需要,也可能包括访问加密处理器的驱动程序。这些驱动程序都是用C或汇编语言实现的,从而大大提高了Java Card执行效率。JavaCard虚拟机(JCVM),它是传统的JVM的简化版本。将负责控制上层应用程序对Java Card硬件驱动程序的访问。Java卡的API为智能卡制定了一个Java语言的特殊子集。各种上层应用程序都被称为印一plet。Applet可以动态装载到Java卡上,使得开发人员无需了解复杂的智能卡硬件和智能卡专用的技术,就可以进行智能卡应用的开发,从而大大减少开发时间和降低开发难度。由于Java虚拟机的使用,Java卡的Applet能够在不同卡片的JCAE(Java Card Application Environment)上执行,即透过Java虚拟机的机制来达到跨平台的能力。
Java Card 体系结构
2 校园一卡通应用设计
根据不同的需求,智能卡有以下几方面的应用:
(I)管理部门应用。①教师资格认证管理;②学生注册认证;③学历/学位信息管理;④助学贷款管理、就业辅助服务;⑤体育比赛服务。
(2)校园内应用。①校园管理应用;②校园消费管理;③身份认证管理;④圈存。
(3)校外应用。①学历/学位信息识别;② 电子档案;③可信个人数据服务。
基于java card的校园一卡通系统综合了门禁、消费、通卡管理、账务管理、结算、数据传输等多方面的业务需要,校园一卡通应用系统是建立在校园网络的基础上,通过校园局域网,中心系统可以对各功能子系统进行统一管理;各功能子系统可以进行信息传递和交流,用户可以对个人信息进行查询。系统整个业务系统主要分为几个部分,如图2所示:
2.1 个人信息认证
校园一卡通具有记录学生的系别、专业、姓名、身份证号码、出生年月、性别、户口所在地等个人基本信息,具有个人信息电子认证功能,可以嵌人身份证及照片信息、学历学籍信息。可以为各种考试、图书馆、门禁、考勤、网络中心、校医院提供所需的身份认证。
2.2 电子钱包
校园一卡通具有银行卡的全部功能,它既能实现原有银行磁条卡的全部大额消费功能,又能实现电子钱包的小额消费的全部功能。
2.3 学生管理
实现学生在校期间的注册,注销,成绩单管理等功能。
2.4 交费
实现学生交纳学费、上机、医疗、用餐、校内购物、浴室使用等费用功能。
2.5 信息查询服务
提供查询信息功能包括:选修课程查询、考试成绩查询、招聘信息、助学奖学情况、家庭情况查询、个人学校电子档案查询服务等。
基于java card校园卡的各类卡的数据设计按如下进行:
(1)教职员工卡(教育管理卡),由以下三个数据区构成:
图2 校园一卡通应用示意图
a)基本应用数据区:存放在智能卡整个生命周期中不会改变的信息。包括发卡机构数据文件、持卡人基本信息文件、照片信息数据元、指纹信息元。
b)公共应用数据区:存放教职员工的基本信息文件等由学校维护的反映持卡人通用信息的文件。
c)学校内部管理应用数据区:存放学校自行定义管理的、在校内使用的信息,如医疗信息、门禁信息、图书馆读者信息等。
(2)在校学生卡,在公共数据区与内部数据区的基础上增加了注册数据区与交通应用数据区,由四个数据区构成:
a)基本应用数据区:存放在学生卡的整个生命周期内不会改变的信息,被组织存放学生卡教育环境对应的Applet下。
b)公共应用数据区:存放由学校维护的反映持卡人通用信息的文件。
c)学校内部管理应用数据区:存放在校内使用的信息,如身份信息、门禁信息、图书馆读者信息等,各学校可以根据实际需要进行必要的扩充。
d)学生注册数据区:记录学生注册信息,学历信息,电子档案。
(3)毕业生卡,由四个数据区构成:
a)基本应用数据区:存放在毕业生卡的整个生命周期内不会改变的信息,被组织存放在毕业生卡的Applet下。
b)可信个人信息应用数据区:可信个人信息是指由学校担保在学生毕业时一次录入的信息,包括学生11PD(可信个人数据)标识信息、生物特征信息、个人基本信息、课程考试成绩、水平考试成绩、奖惩信息等。
c)学生就业应用数据区.fi2录学生的首次就业的信息、跟踪学生就业信息。由教育管理部门维护。
d)学生贷款应用数据区:记录学生的贷款信息、诚信信息。
3 安全性分析
在设计过程中,充分考虑了智能卡应用系统中常见的安全性问题,并结合了Java Card技术在安全性方面的优势,其安全方面具有如下特点:
3.1 系统的安全性。系统具有安全性,包括网络系统、主机系统、数据存取系统、数据传输系统的安全性,数据备份和灾难恢复的可靠性。为保证系统软件、应用软件及数据安全,系统严格选用操作系统平台,开发平台,设计防病毒功能,保护系统数据,并建立备份系统,定期自动进行全量及增量备份。在系统中采用射频证卡作为身份识别,并在关键信息的处理、传输中采用加密处理,防止信息的非法访问,确保系统的不可攻击性。
3.2 软件环境的安全性系统采用Java Card技术,使用了当前最流行的Java语言作为软件开发环境。Ja—va Applet受Java安全性的限制,而Java Card系统的安全性模式在很多方面与标准Java有所不同。比如Java Card不支持安全管理器类、语言的安全策略是由虚拟机实施的。Java Applet创建可存储和处理资料的对象,对象由创建该对象的Applet所拥有。即使Applet有对某个对象的引用,它也不能调用该对象的方法,除非它拥有该对象,或该对象已确定共享。某个Applet可与另一个Applet或所有Applet共享其对象。Applet是Java Card内的独立实体。其选择、执行和功能不受驻留在同一张卡上的其它Applet的影响。
3.3 网络运行的可靠性。可靠性包括网络运行的可靠性、各硬件设备的可靠性、所运行软件的可靠性,并在系统中加入掉电保护、数据备份等手段来保证系统的正常、长期的运行。可以采用实时与非实时相结合的网络架构,系统管理中心有中心数据库,各子系统又具有本地库,各本地库与中心通过校园网实现数据互传,使各应用子系统依赖校园网,又可脱离校园网单独运行,这样增加了运行的安全可靠性。消费终端都有自备电池,能在断电的情况下工作,消费终端有存储功能可保存一定的消费记录。
4 总结
虽然目前校园通卡建设的相关研究和解决方案很多,但对采用一种什么样的技术应用于校园通卡系统中,能方便的移植形成统一的校园通卡建设模式,同时安全性高,可扩展性强,在这方面的研究却很少。正是在这种前提下由于Java Card技术的本身特性,我们把它引入到校园通卡建设的研究中来,以解决目前校园通卡建设存在的可移植性不强、平台安全隐患、可扩充性不高等问题。旨在运用先进的Java Card技术,使用简单高效的开发环境,更加快捷、安全地实现“一卡在手,走遍校园”的构想。