一種新的“一卡多用”智能卡模型
文章出處:http://xianjuhong.com 作者:徐中華,劉玉珍, 張煥國 人氣: 發(fā)表時間:2011年10月07日
1、問題的提出
智能卡(Smart Card)又稱CPU卡,是一種鑲嵌有單片機芯片的IC卡??ㄉ系膯纹瑱C芯片包含中央處理器CPU、隨機存儲器RAM 、電擦除可編程存儲器EEPROM 或FlashMemory、只讀存儲器ROM和I/O接口。COS (ChipOperating System)為芯片操作系統(tǒng),它是掩膜在IC卡內(nèi)單片機ROM中的可執(zhí)行代碼,是芯片資源的管理者和安全保密的基礎(chǔ)。
傳統(tǒng)的COS基本操作方式為:從接口設(shè)備接收到一條命令,然后經(jīng)過加工處理返回應答信息給接口設(shè)備。處理過程如圖1所示。
每個命令都要經(jīng)過其中4個模塊,如果其中任意一個模塊在處理中發(fā)現(xiàn)錯誤都將返回相應的出錯信息。傳輸管理負責卡和接口設(shè)備之間的數(shù)據(jù)通信,通信使用的協(xié)議一般是1SO7816-3所規(guī)定的T=O的異步半雙工字符傳輸協(xié)議豉T=1異步半雙工塊傳輸協(xié)議。數(shù)據(jù)在傳輸方式上一般有3種不同的類型:明文方式、明文校驗方式和密文方式。對于以明文方式進行傳輸?shù)臄?shù)據(jù)由傳輸管理器直接送給命令處理模塊。當數(shù)據(jù)以明文校驗方式或密文方式傳輸時需要加密運算器對數(shù)據(jù)進行相應的處理。命令解釋器只是對外部輸入的每條命令作語法分析,分析和檢查命令參數(shù)是否正確,然后根據(jù)命令參數(shù)的含義執(zhí)行相應的功能模塊。如果發(fā)現(xiàn)參數(shù)有錯,直接返回出錯的信息。文件管理器控制對文件的操作和訪問。在做數(shù)據(jù)操作前,文件管理器將根據(jù)文件的安全屬性來檢查卡的安全狀態(tài),以確定操作的可行性。文件的安全屬性和文件結(jié)構(gòu)一旦產(chǎn)生便處于文件管理器的控制之下。對文件數(shù)據(jù)的操作和管理將按如下的規(guī)則:對某個文件做操作之前,必須先選擇該文件;文件系統(tǒng)有三層結(jié)構(gòu),并且操作系統(tǒng)不支持以路徑的方式選擇文件,所以在選擇某個文件之前必須先選擇它的上一層文件,不允許跨層選擇??ㄆ想姾笞詣舆x擇主控文件;訪問文件中的數(shù)據(jù)要受文件的安全屬性的控制;對文件的建立受該文件所屬上層文件的安全屬性的控制。
綜上所述,對于傳統(tǒng)的卡和COS,由于在卡的生命周期內(nèi)不能更新卡上的COS,并采用了相應的訪問控制措施和加密傳輸方式,從而可以保證卡上數(shù)據(jù)的安全和完整。智能卡的發(fā)展趨勢之一是“一卡多用” ,即在一張智能卡上集成多個應用。這不僅可以有效地降低單個應用的使用成本,而且也便于用戶的攜帶。對單應用智能卡來說,由于應用的提供者通常就是卡的發(fā)行者,因此卡上的數(shù)據(jù)安全通常就由卡的發(fā)行者負責。支持“一卡多用” 的智能卡應允許用戶下載其特定的應用程序,允許用戶擴充或修改部分COS命令。每一應用只能訪問其自己的數(shù)據(jù)和程序,而不能訪問其它應用的數(shù)據(jù)或程序。由于一張智能卡同時存在多個應用,應用可能由于本身的缺陷或出于惡意攻擊的目的,訪問其他應用的數(shù)據(jù)或程序。數(shù)據(jù)安全性無法只由卡片發(fā)行商、應用的提供商或者用戶來單獨保證。因此如何保證卡上的數(shù)據(jù)安全是支持”一卡多用”智能卡系統(tǒng)應解決的核心問題。
COS中與安全最相關(guān)的部分就是文件的管理,也就是存儲器的管理(包括RAM、ROM、EEPROM和Flashmemory等)。對于傳統(tǒng)的COS而言,COS中的命令可以對所有的存儲空間進行操作, 由于COS不可以更新,所有對存儲器的操作都要通過相應的COS命令來進行,所以存儲器都處于COS的控制之下,而在COS命令中采用了相應的控制方法就可以保證存儲器上的數(shù)據(jù)安全。利用有關(guān)的指令就可以讀取所有的存儲器的數(shù)據(jù)和寫所有能寫的存儲區(qū)(除ROM外)。在“一卡多用”的系統(tǒng)中,顯然,可以利用添加新的應用的方法來對系統(tǒng)進行攻擊(讀出所有數(shù)據(jù)進行分析、改寫一些系統(tǒng)關(guān)鍵數(shù)據(jù)等),這些攻擊方法可以繞過COS的文件控制模塊直接進行,使得文件控制模塊形同虛設(shè)。同時,添加的應用如果存在缺陷也可能會存在破壞系統(tǒng)的問題。因此,如何實施有效地存儲管理來防止這類問題的發(fā)生就成為系統(tǒng)安全的關(guān)鍵問題。
特定用戶下載的程序可以對其他用戶的程序和數(shù)據(jù)進行訪問?,F(xiàn)有智能卡硬件設(shè)計不能對多個用戶區(qū)進行隔離保護,即限制特定用戶命令的訪問范圍。本文提出了一種一卡多用智能卡的安全模型,它能支持一卡多用的安全使用,允許多個應用在智能卡中下載其特殊命令,并實現(xiàn)多個應用的隔離。每一應用只能訪問其自身的數(shù)據(jù)或用戶命令,不能訪問其他應用的數(shù)據(jù)或命令。
2 、“一卡多用”智能卡的硬件模型
在Intel 8086/8088系統(tǒng)中,由于硬件的限制,系統(tǒng)程序和用戶程序同屬于一個安全級別(即系統(tǒng)程序和用戶程序在執(zhí)行上沒有任何區(qū)別,例如DOS系統(tǒng)),因此用戶特定應用程序的執(zhí)行可能破壞系統(tǒng)從而導致整個系統(tǒng)崩潰或者存取其它用戶的數(shù)據(jù),顯然這種模型是非常不安全的,而現(xiàn)在的智能卡系統(tǒng)幾乎都是基于這種模型的,利用現(xiàn)有的智能卡來實現(xiàn)“一卡多用” 就難以保證整個系統(tǒng)的安全。借鑒Intel80386中利用硬件建立4個特權(quán)級來保證系統(tǒng)程序和用戶程序分離以實現(xiàn)多任務及任務切換和對各個任務環(huán)境進行保護的方法,可以在智能卡芯片中增添一個特權(quán)級,使得這樣的智能卡芯片具備兩個特權(quán)級,即內(nèi)核級和用戶級。為了支持這種功能,在智能卡芯片中必須提供相應的硬件支持(這里假定智能卡中所用的CPU至少是l6位的,因為8位CPU的智能卡功能太弱)。智能卡中需要增加標志位flag來決定CPU當前處于內(nèi)核級還是處于用戶級。需要添加數(shù)據(jù)地址界限寄存器、應用地址界限寄存器、內(nèi)核級堆棧和異常寄存器。增加這些寄存器的目的主要是用來從硬件上對存儲空間的管理提供更強的支持。數(shù)據(jù)地址界限寄存器用于限定特定應用的數(shù)據(jù)地址空間(允許存放數(shù)據(jù)的地址空間范圍)。應用地址界限寄存器用于限定特定應用的程序地址空間(執(zhí)行程序時使用的地址空間范圍)。同時,需要把COS中的核心模塊和一般應用程序區(qū)分開來。只有當CPU處于內(nèi)核級時才能執(zhí)行COS的核心模塊,而應用程序只能在CPU處于應用級時執(zhí)行。當應用程序執(zhí)行時,若應用程序試圖訪問比較寄存器范圍以外的地址空間,則程序被異常終止,并引起中斷。內(nèi)核級堆棧只能是當CPU處于核心級時才能被訪問,異常寄存器用于發(fā)生異常時保存發(fā)生異常的地址。針對這種安全模型,還需要增加新的指令或擴充諸如JMP、CALL、IRET之類的指令執(zhí)行功能。
“一卡多用”智能卡中的控制轉(zhuǎn)移分為從內(nèi)核級到用戶級的控制轉(zhuǎn)移、從用戶級到內(nèi)核級的控制轉(zhuǎn)移和無級別變化的控制轉(zhuǎn)移3種。卡片插入后,系統(tǒng)首先進入內(nèi)核級,芯片操作系統(tǒng)產(chǎn)生復位應答,并等待接收命令。若接收的命令是用戶自定義命令,則系統(tǒng)將進入用戶級。為實現(xiàn)從內(nèi)核級到用戶級的控制轉(zhuǎn)移,系統(tǒng)根據(jù)應用索引文件為當前應用設(shè)置相應的地址界限寄存器,保存返回地址并將控制切換到相應的應用程序并把flag取反。當應用程序從調(diào)用系統(tǒng)功能函數(shù)返回時,也需要將控制從內(nèi)核級轉(zhuǎn)移到用戶級,此時只需將返回地址等出棧并把flag取反即可。若應用程序需要使用COS提供的功能函數(shù)時,則需要將控制從用戶級轉(zhuǎn)移到內(nèi)核級。為了實現(xiàn)這種轉(zhuǎn)移,系統(tǒng)首先判斷是否符合轉(zhuǎn)移的條件,如果符合,則把當前應用的執(zhí)行地址、調(diào)用函數(shù)使用的參數(shù)放入內(nèi)核級堆棧中,以便應用程序返回時使用,同時把flag取反。應用程序執(zhí)行完成后返回系統(tǒng)時,也需要將控制從用戶級轉(zhuǎn)移到內(nèi)核級,這時系統(tǒng)就不用保存當前應用所執(zhí)行的地址,只需將返回地址等出棧并把flag~反即可。任務中無特權(quán)級變換轉(zhuǎn)移包括內(nèi)核中的轉(zhuǎn)移和應用中的轉(zhuǎn)移兩種情況,這種控制轉(zhuǎn)移與當前使用的智能卡中的實現(xiàn)方式相似,只是在應用中執(zhí)行轉(zhuǎn)移指令和存取器存取指令前,系統(tǒng)會自動利用界限寄存器判斷地址是否越界,如果越界則轉(zhuǎn)入中斷和異常處理。
系統(tǒng)給每種可能的中斷賦予一個中斷號,并在系統(tǒng)初始化時,安排好相應的中斷向量表。當中斷發(fā)生時,系統(tǒng)根據(jù)一定的規(guī)則決定是否響應該中斷。若需要響應,則先保存好當前的系統(tǒng)狀態(tài),然后根據(jù)中斷寄存器中保存的中斷向量號轉(zhuǎn)移到相應的中斷響應程序執(zhí)行。當中斷執(zhí)行完后,返回到斷點繼續(xù)執(zhí)行。當CPU處于用戶態(tài)和內(nèi)核態(tài)下,對中斷的響應規(guī)則可能是不一樣的,如CPU處在內(nèi)核態(tài)下可能需要屏蔽某些中斷,而CPU在系統(tǒng)態(tài)下就不需要屏蔽這些中斷了。系統(tǒng)給每個可能的異常賦予一個異常號,并在系統(tǒng)初始化時,安排好相應的異常向量表。當異常發(fā)生時,系統(tǒng)根據(jù)異常號轉(zhuǎn)移到相應的異常處理程序進行相應的處理。但是處理完后,要進行報錯,并中斷當前程序的執(zhí)行。
3 、芯片操作系統(tǒng)COS
傳統(tǒng)COS一般由傳輸管理、文件管理、安全管理、命令處理4個功能模塊組成。傳統(tǒng)COS中所有命令的執(zhí)行方式是相同的。系統(tǒng)調(diào)用命令時,就把執(zhí)行權(quán)限交給了命令程序,此時,命令程序?qū)ㄉ系乃械挠曹浖Y源擁有完全的控制權(quán),當應用程序完成了相應的處理后,就返回系統(tǒng)。如上文所述,在新的模型中,所有命令應被分為兩個部分:核心命令和用戶命令。核心命令應由以下幾個部分組成:與密碼運算有關(guān)的命令、與存儲管理有關(guān)的命令、與身份驗證有關(guān)的命令、與通信傳輸有關(guān)的命令、與硬件資源管理有關(guān)的命令等。這些命令一般是獨立于具體的應用的,在執(zhí)行時對所有的硬軟件資源擁有完全的控制權(quán)。用戶命令是與具體的應用相聯(lián)系的所有命令的集合,在執(zhí)行時只能使用特定的硬軟件資源,否則就會出錯。
卡上電后,COS首先發(fā)送復位應答給終端來建立雙方的通信并設(shè)置好相應的通信參數(shù),接著就等待接收終端的命令,當接到終端的命令時,COS將從索引文件中來查找該命令,并區(qū)分它是系統(tǒng)核心命令還是一般的用戶命令,如果是系統(tǒng)核心命令,COS按要求處理完后就返回給終端相應的結(jié)果;如果是一般的用戶命令,COS將從索引文件中查找出該命令所對應的應用,找到后將系統(tǒng)切換到該應用的環(huán)境下進行相應的處理,處理完并返回處理結(jié)果后,系統(tǒng)就在切換的COS環(huán)境下等待新的命令;如果COS不能從索引文件中找到該命令,則返回給終端出錯標志。值得注意的是:這些命令應該有一系列的權(quán)限驗證方式來保障系統(tǒng)的安全。
為適應上面提出的“一卡多用”智能卡的安全模型,我們將對COS的一般模型進行改造。在文件管理中,需要建立應用索引文件,用于存儲所有應用的索引、應用中的命令以及相應的數(shù)據(jù)地址空間范圍和應用地址空間范圍,并把這個文件存儲在系統(tǒng)存儲區(qū),因此,只有COS系統(tǒng)才能夠存取該文件。在技術(shù)實現(xiàn)上,可用圖2描述該文件系統(tǒng)模型的實現(xiàn)。
在卡的生命周期內(nèi),卡上的硬件資源在一般情況下不會改變,因此對于硬件資源管理功能和通信傳輸管理功能一般不需要更新。作為系統(tǒng)安全核心的安全控制管理功能則可能隨時間的推移而需要進行部分更新以適應新的應用環(huán)境。如一些傳統(tǒng)加密算法經(jīng)過一段時問的使用后可能需要替換成新的加密算法,因此需要考慮安全管理模塊的更新問題。由于安全管理模塊屬于COS核心模塊部分,安全模塊的更新就涉及到了COS的更新,因此,需要建立相應的機制以適應這樣情況。由于安全控制模塊一般由COS的提供者提供,當需要更新時,應該使用COS提供者提供的特定的更新驗證程序后才能更新。當原有的DES需要升級至AES時,可以通過把COS提供者提供的相應的AES模塊下載到卡中來實現(xiàn)更新,而不必換卡,這樣可提高智能卡的使用壽命。
命令分為核心命令和用戶命令。如果要更新或添加核心命令,則涉及到對COS的更新。如果更新或添加用戶命令,則涉及到對應用的管理。為了便于COS的更新,我們將COS的存儲分為以下幾個部分:將COS提供的核心管理功能模塊和一些在卡的生命期內(nèi)不需要改變的模塊掩膜到ROM中;對于可能需要更新的模塊, 寫到EEPROM 或FLASHMEMORY中以方便今后的更新操作;考慮到COS自身的擴充以及x,tcos中某些模塊的更新可能需要的更大的存儲空間,同時還在EEPROM或FLASHMEMORY預留出部分空間。COS自身的存儲主要由以上的3部分組成,其存儲邏輯圖如圖3。
4、應用管理
系統(tǒng)中另一個重要的方面是對應用的管理,它包括應用的添加、刪除、更新和執(zhí)行4個方面。
當需要添加一個新的應用時,系統(tǒng)順序地給該應用分配一個標志號,并在應用索引文件中添加一項,把允許該應用使用的地址空間范圍和起始地址存于其中,同時根據(jù)有關(guān)規(guī)則建立起一個DF文件分配給該應用。在應用索引文件中還應該包括該應用所使用的所有命令。
對于應用刪除有3種方式:(1)應用一旦被添加就不再允許被刪除。(2)允許用戶刪除所有的應用,這種方式實現(xiàn)比前一種要復雜,當某個應用有使用的時間限制或者不需要再使用時,就可以考慮將該應用從卡上刪除,以便回收存儲空間。刪除方法是:將該應用在應用索引文件中所對應的索引項刪除就行了?;厥盏拇鎯臻g可以分配新添加的應用,但是新添加的應用所要求的存儲空間大小不得超過回收的存儲空間的大小,否則不得分配。(3)允許刪除部分應用,某些應用在卡上起著非常重要的作用,這些應用只允許更新,而不能被刪除,在這種方式下,在添加應用時就應該確定哪些應用可以被刪除,哪些應用不能被刪除。對可以刪除的應用,刪除方式同上,對不能刪除的應用,刪除時就要報錯。
比較這3種實現(xiàn)方式,第1種方式實現(xiàn)容易,缺點是不夠靈活,浪費有限的存儲資源,第2種方式稍難一些,可以節(jié)約一些存儲資源,但仍不夠靈活,第3種方式實現(xiàn)比較困難,但相對而言比較靈活一些。但就技術(shù)實現(xiàn)而言,一般采用第2種方式為宜。
當一個應用中的某些內(nèi)容需更新時,可用系統(tǒng)中有關(guān)的命令來更新相應的內(nèi)容,但是更新后該應用所占的空間不能超出分配給該應用的地址空間,否則將拒絕更新。在更新過程中,一般是用更新的內(nèi)容覆蓋掉原有的內(nèi)容。如果原有的內(nèi)容仍有很大的價值,那么就應該考慮是否執(zhí)行更新操作。提供更新操作的主要優(yōu)點是可以延長卡的使用壽命。
當執(zhí)行應用中的命令時,系統(tǒng)自動將應用索引文件的地址范圍裝入界限寄存器,一旦應用在執(zhí)行中的地址越界,就需進行異常處理,并中斷應用程序。采用這種方式就可以保證應用不會在執(zhí)行過程中非法訪問其他應用的數(shù)據(jù)或破壞系統(tǒng)資源。
5、小結(jié)
從理論上來說這種系統(tǒng)中可以添加無限個應用。但是到底能夠添加多少個應用是受硬件和軟件條件的限制的,應根據(jù)系統(tǒng)具體情況來決定。 “一卡多用”智能卡的應用范圍是極其廣泛的,它可以應用于金融財務(現(xiàn)金卡、信用卡、預付卡、電子支票、證券卡等)、社會安全(人壽和意外保險卡、社會保障卡等)、醫(yī)療(健康檢查卡、捐血卡、病歷卡等)、交通(交通卡等)等方面。本文從卡的硬件模型和軟件模型方面討論了一種“一卡多用”智能卡模型,著重討論了它和傳統(tǒng)智能卡模型的不同之處,并給出了一些實現(xiàn)的方法。使用上述“一卡多用”智能卡,能在硬件上提供物理隔離,可以實現(xiàn)真正的一卡多用并保證卡上多個應用及其數(shù)據(jù)的安全。
(文/武漢大學計算機科學學院,徐中華,劉玉珍, 張煥國)