智能卡的文件系統(tǒng)
文章出處:http://www.fang1.net 作者:王 波,伍洲凱 人氣: 發(fā)表時(shí)間:2011年09月29日
1 智能卡簡(jiǎn)介
智能卡的名稱來(lái)源于英文名詞“Smartcard”,又稱集成電路卡,即IC 卡( Integrated Circuit card) 。它將一個(gè)集成電路芯片鑲嵌于塑料基片中,封裝成卡的形式,其外形與覆蓋磁條的磁卡相似。智能卡的概念是70 年代初提出來(lái)的,法國(guó)布爾(BULL) 公司于1976 年首先創(chuàng)造出智能卡產(chǎn)品,并將這項(xiàng)技術(shù)應(yīng)用到金融、交通、醫(yī)療、身份證明等多個(gè)行業(yè)。智能卡芯片具有寫(xiě)入數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)的能力,智能卡存儲(chǔ)器中的內(nèi)容根據(jù)需要可以有條件地供外部讀取和供內(nèi)部信息處理和判定之用。
根據(jù)智能卡中所鑲嵌的集成電路的不同可以分成以下三類:
(1) 存儲(chǔ)卡:卡中的集成電路為EEPROM(可用電擦除的可編程只讀存儲(chǔ)器) 。
(2) 加密存儲(chǔ)卡:卡中包含具有加密邏輯的集成電路和非易失存儲(chǔ)器。
(3) CPU 卡: 卡中的集成電路包括中央處理器CPU、EEPROM、隨機(jī)存儲(chǔ)器RAM以及固化在只讀存儲(chǔ)器ROM中的片內(nèi)操作系統(tǒng)COS(Chip Operating System) 。嚴(yán)格地講,只有CPU 卡才是真正的智能卡。按卡與外界數(shù)據(jù)傳送的形式來(lái)分,有接觸型智能卡和非接觸型智能卡兩種。
目前,最廣為人知的智能卡標(biāo)準(zhǔn)就是ISO7816。此標(biāo)準(zhǔn)主要定義了塑料基片的物理和尺寸特性, 觸點(diǎn)的尺寸和位置,信息交換的底層協(xié)議描述,以及跨行業(yè)的命令集等等。
2 智能卡的文件系統(tǒng)
2. 1 文件系統(tǒng)的組織結(jié)構(gòu)
智能卡的文件系統(tǒng)類似DOS 的樹(shù)形文件系統(tǒng)。ISO7816 支持兩類文件:DF(Dedicated File ) 和EF(Elementary File) 。DF 文件有點(diǎn)類似DOS 的目錄,而EF 文件則有點(diǎn)類似DOS 的數(shù)據(jù)文件。DF 文件之下的DF 文件,類似DOS 的子目錄。當(dāng)然,DF 之下還可以有DF 文件。同DOS 文件系統(tǒng)一樣,智能卡的文件系統(tǒng)也必須有一個(gè)根文件,這個(gè)根文件是一個(gè)DF 文件,我們把它稱為MF (Master File) 文件,MF 文件類似DOS 的根目錄。
在智能卡的文件系統(tǒng)結(jié)構(gòu)中,MF 文件有且只能有一個(gè);DF 文件是可選的,這兩種文件主要起管理和形成樹(shù)形的文件系統(tǒng)結(jié)構(gòu)的作用,真正存放數(shù)據(jù)的是EF 文件。
MF 文件是智能卡文件系統(tǒng)的根。在MF 文件下可以建立各種DF 和EF 文件。雖然系統(tǒng)允許在根下直接生成各種EF 應(yīng)用文件,但最佳的文件組織方法是每一種應(yīng)用均分配一個(gè)DF 文件,在相應(yīng)的DF 文件下再具體組織各種EF 應(yīng)用數(shù)據(jù)。
DF 文件含有文件控制信息和可分配的存儲(chǔ)空間的信息,其下可以建立各種DF 和EF 文件。一般而言,一個(gè)DF 文件將被用來(lái)存儲(chǔ)某一應(yīng)用的所有數(shù)據(jù)。DF 文件在用戶存儲(chǔ)器中占據(jù)一塊靜態(tài)存儲(chǔ)器,一旦DF 文件建立,其存儲(chǔ)器的大小就不能變動(dòng)。但在該DF 文件下的EF 文件則可以重新分配所使用存儲(chǔ)器大小,也可以被刪除。該DF 文件被刪除之后,其下的DF 和EF 文件也同時(shí)被刪除,釋放的存儲(chǔ)器塊可由其它DF 文件使用。
EF 文件是智能卡樹(shù)形文件系統(tǒng)的葉,其下不能再建立其他任何文件。
2. 2 文件系統(tǒng)的文件訪問(wèn)機(jī)制
當(dāng)訪問(wèn)一個(gè)文件時(shí),我們可以使用下面幾種方法中的至少一種來(lái)進(jìn)行:
(1) 通過(guò)文件標(biāo)志符(File Identifier) 來(lái)訪問(wèn)
在智能卡文件系統(tǒng)中每一個(gè)文件都有一個(gè)文件標(biāo)志符,它占用2 個(gè)字節(jié)。值“3FFF”和“FFFF”系統(tǒng)保留,不能用于具體的文件。對(duì)于MF 文件來(lái)說(shuō),它的文件標(biāo)志符必須為“3F00”。因此,當(dāng)我們?cè)L問(wèn)智能卡的文件系統(tǒng)時(shí),起點(diǎn)就是從文件標(biāo)志符為“3F00”的MF 文件開(kāi)始。
(2) 通過(guò)文件路徑來(lái)訪問(wèn)
所謂文件路徑,就是無(wú)分隔符的文件標(biāo)志符的串聯(lián)形式。智能卡文件系統(tǒng)的文件路徑起始于MF 文件或者當(dāng)前的DF 文件的文件標(biāo)志符,而以要訪問(wèn)的文件的文件標(biāo)志符結(jié)束;在這兩者之間則是相關(guān)的DF 文件的文件標(biāo)志符。如果當(dāng)前的DF 文件的文件標(biāo)志符未知,則“3FFF”可以作為文件路徑的開(kāi)始。如果文件路徑以MF 文件的文件標(biāo)志符開(kāi)始,則稱該文件路徑為絕對(duì)路徑;如果以當(dāng)前DF 文件的文件標(biāo)志符開(kāi)始,則稱為相對(duì)路徑。
(3) 通過(guò)EF 短標(biāo)志符來(lái)訪問(wèn)
對(duì)于任意一個(gè)EF 文件,可以通過(guò)一個(gè)5bit 編碼的短標(biāo)志符來(lái)訪問(wèn),其范圍為1~30 。0 具有特殊含義,表示當(dāng)前正在訪問(wèn)的EF 文件。短標(biāo)志符不能用于文件路徑,也不能用作文件標(biāo)志符。
(4) 通過(guò)DF 文件名來(lái)訪問(wèn)
每個(gè)DF 文件可以有一個(gè)1~16 字節(jié)長(zhǎng)的文件名。為了能夠明確無(wú)誤的通過(guò)DF 文件名來(lái)訪問(wèn)DF 文件,智能卡中的每個(gè)DF 文件的文件名必須不同。
2. 3 EF 文件的內(nèi)部結(jié)構(gòu)
EF 文件的結(jié)構(gòu)可分為透明結(jié)構(gòu)和記錄結(jié)構(gòu)兩種。
(1) 透明結(jié)構(gòu):透明結(jié)構(gòu)EF 文件在通過(guò)接口被訪問(wèn)時(shí)只被視為數(shù)據(jù)單元(Data Unit) 序列,而好像沒(méi)有結(jié)構(gòu)一樣,所以我們稱之為透明結(jié)構(gòu)。所謂數(shù)據(jù)單元,就是可被訪問(wèn)的最小的位集(Smallest set of bits) ,如1 個(gè)字節(jié),2 個(gè)字節(jié)等等。透明結(jié)構(gòu)本質(zhì)上也就是二進(jìn)制數(shù)據(jù)結(jié)構(gòu)。
(2) 記錄結(jié)構(gòu):記錄結(jié)構(gòu)EF 文件在通過(guò)接口被訪問(wèn)時(shí)被視為具有結(jié)構(gòu)的記錄(Record) 序列。所謂記錄,就是可被作為一個(gè)整體加以處理的具有結(jié)構(gòu)的字節(jié)串,類似于PASCAL 語(yǔ)言的記錄的概念。
2. 4 EF 文件中的數(shù)據(jù)訪問(wèn)機(jī)制
EF 文件中的數(shù)據(jù)可以通過(guò)記錄、數(shù)據(jù)單元或者數(shù)據(jù)對(duì)象來(lái)訪問(wèn)。對(duì)記錄結(jié)構(gòu)的EF 文件而言,數(shù)據(jù)被存儲(chǔ)在連續(xù)的記錄序列中;對(duì)透明結(jié)構(gòu)的EF 文件而言,數(shù)據(jù)被存儲(chǔ)在連續(xù)的數(shù)據(jù)單元序列中。如果試圖訪問(wèn)不在EF 文件中的記錄、數(shù)據(jù)單元或者數(shù)據(jù)對(duì)象,將導(dǎo)致錯(cuò)誤。數(shù)據(jù)訪問(wèn)方法、記錄編號(hào)方法以及數(shù)據(jù)單元的大小等作為文件系統(tǒng)的特征,在智能卡的復(fù)位應(yīng)答過(guò)程ATR (Answer to reset) 中由智能卡給出,還可以由智能卡中的ATR 文件給出,以及由其他文件控制信息給出。如果智能卡在上面提及的三種方式中不止一處給出了數(shù)據(jù)訪問(wèn)方法、記錄編號(hào)方法以及數(shù)據(jù)單元的大小等信息,那么對(duì)于任意一個(gè)EF文件而言,由于不同出處給出的信息可能不一樣,因此很明顯只能有一個(gè)信息是有效的。而有效的信息就是從MF 文件到該EF 文件的文件路徑上最靠近該EF 文件的位置給出的信息。
(1) 記錄結(jié)構(gòu)EF 文件中記錄的訪問(wèn)方法
對(duì)記錄結(jié)構(gòu)的EF 文件,其中的記錄可以通過(guò)記錄編號(hào)來(lái)訪問(wèn)。記錄編號(hào)是無(wú)符號(hào)8 位整數(shù),其取值范圍為01~FE。值00 保留作特殊用途;值FF 保留來(lái)將來(lái)使用。在每個(gè)記錄結(jié)構(gòu)的EF 文件中,每個(gè)記錄的記錄編號(hào)都是唯一并且是有序的。
對(duì)于線性記錄結(jié)構(gòu)的EF 文件:當(dāng)創(chuàng)建添加記錄時(shí),記錄編號(hào)按照以一定順序予以指定。也就是說(shuō)記錄的記錄編號(hào)按照記錄的創(chuàng)建順序指定。因此,第一個(gè)記錄(記錄編號(hào)為1) 就是第一個(gè)創(chuàng)建的記錄;第二個(gè)記錄(記錄編號(hào)為2) 就是第二個(gè)創(chuàng)建的記錄以次類推。
對(duì)于循環(huán)記錄結(jié)構(gòu)的EF 文件:第一個(gè)記錄(記錄編號(hào)為1) 總是最后創(chuàng)建的記錄;第二個(gè)記錄(記錄編號(hào)為2) 就是倒數(shù)第二個(gè)創(chuàng)建的記錄以次類推。很顯然,對(duì)于循環(huán)記錄結(jié)構(gòu)的EF 文件的記錄編號(hào)順序剛好和線性記錄結(jié)構(gòu)的EF 文件相反。
記錄編號(hào)值00 總是表示當(dāng)前記錄,就是記錄指針(record pointer) 當(dāng)前指向的記錄。
(2) 透明結(jié)構(gòu)EF 文件中數(shù)據(jù)單元的訪問(wèn)方法
對(duì)每一個(gè)透明結(jié)構(gòu)的EF 文件而言,其內(nèi)部的數(shù)據(jù)單元通過(guò)偏移(Offset) 來(lái)訪問(wèn)。偏移是一個(gè)無(wú)符號(hào)整數(shù),長(zhǎng)度為8 位或者15 位(由不同的訪問(wèn)命令來(lái)決定) 。當(dāng)偏移為0 時(shí),則訪問(wèn)該透明結(jié)構(gòu)EF 文件的第一個(gè)數(shù)據(jù)單元;偏移為1 時(shí),訪問(wèn)第二個(gè)數(shù)據(jù)單元;偏移為2 時(shí),訪問(wèn)第三個(gè)數(shù)據(jù)單元以次類推。在缺省情況下,也就是智能卡沒(méi)有給出數(shù)據(jù)單元大小的信息時(shí),默認(rèn)采用每個(gè)數(shù)據(jù)單元大小為1 字節(jié)。
(3) 數(shù)據(jù)對(duì)象的訪問(wèn)方法
所謂數(shù)據(jù)對(duì)象,就是采用抽象語(yǔ)法表示ASN. 1 (Abstract syntax notation) 的編碼規(guī)則,如BER(Basic encoding rule) 等對(duì)數(shù)據(jù)按照一定的格式編碼形成的一個(gè)數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)結(jié)構(gòu)通常包含三部分信息:標(biāo)簽(tag) 、長(zhǎng)度(length) 和數(shù)據(jù)(data) 。標(biāo)簽給出了數(shù)據(jù)的數(shù)據(jù)類型,如整數(shù)、ASCII 字符串、UNICODE 字符串、structure 結(jié)構(gòu)類型等等;長(zhǎng)度則給出了數(shù)據(jù)的長(zhǎng)度。很明顯,這種數(shù)據(jù)對(duì)象本質(zhì)上是自描述的。因此,當(dāng)訪問(wèn)數(shù)據(jù)對(duì)象時(shí),可以通過(guò)標(biāo)簽等對(duì)數(shù)據(jù)對(duì)象進(jìn)行訪問(wèn)。
(文/重慶大學(xué)計(jì)算機(jī)學(xué)院建筑智能化研究室,王波,伍洲凱)