基于Java Card的校園一卡通的應(yīng)用設(shè)計(jì)
文章出處:http://coolbang.cn 作者:李明江 人氣: 發(fā)表時(shí)間:2010年06月23日
隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、信息技術(shù)的高速發(fā)展,高等院校也向數(shù)字化、信息化、網(wǎng)絡(luò)化邁進(jìn),普遍使用計(jì)算機(jī)信息系統(tǒng)來進(jìn)行各個(gè)部門的管理工作。但由于各部門的管理信息系統(tǒng)起步不同、平臺(tái)不同,造成各部門的系統(tǒng)相對(duì)獨(dú)立,數(shù)據(jù)信息無法兼容互通,各個(gè)部門形成相對(duì)獨(dú)立的數(shù)據(jù)孤島,這樣一些公共基礎(chǔ)信息的準(zhǔn)確性和及時(shí)f生都無法保障。特別有些部門已逐步建立起自己的智能卡應(yīng)用系統(tǒng),造成了學(xué)生(學(xué)生證、考試卡、借書證、飯卡、上網(wǎng)卡)和教職工身上持有多張卡,造成不方便的同時(shí),也讓資源不能合理配置和共享,使整個(gè)學(xué)校的管理水平下降。
校園一卡通是以智能卡為信息載體,適用于校園消費(fèi)和管理的網(wǎng)絡(luò)系統(tǒng),并能實(shí)現(xiàn)與校園網(wǎng)的對(duì)接。智能卡中的硬件資源是非常有限的。一個(gè)最普通的智能卡具有256字節(jié)的RAM ,16K字節(jié)的ROM和4K一8K字節(jié)的EEPROM;而最高檔次的智能卡當(dāng)前也只有4K字節(jié)的RAM,64K字節(jié)ROM和64K字節(jié)的EEPROM;更多智能卡的硬件配置位于二者之間。另一方面,智能卡對(duì)安全性、執(zhí)行效率、事件處理等方面的要求也是很高的。智能卡應(yīng)用程序在開發(fā)時(shí)都以匯編語(yǔ)言外加C語(yǔ)言為主,需要對(duì)智能卡硬件有很深的專業(yè)知識(shí),編程復(fù)雜,開發(fā)速度慢,成本高。
在智能卡的生命周期中,可能會(huì)受到各種各樣的攻擊,有些可能是無意識(shí)的誤操作,更多的是蓄意的行為。影響智能卡安全的有以下一些基本問題:
(1)智能卡和接口設(shè)備之間的信息流通。這些信息可以被截取分析,從而可被復(fù)制或插入假信號(hào)。
(2)模擬智能卡(或偽造智能卡)。模擬智能卡與接口設(shè)備之間的信息,使接口設(shè)備無法判斷出是合法的還是模擬的智能卡。
(3)在交易過程中更換智能卡。在授權(quán)過程中使用的是合法的智能卡,而在交易數(shù)據(jù)寫入之前更換成另一張卡,從而將交易數(shù)據(jù)寫入替代卡中。
(4)修改信用卡中控制余額更新的日期。信用卡使用時(shí)需要輸入當(dāng)天日期,以供卡判斷是否是當(dāng)天第一次使用,即是否應(yīng)將有效余額項(xiàng)更新為最高授權(quán)余額(允許一天內(nèi)支取的最大金額),如果修改控制余額更新的日期(即上次使用的日期),并將它提前,則輸入當(dāng)天日期后,接口設(shè)備會(huì)誤認(rèn)為是當(dāng)天第一次取款,于是將有效余額更新為最高授權(quán)余額,因此利用竊來的卡可取定最高授權(quán)的金額。
(5)商店雇員的作弊行為。接口設(shè)備寫入卡中的數(shù)據(jù)不正確,或雇員私下將一筆交易寫成兩筆交易,因此接口設(shè)備不允許被借用、私自拆卸或改裝。
1 Java Card的構(gòu)架
1.1 Java Card介紹
Java智能卡技術(shù)就是將智能卡技術(shù)和Java語(yǔ)言的開發(fā)和應(yīng)用技術(shù)相結(jié)合的一門集軟件、安全和加密、單機(jī)和網(wǎng)絡(luò)以及有關(guān)社會(huì)管理、金融和商貿(mào)專業(yè)知識(shí)和技術(shù)的綜合技術(shù)。Java CARD充分利用了Java“一次編寫,隨處運(yùn)行”的能力,使Java也能在智能卡和其他存儲(chǔ)容量相對(duì)匱乏的設(shè)備上得以應(yīng)用。Java卡是一種能運(yùn)行Java語(yǔ)言程序的智能卡,它在有限資源環(huán)境下的智能卡中支持Java語(yǔ)言的一個(gè)子集,是Java嵌入到智能卡中的一種新的應(yīng)用。它以其多應(yīng)用的支持、良好的安全特性、主流的面向?qū)ο蟮木幊汰h(huán)境、應(yīng)用程序在線動(dòng)態(tài)下載等眾多優(yōu)點(diǎn)進(jìn)一步推動(dòng)了智能卡技術(shù)在網(wǎng)絡(luò)時(shí)代的應(yīng)用和發(fā)展。同時(shí),Intemet和移動(dòng)計(jì)算技術(shù)的發(fā)展也對(duì)Java卡技術(shù)提出了更高的需求。
Java智能卡開發(fā)人員不必象原來的IC卡或智能卡開發(fā)人員那樣,要對(duì)IC卡或智能卡的硬件有很深的專業(yè)知識(shí),需要對(duì)芯片編寫6805和8051的匯編語(yǔ)言程序。Java智能卡開發(fā)人員能從供應(yīng)商那里獲得現(xiàn)成的Java智能卡產(chǎn)品以及集成Java開發(fā)環(huán)境,使Java智能卡開發(fā)人員能集中主要精力在應(yīng)用細(xì)節(jié)、方法擴(kuò)充、庫(kù)及創(chuàng)新上。運(yùn)用Java Card技術(shù)可以使卡上應(yīng)用程序的開發(fā)工作更加容易,同時(shí)也能加強(qiáng)運(yùn)作于不同廠商的智能卡跨平臺(tái)作業(yè)能力。Java Card可以使許多以前由于卡片COS限制無法實(shí)現(xiàn)的想法得以實(shí)現(xiàn)。Java卡的API規(guī)范為智能卡制定了一個(gè)Java語(yǔ)言的特殊子集,目前的版本為2.2。Java卡的特色:
(1)平臺(tái)獨(dú)立:Java卡Applet能夠在不同卡片的JCRE上執(zhí)行,即通過JVM的機(jī)制來達(dá)到跨平臺(tái)的能力;
(2)一卡多用:在同一個(gè)Java卡中能夠存放多個(gè)Java卡Applet,并且也能夠下載新的Applet,從而達(dá)到“一卡多用”的目的;
(3)復(fù)用:可以根據(jù)需要?jiǎng)h除Java卡上的應(yīng)用或增加新的應(yīng)用,而無需更換新的智能卡,這樣大大增強(qiáng)智能卡的靈活性;
(4)與現(xiàn)有智能卡兼容:Java卡能與國(guó)際標(biāo)準(zhǔn)IS07816(智能卡標(biāo)準(zhǔn))以及工業(yè)界標(biāo)準(zhǔn)(如Europay/Master Card/Visa,EMV)相容;
(5)應(yīng)用開發(fā)簡(jiǎn)單快速:開發(fā)人員無需了解復(fù)雜的智能卡硬件和智能卡專用的技術(shù),就可以進(jìn)行智能卡應(yīng)用的開發(fā),從而大大減少開發(fā)時(shí)間和降低開發(fā)難度;
(6)開發(fā)環(huán)境和開發(fā)人員豐富:開發(fā)人員可以任意選擇他們所熟悉和喜歡的開發(fā)工具,幾乎當(dāng)今所有流行的Java開發(fā)環(huán)境都可以被用來進(jìn)行Java卡的開發(fā)。
1.2 java Card體系結(jié)構(gòu)
符合JavaCard2.2的Java Card體系結(jié)構(gòu)如圖1所示,其中,Java Card ROM 中的最底層代碼是訪問存儲(chǔ)器(包括RAM、ROM和EEPROM)和I/0的設(shè)備驅(qū)動(dòng)程序,根據(jù)需要,也可能包括訪問加密處理器的驅(qū)動(dòng)程序。這些驅(qū)動(dòng)程序都是用C或匯編語(yǔ)言實(shí)現(xiàn)的,從而大大提高了Java Card執(zhí)行效率。JavaCard虛擬機(jī)(JCVM),它是傳統(tǒng)的JVM的簡(jiǎn)化版本。將負(fù)責(zé)控制上層應(yīng)用程序?qū)ava Card硬件驅(qū)動(dòng)程序的訪問。Java卡的API為智能卡制定了一個(gè)Java語(yǔ)言的特殊子集。各種上層應(yīng)用程序都被稱為印一plet。Applet可以動(dòng)態(tài)裝載到Java卡上,使得開發(fā)人員無需了解復(fù)雜的智能卡硬件和智能卡專用的技術(shù),就可以進(jìn)行智能卡應(yīng)用的開發(fā),從而大大減少開發(fā)時(shí)間和降低開發(fā)難度。由于Java虛擬機(jī)的使用,Java卡的Applet能夠在不同卡片的JCAE(Java Card Application Environment)上執(zhí)行,即透過Java虛擬機(jī)的機(jī)制來達(dá)到跨平臺(tái)的能力。
Java Card 體系結(jié)構(gòu)
2 校園一卡通應(yīng)用設(shè)計(jì)
根據(jù)不同的需求,智能卡有以下幾方面的應(yīng)用:
(I)管理部門應(yīng)用。①教師資格認(rèn)證管理;②學(xué)生注冊(cè)認(rèn)證;③學(xué)歷/學(xué)位信息管理;④助學(xué)貸款管理、就業(yè)輔助服務(wù);⑤體育比賽服務(wù)。
(2)校園內(nèi)應(yīng)用。①校園管理應(yīng)用;②校園消費(fèi)管理;③身份認(rèn)證管理;④圈存。
(3)校外應(yīng)用。①學(xué)歷/學(xué)位信息識(shí)別;② 電子檔案;③可信個(gè)人數(shù)據(jù)服務(wù)。
基于java card的校園一卡通系統(tǒng)綜合了門禁、消費(fèi)、通卡管理、賬務(wù)管理、結(jié)算、數(shù)據(jù)傳輸?shù)榷喾矫娴臉I(yè)務(wù)需要,校園一卡通應(yīng)用系統(tǒng)是建立在校園網(wǎng)絡(luò)的基礎(chǔ)上,通過校園局域網(wǎng),中心系統(tǒng)可以對(duì)各功能子系統(tǒng)進(jìn)行統(tǒng)一管理;各功能子系統(tǒng)可以進(jìn)行信息傳遞和交流,用戶可以對(duì)個(gè)人信息進(jìn)行查詢。系統(tǒng)整個(gè)業(yè)務(wù)系統(tǒng)主要分為幾個(gè)部分,如圖2所示:
2.1 個(gè)人信息認(rèn)證
校園一卡通具有記錄學(xué)生的系別、專業(yè)、姓名、身份證號(hào)碼、出生年月、性別、戶口所在地等個(gè)人基本信息,具有個(gè)人信息電子認(rèn)證功能,可以嵌人身份證及照片信息、學(xué)歷學(xué)籍信息??梢詾楦鞣N考試、圖書館、門禁、考勤、網(wǎng)絡(luò)中心、校醫(yī)院提供所需的身份認(rèn)證。
2.2 電子錢包
校園一卡通具有銀行卡的全部功能,它既能實(shí)現(xiàn)原有銀行磁條卡的全部大額消費(fèi)功能,又能實(shí)現(xiàn)電子錢包的小額消費(fèi)的全部功能。
2.3 學(xué)生管理
實(shí)現(xiàn)學(xué)生在校期間的注冊(cè),注銷,成績(jī)單管理等功能。
2.4 交費(fèi)
實(shí)現(xiàn)學(xué)生交納學(xué)費(fèi)、上機(jī)、醫(yī)療、用餐、校內(nèi)購(gòu)物、浴室使用等費(fèi)用功能。
2.5 信息查詢服務(wù)
提供查詢信息功能包括:選修課程查詢、考試成績(jī)查詢、招聘信息、助學(xué)獎(jiǎng)學(xué)情況、家庭情況查詢、個(gè)人學(xué)校電子檔案查詢服務(wù)等。
基于java card校園卡的各類卡的數(shù)據(jù)設(shè)計(jì)按如下進(jìn)行:
(1)教職員工卡(教育管理卡),由以下三個(gè)數(shù)據(jù)區(qū)構(gòu)成:
圖2 校園一卡通應(yīng)用示意圖
a)基本應(yīng)用數(shù)據(jù)區(qū):存放在智能卡整個(gè)生命周期中不會(huì)改變的信息。包括發(fā)卡機(jī)構(gòu)數(shù)據(jù)文件、持卡人基本信息文件、照片信息數(shù)據(jù)元、指紋信息元。
b)公共應(yīng)用數(shù)據(jù)區(qū):存放教職員工的基本信息文件等由學(xué)校維護(hù)的反映持卡人通用信息的文件。
c)學(xué)校內(nèi)部管理應(yīng)用數(shù)據(jù)區(qū):存放學(xué)校自行定義管理的、在校內(nèi)使用的信息,如醫(yī)療信息、門禁信息、圖書館讀者信息等。
(2)在校學(xué)生卡,在公共數(shù)據(jù)區(qū)與內(nèi)部數(shù)據(jù)區(qū)的基礎(chǔ)上增加了注冊(cè)數(shù)據(jù)區(qū)與交通應(yīng)用數(shù)據(jù)區(qū),由四個(gè)數(shù)據(jù)區(qū)構(gòu)成:
a)基本應(yīng)用數(shù)據(jù)區(qū):存放在學(xué)生卡的整個(gè)生命周期內(nèi)不會(huì)改變的信息,被組織存放學(xué)生卡教育環(huán)境對(duì)應(yīng)的Applet下。
b)公共應(yīng)用數(shù)據(jù)區(qū):存放由學(xué)校維護(hù)的反映持卡人通用信息的文件。
c)學(xué)校內(nèi)部管理應(yīng)用數(shù)據(jù)區(qū):存放在校內(nèi)使用的信息,如身份信息、門禁信息、圖書館讀者信息等,各學(xué)??梢愿鶕?jù)實(shí)際需要進(jìn)行必要的擴(kuò)充。
d)學(xué)生注冊(cè)數(shù)據(jù)區(qū):記錄學(xué)生注冊(cè)信息,學(xué)歷信息,電子檔案。
(3)畢業(yè)生卡,由四個(gè)數(shù)據(jù)區(qū)構(gòu)成:
a)基本應(yīng)用數(shù)據(jù)區(qū):存放在畢業(yè)生卡的整個(gè)生命周期內(nèi)不會(huì)改變的信息,被組織存放在畢業(yè)生卡的Applet下。
b)可信個(gè)人信息應(yīng)用數(shù)據(jù)區(qū):可信個(gè)人信息是指由學(xué)校擔(dān)保在學(xué)生畢業(yè)時(shí)一次錄入的信息,包括學(xué)生11PD(可信個(gè)人數(shù)據(jù))標(biāo)識(shí)信息、生物特征信息、個(gè)人基本信息、課程考試成績(jī)、水平考試成績(jī)、獎(jiǎng)懲信息等。
c)學(xué)生就業(yè)應(yīng)用數(shù)據(jù)區(qū).fi2錄學(xué)生的首次就業(yè)的信息、跟蹤學(xué)生就業(yè)信息。由教育管理部門維護(hù)。
d)學(xué)生貸款應(yīng)用數(shù)據(jù)區(qū):記錄學(xué)生的貸款信息、誠(chéng)信信息。
3 安全性分析
在設(shè)計(jì)過程中,充分考慮了智能卡應(yīng)用系統(tǒng)中常見的安全性問題,并結(jié)合了Java Card技術(shù)在安全性方面的優(yōu)勢(shì),其安全方面具有如下特點(diǎn):
3.1 系統(tǒng)的安全性。系統(tǒng)具有安全性,包括網(wǎng)絡(luò)系統(tǒng)、主機(jī)系統(tǒng)、數(shù)據(jù)存取系統(tǒng)、數(shù)據(jù)傳輸系統(tǒng)的安全性,數(shù)據(jù)備份和災(zāi)難恢復(fù)的可靠性。為保證系統(tǒng)軟件、應(yīng)用軟件及數(shù)據(jù)安全,系統(tǒng)嚴(yán)格選用操作系統(tǒng)平臺(tái),開發(fā)平臺(tái),設(shè)計(jì)防病毒功能,保護(hù)系統(tǒng)數(shù)據(jù),并建立備份系統(tǒng),定期自動(dòng)進(jìn)行全量及增量備份。在系統(tǒng)中采用射頻證卡作為身份識(shí)別,并在關(guān)鍵信息的處理、傳輸中采用加密處理,防止信息的非法訪問,確保系統(tǒng)的不可攻擊性。
3.2 軟件環(huán)境的安全性系統(tǒng)采用Java Card技術(shù),使用了當(dāng)前最流行的Java語(yǔ)言作為軟件開發(fā)環(huán)境。Ja—va Applet受Java安全性的限制,而Java Card系統(tǒng)的安全性模式在很多方面與標(biāo)準(zhǔn)Java有所不同。比如Java Card不支持安全管理器類、語(yǔ)言的安全策略是由虛擬機(jī)實(shí)施的。Java Applet創(chuàng)建可存儲(chǔ)和處理資料的對(duì)象,對(duì)象由創(chuàng)建該對(duì)象的Applet所擁有。即使Applet有對(duì)某個(gè)對(duì)象的引用,它也不能調(diào)用該對(duì)象的方法,除非它擁有該對(duì)象,或該對(duì)象已確定共享。某個(gè)Applet可與另一個(gè)Applet或所有Applet共享其對(duì)象。Applet是Java Card內(nèi)的獨(dú)立實(shí)體。其選擇、執(zhí)行和功能不受駐留在同一張卡上的其它Applet的影響。
3.3 網(wǎng)絡(luò)運(yùn)行的可靠性??煽啃园ňW(wǎng)絡(luò)運(yùn)行的可靠性、各硬件設(shè)備的可靠性、所運(yùn)行軟件的可靠性,并在系統(tǒng)中加入掉電保護(hù)、數(shù)據(jù)備份等手段來保證系統(tǒng)的正常、長(zhǎng)期的運(yùn)行??梢圆捎脤?shí)時(shí)與非實(shí)時(shí)相結(jié)合的網(wǎng)絡(luò)架構(gòu),系統(tǒng)管理中心有中心數(shù)據(jù)庫(kù),各子系統(tǒng)又具有本地庫(kù),各本地庫(kù)與中心通過校園網(wǎng)實(shí)現(xiàn)數(shù)據(jù)互傳,使各應(yīng)用子系統(tǒng)依賴校園網(wǎng),又可脫離校園網(wǎng)單獨(dú)運(yùn)行,這樣增加了運(yùn)行的安全可靠性。消費(fèi)終端都有自備電池,能在斷電的情況下工作,消費(fèi)終端有存儲(chǔ)功能可保存一定的消費(fèi)記錄。
4 總結(jié)
雖然目前校園通卡建設(shè)的相關(guān)研究和解決方案很多,但對(duì)采用一種什么樣的技術(shù)應(yīng)用于校園通卡系統(tǒng)中,能方便的移植形成統(tǒng)一的校園通卡建設(shè)模式,同時(shí)安全性高,可擴(kuò)展性強(qiáng),在這方面的研究卻很少。正是在這種前提下由于Java Card技術(shù)的本身特性,我們把它引入到校園通卡建設(shè)的研究中來,以解決目前校園通卡建設(shè)存在的可移植性不強(qiáng)、平臺(tái)安全隱患、可擴(kuò)充性不高等問題。旨在運(yùn)用先進(jìn)的Java Card技術(shù),使用簡(jiǎn)單高效的開發(fā)環(huán)境,更加快捷、安全地實(shí)現(xiàn)“一卡在手,走遍校園”的構(gòu)想。