《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 動(dòng)態(tài)多應(yīng)用智能卡文件系統(tǒng)的研究與設(shè)計(jì)
動(dòng)態(tài)多應(yīng)用智能卡文件系統(tǒng)的研究與設(shè)計(jì)
維庫開發(fā)網(wǎng)
來源:RFID中國(guó)網(wǎng)
摘要: 本文根據(jù)ISO7816國(guó)際標(biāo)準(zhǔn),設(shè)計(jì)了智能卡文件類型及組織結(jié)構(gòu),、文件訪問及管理,同時(shí)詳細(xì)設(shè)計(jì)了文件系統(tǒng)中文件分配表和文件管理指令,使其可以滿足動(dòng)態(tài)存儲(chǔ)應(yīng)用的需求。
Abstract:
Key words :

   引言
  智能卡或稱 IC 卡,,英文名稱為SMART Card 或Integrated CircuitCard,。它是由一個(gè)集成電路芯片
于塑料基片中封裝而成,。卡中的集成電路包括中央處理器(CPU) ,,閃存(EEPROM),、隨機(jī)存儲(chǔ)器 (RAM)、只讀存儲(chǔ)器(ROM)等[1],。動(dòng)態(tài)多應(yīng)用智能卡允許一張卡片上可以同時(shí)容納多個(gè)應(yīng)用,,并且在 不同的場(chǎng)合使用不同的應(yīng)用,同時(shí)應(yīng)用本身還可以根據(jù)需要隨時(shí)下載到卡中或從卡中刪除,。這給供卡方,、發(fā)卡方和持卡方都帶來了好處。動(dòng)態(tài)多應(yīng)用智能卡將是智能卡未來發(fā)展的總趨勢(shì),。
  1 智能卡文件系統(tǒng)的設(shè)計(jì)模型
  1.1 文件的類型及組織結(jié)構(gòu)

  本系統(tǒng)遵守ISO/IEC 781* 標(biāo)準(zhǔn)所定義文件標(biāo)準(zhǔn),。根據(jù)標(biāo)準(zhǔn),可以支持專用文件(DF)和基本文件(EF)兩種文件,??▋?nèi)的文件的邏輯組織結(jié)構(gòu)由下列專用文件的結(jié)構(gòu)化分級(jí)組成,在根處的DF 稱為主文件(MF),。該MF 是必備的,。其他DF是任選的。定義兩種類型的EF:1)內(nèi)部EF(KEF),。 存儲(chǔ)那些預(yù)期由卡解釋的數(shù)據(jù),。如密鑰。2)工作EF(WEF),。存儲(chǔ)那些預(yù)期不由卡解釋的數(shù)據(jù),。
  EF 結(jié)構(gòu)有以下幾種,
  1)透明結(jié)構(gòu),。指的是二進(jìn)制的或雜亂無章的結(jié)構(gòu),。換句話說,一個(gè)透明文 件根本沒有內(nèi)部結(jié)構(gòu),。該結(jié)構(gòu)的文件可以通過使用偏移值進(jìn)行讀出和寫入,。READ BINARY和 UPDATE BINARY 命令可用于這些方面,。
  2)記錄結(jié)構(gòu)。是基于鏈接固定長(zhǎng)度的記錄文件結(jié)構(gòu),,這種 結(jié)構(gòu)的數(shù)據(jù)可以自由存儲(chǔ),,存取的最小單位是一個(gè)記錄。該操作系統(tǒng)支持線性定長(zhǎng)記錄結(jié)構(gòu),,并且記錄長(zhǎng)度必須為4 個(gè)字節(jié)的偶數(shù)倍數(shù),,并且小于一頁大小,這樣就防止一條記錄跨頁存儲(chǔ),。
  文件的邏輯組織結(jié)構(gòu)如圖 1 所示,。文件系統(tǒng)是一個(gè)樹型結(jié)構(gòu),根目錄為MF,。MF(主文件)是 特殊的文件,,是文件系統(tǒng)的根,在卡片中唯一存在,,相當(dāng)于DOS的根目錄,。EF(基本文件)建在DF 下,存儲(chǔ)應(yīng)用的各種數(shù)據(jù)和管理信息,。DF(專有文件)一般僅相當(dāng)于DOS 的子目錄,,但主文件MF 的一個(gè)DF則代表了一個(gè)應(yīng)用。MF 下和應(yīng)用的根DF 下都有一KEF,,用于存儲(chǔ)密鑰或PIN,。MF 下的 DF 中建立的EF 和DF 都只能由該應(yīng)用使用,,其他應(yīng)用不能訪問,。


  智能卡中的目錄文件(MF 和DF)僅由文件頭標(biāo)組成,EF 文件是由文件頭標(biāo)和文件體兩部分組
成的,。文件頭中包含文件的標(biāo)識(shí),、大小、訪問權(quán)限和其他基本信息,。文件頭的長(zhǎng)度是一定的,。EF 的
      文件體就是各種卡片應(yīng)用所需的數(shù)據(jù)元。其大小是在文件創(chuàng)建時(shí)就確定的,。

 1.2 文件訪問以及文件管理
  所有EF 文件頭中都含有屬性字段,,指明此文件的特殊信息。屬性字段占兩字節(jié),,字段中的每一
比特位代表一種屬性,。它們?cè)趧?chuàng)建時(shí)確定,不允許更改,。目前只使用了前三個(gè)比特位,,分別是:
  1)可刪除屬性,。此屬性位為1 表示可以被刪除,0 表示不可被刪除,。
  2)可寫屬性,。此屬性位為1 表示可以被修改,0 則表明此文件為只讀文件,。
  3)可讀屬性,。此屬性位為1 表明此文件可以被瀏覽,0 表示不可以被瀏覽,。
  應(yīng)用要對(duì)文件訪問需要達(dá)到一定的安全狀態(tài),。當(dāng)該應(yīng)用的進(jìn)程現(xiàn)有狀態(tài)滿足所需要狀態(tài),并且符
合和該文件的屬性要求時(shí),,該進(jìn)程才能訪問文件,。當(dāng)前進(jìn)程的安全狀態(tài)是由其是否滿足當(dāng)前目錄文件 下的KEF 中的相應(yīng)密鑰決定的。在MF下僅有DF(應(yīng)用目錄),,沒有EF 文件,,其KEF 則只含有創(chuàng) 建密鑰,讀密鑰,,刪除密鑰,。而一般的KEF 文件中含有四個(gè)密鑰,分別是讀密鑰,,寫密鑰,, 創(chuàng)建密鑰,刪除密鑰,。
  為了方便文件管理,,有一些典型變量要保存在 RAM 中,把這些變量封裝成一個(gè)結(jié)構(gòu)體CMB,, 放在進(jìn)程的PCB 中,。一個(gè)CMB塊包含如下變量:1)mfhead。此變量總指向最高層MF 文件頭地址,。 2)mfsecurity,。此變量表明MF達(dá)到的安全狀態(tài)。其初始值在進(jìn)程建立時(shí)賦值,。3)dfsecurity,。此變量 表明現(xiàn)行選擇的DF達(dá)到的安全狀態(tài)。其初值在進(jìn)程建立時(shí)賦值,。4)currentdf,、currentwef。這兩個(gè) 變量分別為當(dāng)前DF、當(dāng)前WEF文件頭地址,。在進(jìn)程時(shí)它們的值為NULL,,在進(jìn)程運(yùn)行過程中由 SELECT 命令顯式賦值。5)currentrecord_adr,。此變量在當(dāng)前WEF為記錄結(jié)構(gòu)時(shí)使用,,它指向當(dāng)前使 用記錄號(hào), 如為透明文件,,無效地址,。在進(jìn)程建立或者重新選擇WEF 時(shí),其值被賦為0,。由記錄結(jié)構(gòu) WEF讀,、寫命令更改。6)currentef_kef,。此變量為當(dāng)前DF 下KEF 文件頭地址,。當(dāng)創(chuàng)建進(jìn)程時(shí),就 會(huì)創(chuàng)建一個(gè)CMB 塊,,其 currentdf被賦為當(dāng)時(shí)正在訪問的DF,,安全狀態(tài)被賦為0。如果currentdf 為 0 時(shí),,表示當(dāng)前的工作目錄為MF,。

 1.3 EEPROM 的劃分

      該智能卡的EEPROM大小為256K,其中分為應(yīng)用數(shù)據(jù)區(qū)(32K),,應(yīng)用代碼去(160K),,系統(tǒng)區(qū) (16K)以及交換區(qū)(48K)。
  應(yīng)用數(shù)據(jù)區(qū)存放著應(yīng)用的配置數(shù)據(jù),,并且都是以文件的形式存儲(chǔ)的,。應(yīng)用數(shù)據(jù)區(qū)的 EEPROM 是 以頁的形式動(dòng)態(tài)分配給各個(gè)應(yīng)用,每頁大小為32字節(jié),。每個(gè)文件的頁地址信息由文件分配表詳細(xì)記 錄,。應(yīng)用代碼區(qū)存放著應(yīng)用的運(yùn)行代碼,。應(yīng)用代碼區(qū)分為40 塊,,每塊大小為4K。塊和應(yīng)用是一一對(duì)應(yīng)的關(guān)系,,即每塊對(duì)映一個(gè)應(yīng)用,。系統(tǒng)區(qū):存放操作系統(tǒng)的信息以及用于管理應(yīng)用及文件的一些系統(tǒng)表:應(yīng)用使用表,文件分配表,,文件打開表,,數(shù)據(jù)區(qū)使用表。文件打開表是用來防止讀寫沖突的,當(dāng)某文件正在被改寫時(shí),,需要給該文件上鎖,,等對(duì)該文件操作完成后再對(duì)該文件解鎖。
  數(shù)據(jù)區(qū)使用表記錄了應(yīng)用數(shù)據(jù)文件在數(shù)據(jù)區(qū)的存儲(chǔ)情況,,當(dāng)一個(gè)應(yīng)用要訪問某一個(gè)數(shù)據(jù)文件時(shí),,需要查看該表,檢查該文件是否屬于該應(yīng)用,,防止應(yīng)用篡改其他應(yīng)用的數(shù)據(jù)文件,。操作系統(tǒng)的信息用超級(jí)塊記錄。交換區(qū) 就是當(dāng)內(nèi)存不足時(shí),,使用交換區(qū)來擴(kuò)充內(nèi)存,。
  2 文件系統(tǒng)
  2.1 文件分配表

       該操作系統(tǒng)中,文件系統(tǒng)僅設(shè)計(jì)到應(yīng)用數(shù)據(jù)區(qū),,和應(yīng)用系統(tǒng)區(qū)以及應(yīng)用代碼去無關(guān),,所以文件系 統(tǒng)占32K 的EEPROM空間。數(shù)據(jù)區(qū)是以頁的形式分配給文件的,,每頁大小是32 字節(jié),,共設(shè)有1024 頁。存儲(chǔ)在系統(tǒng)區(qū)的文件分配表占用1K 空間,。分配表如圖2 所示:該表一共有1024頁(用十六進(jìn)制 表示),,第1 頁代表數(shù)據(jù)區(qū)的前32 個(gè)字節(jié),以后依次類推,。當(dāng)表項(xiàng)為FFFF,,表示文件結(jié)束。當(dāng)記錄 為FFFE時(shí),,該頁可用,。每頁的表項(xiàng)記錄該文件下一頁的頁碼。如圖所示,。該文件占用的頁碼分別是 1,,0xC,0xD,,0x10,,0x14。


  2.2 文件管理的指令
  1)SELECT FILE(選擇文件):建立文件成功后,,才能進(jìn)行文件選擇,,面向?qū)ο笪募芾硐到y(tǒng)要
求在文件被選中之后才可以進(jìn)行存取處理。文件選擇就是通知操作系統(tǒng)即將對(duì)哪個(gè)文件進(jìn)行訪問,。新
文件的成功選擇將導(dǎo)致前面的選擇無效,。這就意味著在任何時(shí)候被選中的文件只有一個(gè),。該文件系統(tǒng) 的支持根據(jù)文件的FID進(jìn)行文件的選擇。

     2)CREATE FILE(創(chuàng)建文件):該命令允許在智能卡中建立EF,、KEF,、DF。在執(zhí)行該命令之前,, 必須先達(dá)到特定的安全狀態(tài),。在創(chuàng)建時(shí),判斷創(chuàng)建地址是否有效,,即CMB塊的相應(yīng)地址,。同時(shí)創(chuàng)建 時(shí)會(huì)影響目錄樹的結(jié)構(gòu),可能需要修改其父親節(jié)點(diǎn)或者其兄弟節(jié)點(diǎn),,因此要檢測(cè)所影響的結(jié)點(diǎn)是否可以訪問,,如果需要修改的節(jié)點(diǎn)不可被訪問,該命令則不能執(zhí)行,。對(duì)于EF 和KEF,,他們都擁有文件體,則根據(jù)其大小具體分配,。在申請(qǐng)頁面時(shí),,一次把所需要的頁數(shù)全部分配給該文件,并且在文件分配表里建立好映像,。然后文件系統(tǒng)再根據(jù)文件分配表,,把文件體寫入EEPROM中。
    3)DELETE FILE(刪除文件):是把指定的智能卡的文件從存儲(chǔ)器中刪除,,其釋放的存儲(chǔ)空間由
操作系統(tǒng)收回,。文件系統(tǒng)的文件是存儲(chǔ)在應(yīng)用數(shù)據(jù)區(qū),因此該命令的操作對(duì)象是數(shù)據(jù)區(qū)的文件,,并不 涉及其他存儲(chǔ)區(qū)域的數(shù)據(jù),。MF 為文件系統(tǒng)的根目錄,是不可被刪除的,。
  KEF 為DF 中的密鑰文件,, 僅刪除KEF 會(huì)對(duì)其上層DF 造成極大的安全隱患,因此不提供單純的刪除KEF 操作,,把該操作是嵌入在刪除DF,。該命令分為兩類:刪除DF 和刪除EF。刪除DF 函數(shù)僅刪除沒有子DF 文件的DF文件,, 如果所刪除的DF 具有直接子DF 文件(可以有EF文件),,則DF 不能直接刪除,需要首先刪除子DF文件,,然后再使用本函數(shù)刪除。該操作會(huì)影響其父親節(jié)點(diǎn)或兄弟節(jié)點(diǎn)以及子EF 節(jié)點(diǎn),所以刪除之前需要查看文件打開表,,檢查這些文件是否可以訪問,,如果有不可以訪問的節(jié)點(diǎn),則退出返回相應(yīng)的錯(cuò) 誤信息,。
  當(dāng)然執(zhí)行該操作之前,,必須達(dá)到一定的要求安全狀態(tài)。刪除EF 時(shí),,操作對(duì)象是CMB 塊中 的當(dāng)前工作文件EF,,因此要?jiǎng)h除某EF之前需要先選擇該文件。如果當(dāng)前工作文件地址無效,,則返回相應(yīng)的錯(cuò)誤信息,。當(dāng)然執(zhí)行該操作之前,必須達(dá)到一定的要求安全狀態(tài)并且該EF 具有可刪除屬性,。
  4)VERIFY 命令用來把傳送給智能卡的秘密對(duì)象和所存儲(chǔ)的基準(zhǔn)值相比較,,根據(jù)比較結(jié)果,改變CMB 塊中的安全狀態(tài),。該操作系統(tǒng)的密鑰存儲(chǔ)在密鑰文件KEF中,,位于MF 的KEF 被用來作為 智能卡中所有應(yīng)用通用的密鑰,如果是DF 的KEF,,則它僅可用于在DF 內(nèi)的有關(guān)應(yīng)用,,即應(yīng)用的專用密鑰。
  該命令的操作對(duì)象默認(rèn)為CMB塊中指向的當(dāng)前所使用密鑰文件,。一般的密鑰文件含有四個(gè)密鑰,, 分別是:
  (1)瀏覽密鑰:滿足該密鑰后,,可以讀該目錄下的所有EF 文件和子DF 頭標(biāo),。
  (2)更新密 鑰:滿足該密鑰后,,可以在該目錄下的所有EF 文件中執(zhí)行更新操作,。

       (3)刪除密鑰:滿足該密鑰后, 可以在該目錄下執(zhí)行刪除操作,。
 ?。?)創(chuàng)建操作:滿足該密鑰后,可以在該目錄下執(zhí)行刪除操作,。因此,, verify 函數(shù)就是判斷其滿足相應(yīng)的密鑰,然后改變CMB塊中的安全狀態(tài),,使其可以執(zhí)行后需操作,。
  對(duì)于每一個(gè)密鑰都有一個(gè)重試計(jì)數(shù)器,。對(duì)于肯定的比較結(jié)果,它被賦予零,,對(duì)于否定的比較結(jié)果,,
它增量1。如果重試計(jì)數(shù)器達(dá)到對(duì)大值,,則絕對(duì)沒有任何可能再進(jìn)行對(duì)密鑰的進(jìn)一步比較,。為了保證
安全,先對(duì)計(jì)數(shù)器字段加一并寫入到記錄中,。然后比較讀出密鑰和輸入密鑰是否匹配,。匹配則將0 寫 入到記錄的計(jì)數(shù)器字段中,并將安全狀態(tài)設(shè)置為OK結(jié)果狀態(tài),。否則將安全狀態(tài)設(shè)置為NOK 結(jié)果狀 態(tài),,并返回允許嘗試的剩余次數(shù)或記錄被鎖。
  3 結(jié)論
  本文研究并設(shè)計(jì)動(dòng)態(tài)多應(yīng)用智能卡文件系統(tǒng),。利用文件分配表為每個(gè)文件建立映像,,利用 CMB
塊進(jìn)行文件管理,設(shè)置文件訪問機(jī)制保證了每個(gè)應(yīng)用的讀寫安全,,最后詳細(xì)設(shè)計(jì)文件操作命令,,使得 應(yīng)用可以對(duì)文件進(jìn)行建立,刪除等操作,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。