引言
智能卡或稱 IC 卡,,英文名稱為SMART Card 或Integrated CircuitCard,。它是由一個集成電路芯片嵌
于塑料基片中封裝而成,??ㄖ械募呻娐钒ㄖ醒胩幚砥鳎–PU) ,,閃存(EEPROM),、隨機存儲器 (RAM),、只讀存儲器(ROM)等[1],。動態(tài)多應用智能卡允許一張卡片上可以同時容納多個應用,并且在 不同的場合使用不同的應用,,同時應用本身還可以根據(jù)需要隨時下載到卡中或從卡中刪除,。這給供卡方、發(fā)卡方和持卡方都帶來了好處,。動態(tài)多應用智能卡將是智能卡未來發(fā)展的總趨勢,。
1 智能卡文件系統(tǒng)的設計模型
1.1 文件的類型及組織結構
本系統(tǒng)遵守ISO/IEC 781* 標準所定義文件標準。根據(jù)標準,,可以支持專用文件(DF)和基本文件(EF)兩種文件,??▋鹊奈募倪壿嫿M織結構由下列專用文件的結構化分級組成,在根處的DF 稱為主文件(MF),。該MF 是必備的,。其他DF是任選的。定義兩種類型的EF:1)內部EF(KEF),。 存儲那些預期由卡解釋的數(shù)據(jù),。如密鑰。2)工作EF(WEF),。存儲那些預期不由卡解釋的數(shù)據(jù),。
EF 結構有以下幾種,
1)透明結構,。指的是二進制的或雜亂無章的結構,。換句話說,一個透明文 件根本沒有內部結構,。該結構的文件可以通過使用偏移值進行讀出和寫入,。READ BINARY和 UPDATE BINARY 命令可用于這些方面。
2)記錄結構,。是基于鏈接固定長度的記錄文件結構,,這種 結構的數(shù)據(jù)可以自由存儲,存取的最小單位是一個記錄,。該操作系統(tǒng)支持線性定長記錄結構,,并且記錄長度必須為4 個字節(jié)的偶數(shù)倍數(shù),并且小于一頁大小,,這樣就防止一條記錄跨頁存儲,。
文件的邏輯組織結構如圖 1 所示。文件系統(tǒng)是一個樹型結構,,根目錄為MF,。MF(主文件)是 特殊的文件,是文件系統(tǒng)的根,,在卡片中唯一存在,,相當于DOS的根目錄。EF(基本文件)建在DF 下,,存儲應用的各種數(shù)據(jù)和管理信息,。DF(專有文件)一般僅相當于DOS 的子目錄,但主文件MF 的一個DF則代表了一個應用,。MF 下和應用的根DF 下都有一KEF,,用于存儲密鑰或PIN。MF 下的 DF 中建立的EF 和DF 都只能由該應用使用,其他應用不能訪問,。
智能卡中的目錄文件(MF 和DF)僅由文件頭標組成,,EF 文件是由文件頭標和文件體兩部分組
成的。文件頭中包含文件的標識,、大小,、訪問權限和其他基本信息。文件頭的長度是一定的,。EF 的
文件體就是各種卡片應用所需的數(shù)據(jù)元,。其大小是在文件創(chuàng)建時就確定的。
1.2 文件訪問以及文件管理
所有EF 文件頭中都含有屬性字段,,指明此文件的特殊信息,。屬性字段占兩字節(jié),字段中的每一
比特位代表一種屬性,。它們在創(chuàng)建時確定,不允許更改,。目前只使用了前三個比特位,,分別是:
1)可刪除屬性。此屬性位為1 表示可以被刪除,,0 表示不可被刪除,。
2)可寫屬性。此屬性位為1 表示可以被修改,,0 則表明此文件為只讀文件,。
3)可讀屬性。此屬性位為1 表明此文件可以被瀏覽,,0 表示不可以被瀏覽,。
應用要對文件訪問需要達到一定的安全狀態(tài)。當該應用的進程現(xiàn)有狀態(tài)滿足所需要狀態(tài),,并且符
合和該文件的屬性要求時,,該進程才能訪問文件。當前進程的安全狀態(tài)是由其是否滿足當前目錄文件 下的KEF 中的相應密鑰決定的,。在MF下僅有DF(應用目錄),,沒有EF 文件,其KEF 則只含有創(chuàng) 建密鑰,,讀密鑰,,刪除密鑰。而一般的KEF 文件中含有四個密鑰,,分別是讀密鑰,,寫密鑰, 創(chuàng)建密鑰,刪除密鑰,。
為了方便文件管理,,有一些典型變量要保存在 RAM 中,把這些變量封裝成一個結構體CMB,, 放在進程的PCB 中,。一個CMB塊包含如下變量:1)mfhead。此變量總指向最高層MF 文件頭地址,。 2)mfsecurity,。此變量表明MF達到的安全狀態(tài)。其初始值在進程建立時賦值,。3)dfsecurity,。此變量 表明現(xiàn)行選擇的DF達到的安全狀態(tài)。其初值在進程建立時賦值,。4)currentdf,、currentwef。這兩個 變量分別為當前DF,、當前WEF文件頭地址,。在進程時它們的值為NULL,在進程運行過程中由 SELECT 命令顯式賦值,。5)currentrecord_adr,。此變量在當前WEF為記錄結構時使用,它指向當前使 用記錄號,, 如為透明文件,,無效地址。在進程建立或者重新選擇WEF 時,,其值被賦為0,。由記錄結構 WEF讀、寫命令更改,。6)currentef_kef,。此變量為當前DF 下KEF 文件頭地址。當創(chuàng)建進程時,,就 會創(chuàng)建一個CMB 塊,,其 currentdf被賦為當時正在訪問的DF,安全狀態(tài)被賦為0,。如果currentdf 為 0 時,,表示當前的工作目錄為MF。
1.3 EEPROM 的劃分
該智能卡的EEPROM大小為256K,,其中分為應用數(shù)據(jù)區(qū)(32K),,應用代碼去(160K),系統(tǒng)區(qū) (16K)以及交換區(qū)(48K)。
應用數(shù)據(jù)區(qū)存放著應用的配置數(shù)據(jù),,并且都是以文件的形式存儲的,。應用數(shù)據(jù)區(qū)的 EEPROM 是 以頁的形式動態(tài)分配給各個應用,每頁大小為32字節(jié),。每個文件的頁地址信息由文件分配表詳細記 錄,。應用代碼區(qū)存放著應用的運行代碼。應用代碼區(qū)分為40 塊,,每塊大小為4K,。塊和應用是一一對應的關系,即每塊對映一個應用,。系統(tǒng)區(qū):存放操作系統(tǒng)的信息以及用于管理應用及文件的一些系統(tǒng)表:應用使用表,,文件分配表,文件打開表,,數(shù)據(jù)區(qū)使用表,。文件打開表是用來防止讀寫沖突的,當某文件正在被改寫時,,需要給該文件上鎖,,等對該文件操作完成后再對該文件解鎖。
數(shù)據(jù)區(qū)使用表記錄了應用數(shù)據(jù)文件在數(shù)據(jù)區(qū)的存儲情況,,當一個應用要訪問某一個數(shù)據(jù)文件時,需要查看該表,,檢查該文件是否屬于該應用,,防止應用篡改其他應用的數(shù)據(jù)文件。操作系統(tǒng)的信息用超級塊記錄,。交換區(qū) 就是當內存不足時,,使用交換區(qū)來擴充內存。
2 文件系統(tǒng)
2.1 文件分配表
該操作系統(tǒng)中,,文件系統(tǒng)僅設計到應用數(shù)據(jù)區(qū),,和應用系統(tǒng)區(qū)以及應用代碼去無關,所以文件系 統(tǒng)占32K 的EEPROM空間,。數(shù)據(jù)區(qū)是以頁的形式分配給文件的,,每頁大小是32 字節(jié),共設有1024 頁,。存儲在系統(tǒng)區(qū)的文件分配表占用1K 空間,。分配表如圖2 所示:該表一共有1024頁(用十六進制 表示),第1 頁代表數(shù)據(jù)區(qū)的前32 個字節(jié),,以后依次類推,。當表項為FFFF,表示文件結束。當記錄 為FFFE時,,該頁可用,。每頁的表項記錄該文件下一頁的頁碼。如圖所示,。該文件占用的頁碼分別是 1,,0xC,0xD,,0x10,,0x14。
2.2 文件管理的指令
1)SELECT FILE(選擇文件):建立文件成功后,,才能進行文件選擇,,面向對象文件管理系統(tǒng)要
求在文件被選中之后才可以進行存取處理。文件選擇就是通知操作系統(tǒng)即將對哪個文件進行訪問,。新
文件的成功選擇將導致前面的選擇無效,。這就意味著在任何時候被選中的文件只有一個。該文件系統(tǒng) 的支持根據(jù)文件的FID進行文件的選擇,。
2)CREATE FILE(創(chuàng)建文件):該命令允許在智能卡中建立EF,、KEF、DF,。在執(zhí)行該命令之前,, 必須先達到特定的安全狀態(tài)。在創(chuàng)建時,,判斷創(chuàng)建地址是否有效,,即CMB塊的相應地址。同時創(chuàng)建 時會影響目錄樹的結構,,可能需要修改其父親節(jié)點或者其兄弟節(jié)點,,因此要檢測所影響的結點是否可以訪問,如果需要修改的節(jié)點不可被訪問,,該命令則不能執(zhí)行,。對于EF 和KEF,他們都擁有文件體,,則根據(jù)其大小具體分配,。在申請頁面時,一次把所需要的頁數(shù)全部分配給該文件,,并且在文件分配表里建立好映像,。然后文件系統(tǒng)再根據(jù)文件分配表,把文件體寫入EEPROM中,。
3)DELETE FILE(刪除文件):是把指定的智能卡的文件從存儲器中刪除,,其釋放的存儲空間由
操作系統(tǒng)收回,。文件系統(tǒng)的文件是存儲在應用數(shù)據(jù)區(qū),因此該命令的操作對象是數(shù)據(jù)區(qū)的文件,,并不 涉及其他存儲區(qū)域的數(shù)據(jù),。MF 為文件系統(tǒng)的根目錄,是不可被刪除的,。
KEF 為DF 中的密鑰文件,, 僅刪除KEF 會對其上層DF 造成極大的安全隱患,因此不提供單純的刪除KEF 操作,,把該操作是嵌入在刪除DF,。該命令分為兩類:刪除DF 和刪除EF。刪除DF 函數(shù)僅刪除沒有子DF 文件的DF文件,, 如果所刪除的DF 具有直接子DF 文件(可以有EF文件),,則DF 不能直接刪除,需要首先刪除子DF文件,,然后再使用本函數(shù)刪除,。該操作會影響其父親節(jié)點或兄弟節(jié)點以及子EF 節(jié)點,所以刪除之前需要查看文件打開表,,檢查這些文件是否可以訪問,,如果有不可以訪問的節(jié)點,則退出返回相應的錯 誤信息,。
當然執(zhí)行該操作之前,,必須達到一定的要求安全狀態(tài)。刪除EF 時,,操作對象是CMB 塊中 的當前工作文件EF,,因此要刪除某EF之前需要先選擇該文件。如果當前工作文件地址無效,,則返回相應的錯誤信息。當然執(zhí)行該操作之前,,必須達到一定的要求安全狀態(tài)并且該EF 具有可刪除屬性,。
4)VERIFY 命令用來把傳送給智能卡的秘密對象和所存儲的基準值相比較,根據(jù)比較結果,,改變CMB 塊中的安全狀態(tài),。該操作系統(tǒng)的密鑰存儲在密鑰文件KEF中,位于MF 的KEF 被用來作為 智能卡中所有應用通用的密鑰,,如果是DF 的KEF,,則它僅可用于在DF 內的有關應用,即應用的專用密鑰,。
該命令的操作對象默認為CMB塊中指向的當前所使用密鑰文件,。一般的密鑰文件含有四個密鑰,, 分別是:
(1)瀏覽密鑰:滿足該密鑰后,,可以讀該目錄下的所有EF 文件和子DF 頭標,。
(2)更新密 鑰:滿足該密鑰后,,可以在該目錄下的所有EF 文件中執(zhí)行更新操作,。
(3)刪除密鑰:滿足該密鑰后, 可以在該目錄下執(zhí)行刪除操作,。
?。?)創(chuàng)建操作:滿足該密鑰后,可以在該目錄下執(zhí)行刪除操作,。因此,, verify 函數(shù)就是判斷其滿足相應的密鑰,然后改變CMB塊中的安全狀態(tài),,使其可以執(zhí)行后需操作,。
對于每一個密鑰都有一個重試計數(shù)器。對于肯定的比較結果,,它被賦予零,,對于否定的比較結果,
它增量1,。如果重試計數(shù)器達到對大值,,則絕對沒有任何可能再進行對密鑰的進一步比較。為了保證
安全,,先對計數(shù)器字段加一并寫入到記錄中,。然后比較讀出密鑰和輸入密鑰是否匹配。匹配則將0 寫 入到記錄的計數(shù)器字段中,,并將安全狀態(tài)設置為OK結果狀態(tài),。否則將安全狀態(tài)設置為NOK 結果狀 態(tài),并返回允許嘗試的剩余次數(shù)或記錄被鎖,。
3 結論
本文研究并設計動態(tài)多應用智能卡文件系統(tǒng),。利用文件分配表為每個文件建立映像,利用 CMB
塊進行文件管理,,設置文件訪問機制保證了每個應用的讀寫安全,,最后詳細設計文件操作命令,使得 應用可以對文件進行建立,,刪除等操作,。