基于UML建模語(yǔ)言的開放式智能卡應(yīng)用模型
文章出處:http://xianjuhong.com 作者:邵 華,王恒奎,王東琳 人氣: 發(fā)表時(shí)間:2011年10月09日
1 概述
1.1開放式智能卡概述
隨著Internet在電子商務(wù)和人類生活中占有越來(lái)越重要的地位,人們對(duì)認(rèn)證和安全交易的要求也越來(lái)越高。智能卡具有體積小、輕便易攜帶、可以自行存儲(chǔ)和處理數(shù)據(jù)并執(zhí)行加密解密操作等優(yōu)點(diǎn),與網(wǎng)絡(luò)服務(wù)的結(jié)合還使它成為一個(gè)可以方便地存儲(chǔ)用戶密鑰和下載保密數(shù)據(jù)的設(shè)備。
智能卡中包含CPU、RAM、EEPROM、ROM和I/O,如同一部規(guī)模較小的電腦。智能卡的軟件結(jié)構(gòu)由操作系統(tǒng)、虛擬機(jī)、智能卡應(yīng)用模型及其具體應(yīng)用服務(wù)程序所構(gòu)成,如圖1所示。
在此結(jié)構(gòu)中,最底層的操作系統(tǒng)負(fù)責(zé)底層硬件的管理;虛擬機(jī)這一層隱藏了不同的操作系統(tǒng)平臺(tái),解釋執(zhí)行用類匯編語(yǔ)言表示的應(yīng)用程序;開放式智能卡應(yīng)用模型定義了一整套編程接口類,提供應(yīng)用程序需要的統(tǒng)一的應(yīng)用環(huán)境;應(yīng)用程序提供具體的智能卡服務(wù)。
1.2 開放式智能卡應(yīng)用模型概述
當(dāng)今智能卡的功能及其終端(讀卡設(shè)備)由于制造商的不同而種類繁多,使得智能卡的應(yīng)用程序很難在不同智能卡開發(fā)平臺(tái)(智能卡的終端,智能卡操作系統(tǒng)和編程環(huán)境)之間移植;另外開發(fā)智能卡所使用的編程語(yǔ)言比較低級(jí),開發(fā)困難、成本高。
開放式智能卡模型的提出滿足了智能卡應(yīng)用開發(fā)的不同部分的需要,使得這些部分可以分別由應(yīng)用程序開發(fā)者、智能卡發(fā)行商、智能卡開發(fā)者、智能卡終端開發(fā)者來(lái)完成,并都可以獨(dú)立開發(fā)并兼容使用。應(yīng)用程序開發(fā)者希望開發(fā)的智能卡應(yīng)用程序能夠在不同發(fā)行商發(fā)行的卡上運(yùn)行,相應(yīng)的智能卡發(fā)行商也希望能夠采用不同應(yīng)用程序開發(fā)者提供的應(yīng)用程序,自由地選擇操作系統(tǒng)而能適用于所有應(yīng)用程序,任意地選擇卡終端提供者所提供的裝置和硬件驅(qū)動(dòng)。開放式智能卡應(yīng)用模型使得每個(gè)角色不需要隨著任何其它部件的更新而改變,每個(gè)角色所完成的功能獨(dú)立而協(xié)同。
2 基于UML的開放式智能卡應(yīng)用模型
本文描述了一種位于智能卡應(yīng)用程序和智能卡平臺(tái)之間的中間層,即開放式智能卡應(yīng)用模型(Open Card Framework)來(lái)解決以上這些問(wèn)題。目的是為了:
(1) 高層APIs(Application Program Interfaces)標(biāo)準(zhǔn)化:智能卡及其終端是通過(guò)交換命令對(duì)APDU(Application Protocol Data Unit)來(lái)完成各種各樣的功能,而對(duì)于不同的智能卡終端交互的機(jī)制是不同的,模型必須提供標(biāo)準(zhǔn)接口隱藏這些機(jī)制的復(fù)雜性。
(2)智能卡終端透明。智能卡的終端各式各樣(如POS機(jī),指紋錄入設(shè)備),模型應(yīng)盡可能隱藏設(shè)備的具體特征,并透明地提供它們的功能。
(3) 智能卡操作系統(tǒng)透明。一定的命令集完成一定的任務(wù),智能卡操作系統(tǒng)將這些命令集包裝起來(lái),只提供給應(yīng)用程序相應(yīng)的接口。不同的操作系統(tǒng)提供的接口是不同的,框架應(yīng)隱藏這些接口的不同。
(4) 智能卡的發(fā)行商透明。智能卡的發(fā)行商決定了智能卡上所裝載的應(yīng)用程序及其組織,框架同樣要隱藏這些管理和組織的細(xì)節(jié)。
(5) 可擴(kuò)展性:中間層必須能夠滿足未來(lái)的技術(shù)發(fā)展需要。
開放式智能卡應(yīng)用模型是基于智能卡應(yīng)用的面向?qū)ο罂蚣?,是給智能卡開發(fā)者提供的統(tǒng)一框架,它符合ISO7816相關(guān)標(biāo)準(zhǔn)的特點(diǎn)使得開放式智能卡應(yīng)用模型可以適用于任何智能卡種類[4]。
開放式智能卡應(yīng)用模型將應(yīng)用系統(tǒng)的任務(wù)按照它們的共性和個(gè)性分成兩個(gè)部分,分別是智能卡終端組件(Card Terminal Package)和智能卡服務(wù)組件(Card Service Package).UML是一種能夠?qū)?yīng)用程序中的信息用標(biāo)準(zhǔn)的圖形元素直觀顯示的建模語(yǔ)言,它是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示,本文通過(guò)UML對(duì)開放式智能卡應(yīng)用模型建立相關(guān)模型。下面將用UML具體解釋它們的任務(wù)及其內(nèi)部關(guān)系。
2.1 智能卡終端組件的建模
智能卡終端組件包含所有與智能卡終端相關(guān)的類,是由智能卡終端開發(fā)商提供的。主要任務(wù)是提供對(duì)智能卡物理終端的訪問(wèn),并可動(dòng)態(tài)地添加和刪除智能卡終端。下面介紹這個(gè)組件中主要的類及它們之間的關(guān)系:
類CardTerminal:從各種智能卡終端抽象出來(lái)可被繼承的類,由其對(duì)應(yīng)的CardTerminalFactory生產(chǎn)得到。
類CardTerminalRegistry:這個(gè)類只有唯一一個(gè)實(shí)例,管理應(yīng)用系統(tǒng)中安裝的所有智能卡終端,可對(duì)CardTerminal進(jìn)行實(shí)例注冊(cè)、注銷等操作。
類CardTerminalFactory:同特定的工廠生產(chǎn)一定的產(chǎn)品一樣,不同的智能卡終端制造商提供具體的CardTerminalFactory子類,由這些子類生產(chǎn)對(duì)應(yīng)的CardTerminal實(shí)例。
類SlotChannel:向插入插槽的智能卡發(fā)送和接收APDU命令對(duì)的通道。
運(yùn)用abstract factory和singleton模式[1]構(gòu)建開放式智能卡應(yīng)用模型的終端組件??蚣苤兴蠧ardTerminal實(shí)例都要在CardTerminalRegistry 的唯一實(shí)例中注冊(cè), 然后由CardTerminalRegistry決定用哪家制造商提供的CardTerminal 實(shí)例,用UML表示的智能卡終端組件靜態(tài)類圖如圖2所示。
在開放式智能卡應(yīng)用模型中,智能卡插入讀卡器或移除的動(dòng)作觸發(fā)外部應(yīng)用系統(tǒng)獲得對(duì)象CardTerminal,此對(duì)象利用CardID(與插入的智能卡一一對(duì)應(yīng)的)表示所插入的智能卡,并通過(guò)對(duì)象SlotChannel與智能卡傳遞APDU。相關(guān)的靜態(tài)類圖用UML表示如圖3所示。
2.2 智能卡服務(wù)組件的建模
智能卡所提供的服務(wù)是通過(guò)外部應(yīng)用和智能卡之間的交互(交換APDU命令對(duì))來(lái)完成的。在開放式智能卡應(yīng)用模型中,這些命令集被集成在卡上的服務(wù)中,外部應(yīng)用只需通過(guò)標(biāo)準(zhǔn)的APIs來(lái)訪問(wèn)這些服務(wù)即可。這個(gè)框架還應(yīng)具有可擴(kuò)展性,能夠添加新的服務(wù)模塊。下面介紹這個(gè)組件中主要的類及其關(guān)系:
類CardService:這是一個(gè)抽象類,其意義是卡上的服務(wù),它的子類通過(guò)包裝一系列APDUs來(lái)提供具體的服務(wù)內(nèi)容。如子類FileSystemCardService是為了完成訪問(wèn)智能卡的文件系統(tǒng)的任務(wù)。
類CardServiceFactory:同類CardTerminalFactory功能相似,應(yīng)用服務(wù)商提供自己的CardServiceFactory代表其自身, 由CardServiceFactory產(chǎn)生它們各種服務(wù)即一些CardService實(shí)例。
類CardServiceRegistry:管理卡上的所有CardService對(duì)象,包括不同應(yīng)用服務(wù)商提供的服務(wù)。
類CardServiceSheduler:為服務(wù)所需的通信安排通道,給CardService對(duì)象提供一個(gè)邏輯通道發(fā)送接收命令對(duì)來(lái)完成任務(wù)。
類SmartCard:外部系統(tǒng)通過(guò)它訪問(wèn)開放式智能卡應(yīng)用模型來(lái)完成智能卡服務(wù)。
類似CardTerminal部件,CardServiceRegistry對(duì)象管理卡上所有的服務(wù)。當(dāng)應(yīng)用程序?qū)Σ迦氲闹悄芸ㄒ笠粋€(gè)特定的服務(wù)如電子錢包服務(wù),CardServiceRegistry詢問(wèn)所注冊(cè)的所有CardServiceFactory子類是否能為這張智能卡提供需要的服務(wù),一旦某個(gè)CardServiceFactory子類如PurseServiceFactory說(shuō)明它能提供電子錢包服務(wù)PurseService,于是子類PurseServiceFactory生產(chǎn)出服務(wù)實(shí)例PurseService。這個(gè)部件的靜態(tài)類圖如圖4所示。
CardServiceScheduler為具體的服務(wù)實(shí)例和智能卡一一對(duì)應(yīng)的SmartCard實(shí)例安排邏輯通道CardChannel,進(jìn)行APDU的交換。一旦完成任務(wù)它就釋放這個(gè)CardChannel實(shí)例,以便將其提供給別的服務(wù)。這些動(dòng)作都是由智能卡插入讀卡終端或移除觸發(fā)的事件CardTerminalEvent引起的,其靜態(tài)類圖如圖5。
2.3 智能卡的應(yīng)用服務(wù)
在開放式智能卡模型中還需要建立一些重要的應(yīng)用服務(wù),對(duì)于大多數(shù)智能卡來(lái)說(shuō)這些服務(wù)是必需的。
類CardManagementCardService是為了在能夠在一張智能卡上裝載、運(yùn)行、管理多個(gè)應(yīng)用程序,它是類CardSevice的子類。
類FileSystemCardService提供了一系列接口來(lái)訪問(wèn)操作
系統(tǒng)中的文件系統(tǒng)。
類SignatureCardService進(jìn)行安全管理,用來(lái)完成持卡人的身份認(rèn)證、文件訪問(wèn)權(quán)限控制、安全報(bào)文傳輸、數(shù)據(jù)加密和解密等任務(wù)。
其它應(yīng)用程序也可以利用以上這些類完成相應(yīng)的服務(wù)。外部應(yīng)用智能卡服務(wù)的系統(tǒng)都是通過(guò)在2.2節(jié)中提到的類SmartCard訪問(wèn)整個(gè)應(yīng)用模型。我們給出一個(gè)服務(wù)應(yīng)用實(shí)例化過(guò)程,表現(xiàn)出對(duì)象之間是如何配合完成功能。假設(shè)外部應(yīng)用需要一個(gè)A CardService對(duì)象,整個(gè)動(dòng)態(tài)過(guò)程用UML的動(dòng)態(tài)Collabartion框圖表示如圖6所示。
3 總結(jié)
開放式智能卡的應(yīng)用框架的提出給應(yīng)用程序開發(fā)者、智能卡和智能卡終端投資商等帶來(lái)了極大的方便。使得智能卡的應(yīng)用實(shí)現(xiàn)了從“一對(duì)一”到“多對(duì)多”的轉(zhuǎn)換,并為開放式智能卡應(yīng)用構(gòu)造了一個(gè)統(tǒng)一標(biāo)準(zhǔn)結(jié)構(gòu)。
(1) 對(duì)于遵循開放式智能卡應(yīng)用框架應(yīng)用程序,可以適用于任何一張開放式智能卡,應(yīng)用程序不需重復(fù)開發(fā),開發(fā)費(fèi)用大大減少。
(2) 對(duì)于遵循開放式智能卡應(yīng)用框架開發(fā)的智能卡,不僅可裝載不同組織提供的多個(gè)應(yīng)用程序,且一旦運(yùn)用環(huán)境變化,可方便地裝載和卸載來(lái)更換卡上的應(yīng)用程序。
本文描述的開放式智能卡應(yīng)用框架滿足了應(yīng)用程序的開放性和獨(dú)立性,不需要像傳統(tǒng)式智能卡的應(yīng)用程序都是為操作系統(tǒng)和芯片量身定做。