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