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