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