動(dòng)態(tài)多應(yīng)用智能卡文件系統(tǒng)分析
2012年11月06日 16:54$artinfo.Reprint點(diǎn)擊量:1353
引言
智能卡或稱IC卡,英文名稱為SMARTCard或IntegratedCircuitCard。它是由一個(gè)集成電路芯片嵌于塑料基片中封裝而成??ㄖ械募呻娐钒ㄖ醒胩幚砥鳎–PU),閃存(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ā)卡方和持卡方都帶來(lái)了好處。動(dòng)態(tài)多應(yīng)用智能卡將是智能卡未來(lái)發(fā)展的總趨勢(shì)。
1智能卡文件系統(tǒng)的設(shè)計(jì)模型
1.1文件的類型及組織結(jié)構(gòu)
本系統(tǒng)遵守ISO/IEC781*標(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)制的或雜亂無(wú)章的結(jié)構(gòu)。換句話說(shuō),一個(gè)透明文件根本沒(méi)有內(nèi)部結(jié)構(gòu)。該結(jié)構(gòu)的文件可以通過(guò)使用偏移值進(jìn)行讀出和寫入。READBINARY和UPDATEBINARY命令可用于這些方面。
2)記錄結(jié)構(gòu)。是基于鏈接固定長(zhǎng)度的記錄文件結(jié)構(gòu),這種結(jié)構(gòu)的數(shù)據(jù)可以自由存儲(chǔ),存取的zui小單位是一個(gè)記錄。該操作系統(tǒng)支持線性定長(zhǎng)記錄結(jié)構(gòu),并且記錄長(zhǎng)度必須為4個(gè)字節(jié)的偶數(shù)倍數(shù),并且小于一頁(yè)大小,這樣就防止一條記錄跨頁(yè)存儲(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)用不能訪問(wèn)。
智能卡中的目錄文件(MF和DF)僅由文件頭標(biāo)組成,EF文件是由文件頭標(biāo)和文件體兩部分組成的。文件頭中包含文件的標(biāo)識(shí)、大小、訪問(wèn)權(quán)限和其他基本信息。文件頭的長(zhǎng)度是一定的。EF的文件體就是各種卡片應(yīng)用所需的數(shù)據(jù)元。其大小是在文件創(chuàng)建時(shí)就確定的。
1.2文件訪問(wèn)以及文件管理
所有EF文件頭中都含有屬性字段,指明此文件的特殊信息。屬性字段占兩字節(jié),字段中的每一比特位代表一種屬性。它們?cè)趧?chuàng)建時(shí)確定,不允許更改。目前只使用了前三個(gè)比特位,分別是:
1)可刪除屬性。此屬性位為1表示可以被刪除,0表示不可被刪除。
2)可寫屬性。此屬性位為1表示可以被修改,0則表明此文件為只讀文件。
3)可讀屬性。此屬性位為1表明此文件可以被瀏覽,0表示不可以被瀏覽。
應(yīng)用要對(duì)文件訪問(wèn)需要達(dá)到一定的安全狀態(tài)。當(dāng)該應(yīng)用的進(jìn)程現(xiàn)有狀態(tài)滿足所需要狀態(tài),并且符合和該文件的屬性要求時(shí),該進(jìn)程才能訪問(wèn)文件。當(dāng)前進(jìn)程的安全狀態(tài)是由其是否滿足當(dāng)前目錄文件下的KEF中的相應(yīng)密鑰決定的。在MF下僅有DF(應(yīng)用目錄),沒(méi)有EF文件,其KEF則只含有創(chuàng)建密鑰,讀密鑰,刪除密鑰。而一般的KEF文件中含有四個(gè)密鑰,分別是讀密鑰,寫密鑰,創(chuàng)建密鑰,刪除密鑰。
為了方便文件管理,有一些典型變量要保存在RAM中,把這些變量封裝成一個(gè)結(jié)構(gòu)體CMB,放在進(jìn)程的PCB中。一個(gè)CMB塊包含如下變量:1)mfhead。此變量總指向zui高層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)行過(guò)程中由SELECT命令顯式賦值。5)currentrecord_adr。此變量在當(dāng)前WEF為記錄結(jié)構(gòu)時(shí)使用,它指向當(dāng)前使用記錄號(hào),如為透明文件,無(wú)效地址。在進(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í)正在訪問(wèn)的DF,安全狀態(tài)被賦為0。如果currentdf為0時(shí),表示當(dāng)前的工作目錄為MF。
1.3EEPROM的劃分該智能卡的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是以頁(yè)的形式動(dòng)態(tài)分配給各個(gè)應(yīng)用,每頁(yè)大小為32字節(jié)。每個(gè)文件的頁(yè)地址信息由文件分配表詳細(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ū)使用表。文件打開表是用來(lái)防止讀寫沖突的,當(dāng)某文件正在被改寫時(shí),需要給該文件上鎖,等對(duì)該文件操作完成后再對(duì)該文件解鎖。
數(shù)據(jù)區(qū)使用表記錄了應(yīng)用數(shù)據(jù)文件在數(shù)據(jù)區(qū)的存儲(chǔ)情況,當(dāng)一個(gè)應(yīng)用要訪問(wèn)某一個(gè)數(shù)據(jù)文件時(shí),需要查看該表,檢查該文件是否屬于該應(yīng)用,防止應(yīng)用篡改其他應(yīng)用的數(shù)據(jù)文件。操作系統(tǒng)的信息用超級(jí)塊記錄。交換區(qū)就是當(dāng)內(nèi)存不足時(shí),使用交換區(qū)來(lái)擴(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)用代碼去無(wú)關(guān),所以文件系統(tǒng)占32K的EEPROM空間。數(shù)據(jù)區(qū)是以頁(yè)的形式分配給文件的,每頁(yè)大小是32字節(jié),共設(shè)有1024頁(yè)。存儲(chǔ)在系統(tǒng)區(qū)的文件分配表占用1K空間。分配表如圖2所示:該表一共有1024頁(yè)(用十六進(jìn)制表示),第1頁(yè)代表數(shù)據(jù)區(qū)的前32個(gè)字節(jié),以后依次類推。當(dāng)表項(xiàng)為FFFF,表示文件結(jié)束。當(dāng)記錄為FFFE時(shí),該頁(yè)可用。每頁(yè)的表項(xiàng)記錄該文件下一頁(yè)的頁(yè)碼。如圖所示。該文件占用的頁(yè)碼分別是1,0xC,0xD,0x10,0x14。
2.2文件管理的指令1)SELECTFILE(選擇文件):建立文件成功后,才能進(jìn)行文件選擇,面向?qū)ο笪募芾硐到y(tǒng)要求在文件被選中之后才可以進(jìn)行存取處理。文件選擇就是通知操作系統(tǒng)即將對(duì)哪個(gè)文件進(jìn)行訪問(wèn)。新文件的成功選擇將導(dǎo)致前面的選擇無(wú)效。這就意味著在任何時(shí)候被選中的文件只有一個(gè)。該文件系統(tǒng)的支持根據(jù)文件的FID進(jìn)行文件的選擇。
2)CREATEFILE(創(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)是否可以訪問(wèn),如果需要修改的節(jié)點(diǎn)不可被訪問(wèn),該命令則不能執(zhí)行。對(duì)于EF和KEF,他們都擁有文件體,則根據(jù)其大小具體分配。在申請(qǐng)頁(yè)面時(shí),一次把所需要的頁(yè)數(shù)全部分配給該文件,并且在文件分配表里建立好映像。然后文件系統(tǒng)再根據(jù)文件分配表,把文件體寫入EEPROM中。
3)DELETEFILE(刪除文件):是把的智能卡的文件從存儲(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ù)僅刪除沒(méi)有子DF文件的DF文件,如果所刪除的DF具有直接子DF文件(可以有EF文件),則DF不能直接刪除,需要首先刪除子DF文件,然后再使用本函數(shù)刪除。該操作會(huì)影響其父親節(jié)點(diǎn)或兄弟節(jié)點(diǎn)以及子EF節(jié)點(diǎn),所以刪除之前需要查看文件打開表,檢查這些文件是否可以訪問(wèn),如果有不可以訪問(wè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)前工作文件地址無(wú)效,則返回相應(yīng)的錯(cuò)誤信息。當(dāng)然執(zhí)行該操作之前,必須達(dá)到一定的要求安全狀態(tài)并且該EF具有可刪除屬性。
4)VERIFY命令用來(lái)把傳送給智能卡的秘密對(duì)象和所存儲(chǔ)的基準(zhǔn)值相比較,根據(jù)比較結(jié)果,改變CMB塊中的安全狀態(tài)。該操作系統(tǒng)的密鑰存儲(chǔ)在密鑰文件KEF中,位于MF的KEF被用來(lái)作為智能卡中所有應(yīng)用通用的密鑰,如果是DF的KEF,則它僅可用于在DF內(nèi)的有關(guān)應(yīng)用,即應(yīng)用的密鑰。
該命令的操作對(duì)象默認(rèn)為CMB塊中指向的當(dāng)前所使用密鑰文件。一般的密鑰文件含有四個(gè)密鑰,分別是:
?。?)瀏覽密鑰:滿足該密鑰后,可以讀該目錄下的所有EF文件和子DF頭標(biāo)。
?。?)更新密鑰:滿足該密鑰后,可以在該目錄下的所有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ì)大值,則沒(méi)有任何可能再進(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è)置文件訪問(wèn)機(jī)制保證了每個(gè)應(yīng)用的讀寫安全,zui后詳細(xì)設(shè)計(jì)文件操作命令,使得應(yīng)用可以對(duì)文件進(jìn)行建立,刪除等操作。
版權(quán)與免責(zé)聲明:
凡本網(wǎng)注明“來(lái)源:智慧城市網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-智慧城市網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來(lái)源:智慧城市網(wǎng)m.aiynx.com”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源(非智慧城市網(wǎng)m.aiynx.com)的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
-
免費(fèi)注冊(cè)后,你可以
了解安防行業(yè)更多資訊查看安防行業(yè)供求信息凸顯安防行業(yè)自身價(jià)值
馬上注冊(cè)會(huì)員
-
想快速被買家找到嗎
只需要發(fā)布一條商機(jī),被買家找到的機(jī)會(huì)高達(dá)90%!還等什么?
馬上發(fā)布信息