動(dòng)態(tài)多應用智能卡文件系統的研究與設計
所有EF 文件頭中都含有屬性字段,指明此文件的特殊信息。屬性字段占兩字節,字段中的每一 比特位代表一種屬性。它們在創(chuàng )建時(shí)確定,不允許更改。目前只使用了前三個(gè)比特位,分別是:
1)可刪除屬性。此屬性位為1 表示可以被刪除,0 表示不可被刪除。
2)可寫(xiě)屬性。此屬性位為1 表示可以被修改,0 則表明此文件為只讀文件。
3)可讀屬性。此屬性位為1 表明此文件可以被瀏覽,0 表示不可以被瀏覽。
應用要對文件訪(fǎng)問(wèn)需要達到一定的安全狀態(tài)。當該應用的進(jìn)程現有狀態(tài)滿(mǎn)足所需要狀態(tài),并且符 合和該文件的屬性要求時(shí),該進(jìn)程才能訪(fǎng)問(wèn)文件。當前進(jìn)程的安全狀態(tài)是由其是否滿(mǎn)足當前目錄文件 下的KEF 中的相應密鑰決定的。在MF 下僅有DF(應用目錄),沒(méi)有EF 文件,其KEF 則只含有創(chuàng ) 建密鑰,讀密鑰,刪除密鑰。而一般的KEF 文件中含有四個(gè)密鑰,分別是讀密鑰,寫(xiě)密鑰, 創(chuàng )建密 鑰,刪除密鑰。
為了方便文件管理,有一些典型變量要保存在 RAM 中,把這些變量封裝成一個(gè)結構體CMB, 放在進(jìn)程的PCB 中。一個(gè)CMB 塊包含如下變量:1)mfhead。此變量總指向最高層MF 文件頭地址。 2)mfsecurity。此變量表明MF 達到的安全狀態(tài)。其初始值在進(jìn)程建立時(shí)賦值。3)dfsecurity。此變量 表明現行選擇的DF 達到的安全狀態(tài)。其初值在進(jìn)程建立時(shí)賦值。4)currentdf、currentwef。這兩個(gè) 變量分別為當前DF、當前WEF 文件頭地址。在進(jìn)程時(shí)它們的值為NULL,在進(jìn)程運行過(guò)程中由 SELECT 命令顯式賦值。5)currentrecord_adr。此變量在當前WEF 為記錄結構時(shí)使用,它指向當前使 用記錄號, 如為透明文件,無(wú)效地址。在進(jìn)程建立或者重新選擇WEF 時(shí),其值被賦為0。由記錄結構 WEF 讀、寫(xiě)命令更改。6)currentef_kef。此變量為當前DF 下KEF 文件頭地址。當創(chuàng )建進(jìn)程時(shí),就 會(huì )創(chuàng )建一個(gè)CMB 塊,其 currentdf 被賦為當時(shí)正在訪(fǎng)問(wèn)的DF,安全狀態(tài)被賦為0。如果currentdf 為 0 時(shí),表示當前的工作目錄為MF。
1.3 EEPROM 的劃分
該智能卡的EEPROM 大小為256K,其中分為應用數據區(32K),應用代碼去(160K),系統區 (16K)以及交換區(48K)。
應用數據區存放著(zhù)應用的配置數據,并且都是以文件的形式存儲的。應用數據區的 EEPROM 是 以頁(yè)的形式動(dòng)態(tài)分配給各個(gè)應用,每頁(yè)大小為32 字節。每個(gè)文件的頁(yè)地址信息由文件分配表詳細記 錄。應用代碼區存放著(zhù)應用的運行代碼。應用代碼區分為40 塊,每塊大小為4K。塊和應用是一一對 應的關(guān)系,即每塊對映一個(gè)應用。系統區:存放操作系統的信息以及用于管理應用及文件的一些系統 表:應用使用表,文件分配表,文件打開(kāi)表,數據區使用表。文件打開(kāi)表是用來(lái)防止讀寫(xiě)沖突的,當 某文件正在被改寫(xiě)時(shí),需要給該文件上鎖,等對該文件操作完成后再對該文件解鎖。
數據區使用表記錄了應用數據文件在數據區的存儲情況,當一個(gè)應用要訪(fǎng)問(wèn)某一個(gè)數據文件時(shí),需要查看該表,檢查 該文件是否屬于該應用,防止應用篡改其他應用的數據文件。操作系統的信息用超級塊記錄。交換區 就是當內存不足時(shí),使用交換區來(lái)擴充內存。
2 文件系統
2.1 文件分配表
該操作系統中,文件系統僅設計到應用數據區,和應用系統區以及應用代碼去無(wú)關(guān),所以文件系 統占32K 的EEPROM 空間。數據區是以頁(yè)的形式分配給文件的,每頁(yè)大小是32 字節,共設有1024 頁(yè)。存儲在系統區的文件分配表占用1K 空間。分配表如圖2 所示:該表一共有1024 頁(yè)(用十六進(jìn)制 表示),第1 頁(yè)代表數據區的前32 個(gè)字節,以后依次類(lèi)推。當表項為FFFF,表示文件結束。當記錄 為FFFE 時(shí),該頁(yè)可用。每頁(yè)的表項記錄該文件下一頁(yè)的頁(yè)碼。如圖所示。該文件占用的頁(yè)碼分別是 1,0xC,0xD,0x10,0x14。
評論