田文進(jìn)
(湖北醫(yī)藥學(xué)院,湖北十堰,442000)
校園一卡通是一種集合了多種應(yīng)用的智能卡,是智能卡技術(shù)在學(xué)校這個(gè)特定領(lǐng)域的應(yīng)用。早期,校園卡只具有簡(jiǎn)單的就餐消費(fèi)功能,現(xiàn)在校園一卡通已經(jīng)具有學(xué)校的綜合管理和金融服務(wù)等多種功能。目前國內(nèi)很多高校都已經(jīng)開始投入使用這種校園通卡,但是其采用的技術(shù)移植性差,并沒有一個(gè)統(tǒng)一的建設(shè)模式,對(duì)社會(huì)資源造成了極大的浪費(fèi)。同時(shí)由于校園一卡通涉及到學(xué)生的身份、財(cái)務(wù)等信息,安全性問題也令人擔(dān)憂。Java Card技術(shù)具有安全性高、移植性強(qiáng)等特點(diǎn),將這種技術(shù)引入到校園一卡通建設(shè)當(dāng)中,以解決目前校園卡建設(shè)的問題。
Java Card技術(shù)是Sun公司結(jié)合Java技術(shù)和智能機(jī)技術(shù)推出的一種新的技術(shù)規(guī)范,旨在解決傳統(tǒng)智能卡開發(fā)過程復(fù)雜以及兼容性等問題。Java Card系統(tǒng)中包括虛擬機(jī)、框架層、企業(yè)添加類、應(yīng)用程序等組成部分。Applet是在Java Card中運(yùn)行的應(yīng)用程序,每張卡中駐留一個(gè)或者多個(gè)Applet,程序運(yùn)行的時(shí)候動(dòng)態(tài)裝載到Java Card中,因此Java Card可以互不影響的處理多種任務(wù)。由于Applet是運(yùn)行在Java Card虛擬機(jī)上,而不是執(zhí)行在卡硬件環(huán)境中的,因此開發(fā)人員不需要學(xué)習(xí)了解智能卡技術(shù),就可以進(jìn)行智能卡開發(fā),開發(fā)難度降低,大大的減少了開發(fā)的時(shí)間。
Java Card對(duì)于硬件環(huán)境要求并不是太高,8位CPU智能卡即可滿足其要求。Java Card虛擬機(jī)分為卡內(nèi)虛擬機(jī)和卡外虛擬機(jī),卡內(nèi)虛擬機(jī)負(fù)責(zé)裝載和引用解析類,因此被稱作Java Card轉(zhuǎn)換器。卡內(nèi)虛擬機(jī)主要實(shí)現(xiàn)字節(jié)碼的執(zhí)行,是一個(gè)字節(jié)碼翻譯器。通過.cap轉(zhuǎn)換文件來實(shí)現(xiàn)兩部分虛擬機(jī)之間的數(shù)據(jù)交換。Java Card是一個(gè)多應(yīng)用的環(huán)境,涉及到個(gè)人的安全信息,因此必須要有防火墻機(jī)制。
一卡通的設(shè)計(jì)需要考慮其存儲(chǔ)容量、基本功能、安全性等方面。一卡通作為信息載體,對(duì)于信息的攜帶量具有較高的要求。現(xiàn)在智能卡的ROM為16KB,RAM一般為256B,智能卡容量小會(huì)出現(xiàn)效率不高的問題,因此在設(shè)計(jì)時(shí)可以選擇性價(jià)比高的智能卡,通過優(yōu)化程序盡可能實(shí)現(xiàn)多種功能。校園一卡通將智能卡的強(qiáng)大功能和計(jì)算機(jī)網(wǎng)絡(luò)的數(shù)字化里面融入學(xué)校,實(shí)現(xiàn)全校各類數(shù)據(jù)的統(tǒng)一管理。校園一卡通基本功能包括常規(guī)的身份認(rèn)證和小額支付兩個(gè)功能。常規(guī)的身份認(rèn)證包括用餐、洗浴等生活支出、宿舍圖書館門禁、圖書館借閱等,校內(nèi)小額支付包括學(xué)校網(wǎng)絡(luò)支付、校園超市購物、校車乘坐等各種消費(fèi)。由于一卡通的支付功能,因此需要考慮一卡通使用過程中與設(shè)備交互的信息安全問題,避免出現(xiàn)消費(fèi)當(dāng)中個(gè)人信息泄露或者消費(fèi)信息錯(cuò)誤等問題。
一卡通系統(tǒng)的總體結(jié)構(gòu)如下圖所示:
圖3.1 一卡通系統(tǒng)總體結(jié)構(gòu)圖
校園主干網(wǎng)和中心服務(wù)器將校園各個(gè)消費(fèi)點(diǎn)聯(lián)結(jié)起來,以此來進(jìn)行各種數(shù)據(jù)交換。主干網(wǎng)的暢通無阻保證 了校園一卡通系統(tǒng)的正常運(yùn)轉(zhuǎn)。系統(tǒng)的設(shè)計(jì)上中心服務(wù)器和各個(gè)消費(fèi)點(diǎn)的服務(wù)系采用實(shí)時(shí)性和非實(shí)時(shí)性相結(jié)合的設(shè)計(jì)思想,來確保系統(tǒng)不受突發(fā)事件的影響。這種設(shè)計(jì)思想的主要內(nèi)容是:當(dāng)主干網(wǎng)暢通的時(shí)候,進(jìn)行交換和統(tǒng)計(jì)數(shù)據(jù);當(dāng)有故障時(shí),各個(gè)消費(fèi)點(diǎn)的服務(wù)器承擔(dān)各自消費(fèi)系統(tǒng)運(yùn)行任務(wù),從而能夠保證各個(gè)消費(fèi)系統(tǒng)的正常運(yùn)行。
圖3.2 一卡通的Java體系結(jié)構(gòu)
校園一卡通的網(wǎng)絡(luò)環(huán)境是以校園網(wǎng)為主體,以大型的數(shù)據(jù)庫管理軟件為運(yùn)行平臺(tái)。其硬件組成部分包括基于Java Card技術(shù)的智能卡、智能卡終端、工作站等部分。其中校園一卡通的Java Card體系可細(xì)化為如下圖所示的結(jié)構(gòu):
2.3.1 Applet功能定義
Applet設(shè)計(jì)首先需要進(jìn)行功能定義,也就是確定系統(tǒng)將要實(shí)現(xiàn)的Applet的功能,能做什么而不能做什么。Applet應(yīng)該具有存款、取款、查詢余額等功能。同時(shí)為了預(yù)防一些非法操作,同時(shí)還需要設(shè)計(jì)一些身份認(rèn)證措施,比如驗(yàn)證用戶的PIN碼等。
2.3.2 獲取Applet的AID
一卡通系統(tǒng)中需要使用應(yīng)用程序標(biāo)志(AID)識(shí)別Applet,每個(gè)Applet都有與之相對(duì)應(yīng)的AID。國際上通過RID和PIX來確保AID的唯一性。RID是ISO分配給卡供應(yīng)商的ID號(hào),通常是5個(gè)字節(jié),PIX是各個(gè)供應(yīng)商擴(kuò)展的ID,用來管理Applet,通常是0~11字節(jié)。
2.3.3 Applet程序類結(jié)構(gòu)的設(shè)計(jì)
Applet功能的實(shí)現(xiàn)通過內(nèi)置select(),deselect(),ins tall(),process(),register()等方法,當(dāng)Java卡收到由終端發(fā)出的APDU命令后,就會(huì)調(diào)用上述的方法,這些方法提供信息的寫入、查詢、反饋等多種功能,也能夠?qū)崿F(xiàn)驗(yàn)證身份和小額的支付。Select()方法可以進(jìn)行一些數(shù)據(jù)的初始化工作,deselect()方法用來進(jìn)行一些復(fù)位的工作,比如說復(fù)位PIN碼。Install()方法用來創(chuàng)建Applet實(shí)例,創(chuàng)建后,通過調(diào)用register()方法來注冊(cè)。
對(duì)于小應(yīng)用程序當(dāng)中的主類初始化當(dāng)中定義的常量如下所示:
應(yīng)用程序運(yùn)行錯(cuò)誤時(shí)候返回的錯(cuò)誤代碼如下所示:
程序的開發(fā)調(diào)試是基于Jbuilder 6.0,Applet開發(fā)調(diào)試環(huán)境為Sun公司提供的JCDK2.2開發(fā)包。
本文討論的Java Card技術(shù)在校園一卡通中的應(yīng)用,旨在基于先進(jìn)的Java Card技術(shù)搭建一個(gè)簡(jiǎn)單便捷的開發(fā)平臺(tái),使校園一卡通的使用更加方便快捷,從而安全的實(shí)現(xiàn)“一卡在手,走遍校園”的構(gòu)想。隨著高校的服務(wù)項(xiàng)目的增多,消費(fèi)的內(nèi)容也在不斷增加,在實(shí)際的應(yīng)用當(dāng)中,不僅僅要考慮卡內(nèi)的應(yīng)用程序和接口程序安全,還需要考慮整個(gè)網(wǎng)絡(luò)架構(gòu)以及核心設(shè)備的安全性問題,從而最大程度上保證一卡通的安全使用。
[1]張新訪,李成華,吳俊軍.“一卡多用”智能卡安全性的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2006(1):56—58.
[2]王明飛.Java智能卡的安全性[J].電腦知識(shí)與技術(shù),2011(24):6015—6016.
[3]何久田,游代安,蔣遂平,等.Java卡應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2006(4):229—232.
[4]傅俊,盤紅華.市民卡數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)與現(xiàn)代化,2008(5):46—49.